1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_SIGNIN_INTERNAL_IDENTITY_MANAGER_ACCOUNTS_COOKIE_MUTATOR_IMPL_H_ 6 #define COMPONENTS_SIGNIN_INTERNAL_IDENTITY_MANAGER_ACCOUNTS_COOKIE_MUTATOR_IMPL_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/callback_forward.h" 12 #include "base/macros.h" 13 #include "build/build_config.h" 14 #include "components/signin/internal/identity_manager/oauth_multilogin_helper.h" 15 #include "components/signin/public/identity_manager/accounts_cookie_mutator.h" 16 17 class AccountTrackerService; 18 class GaiaCookieManagerService; 19 class ProfileOAuth2TokenService; 20 class SigninClient; 21 22 namespace gaia { 23 class GaiaSource; 24 } 25 26 namespace signin { 27 28 // Concrete implementation of the AccountsCookieMutator interface. 29 class AccountsCookieMutatorImpl : public AccountsCookieMutator { 30 public: 31 explicit AccountsCookieMutatorImpl( 32 SigninClient* signin_client, 33 ProfileOAuth2TokenService* token_service, 34 GaiaCookieManagerService* gaia_cookie_manager_service, 35 AccountTrackerService* account_tracker_service); 36 ~AccountsCookieMutatorImpl() override; 37 38 void AddAccountToCookie( 39 const CoreAccountId& account_id, 40 gaia::GaiaSource source, 41 AddAccountToCookieCompletedCallback completion_callback) override; 42 43 void AddAccountToCookieWithToken( 44 const CoreAccountId& account_id, 45 const std::string& access_token, 46 gaia::GaiaSource source, 47 AddAccountToCookieCompletedCallback completion_callback) override; 48 49 void SetAccountsInCookie( 50 const MultiloginParameters& parameters, 51 gaia::GaiaSource source, 52 base::OnceCallback<void(SetAccountsInCookieResult)> 53 set_accounts_in_cookies_completed_callback) override; 54 55 std::unique_ptr<SetAccountsInCookieTask> SetAccountsInCookieForPartition( 56 PartitionDelegate* partition_delegate, 57 const MultiloginParameters& parameters, 58 base::OnceCallback<void(SetAccountsInCookieResult)> 59 set_accounts_in_cookies_completed_callback) override; 60 61 void TriggerCookieJarUpdate() override; 62 63 #if defined(OS_IOS) 64 void ForceTriggerOnCookieChange() override; 65 #endif 66 67 void LogOutAllAccounts( 68 gaia::GaiaSource source, 69 LogOutFromCookieCompletedCallback completion_callback) override; 70 71 private: 72 class MultiloginHelperWrapper : public SetAccountsInCookieTask { 73 public: 74 MultiloginHelperWrapper(std::unique_ptr<OAuthMultiloginHelper> helper); 75 ~MultiloginHelperWrapper() override; 76 77 private: 78 std::unique_ptr<OAuthMultiloginHelper> helper_; 79 }; 80 81 SigninClient* signin_client_; 82 ProfileOAuth2TokenService* token_service_; 83 GaiaCookieManagerService* gaia_cookie_manager_service_; 84 AccountTrackerService* account_tracker_service_; 85 86 DISALLOW_COPY_AND_ASSIGN(AccountsCookieMutatorImpl); 87 }; 88 89 } // namespace signin 90 91 #endif // COMPONENTS_SIGNIN_INTERNAL_IDENTITY_MANAGER_ACCOUNTS_COOKIE_MUTATOR_IMPL_H_ 92