// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_DICE_REAUTH_PROVIDER_H_ #define CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_DICE_REAUTH_PROVIDER_H_ #include "base/scoped_observation.h" #include "base/timer/timer.h" #include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h" #include "chrome/browser/ui/webui/signin/signin_ui_error.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "content/public/browser/web_contents_observer.h" struct CoreAccountInfo; class ForceSigninVerifier; class Profile; class ProfilePickerWebContentsHost; namespace content { class WebContents; } // Enum used to recorded histogram results for the reauth step. // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. enum class ProfilePickerReauthResult { … }; // This object handles the reauth of the main account of a Profile. // The flow starts with the call to `SwitchToReauth()` and goes as follow: // - Extract the primary account for which the reauth will be attempted. // - Wait for the refresh tokens to be loaded. // - Call to the ForceSigninVerifier to check the main account token status. // - If the token is valid, there is no need to reauth, and we finish with // success. // - If it is not, we show the reauth gaia page and await for user to reauth. // - Await a sign in event and a refersh token for the account that is being // reauthed through `OnRefreshTokenUpdatedForAccount()`. // - We finish the flow by replying to the callback based on the success of the // last step (checking if the account that got reauthed matches with the // original one). class ProfilePickerDiceReauthProvider : public signin::IdentityManager::Observer, public content::WebContentsObserver { … }; #endif // CHROME_BROWSER_UI_VIEWS_PROFILES_PROFILE_PICKER_DICE_REAUTH_PROVIDER_H_