#include "chrome/browser/ui/views/profiles/profile_picker_dice_sign_in_provider.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/delete_profile_helper.h"
#include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h"
#include "chrome/browser/profiles/nuke_profile_directory_utils.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_attributes_storage.h"
#include "chrome/browser/profiles/profile_avatar_icon_util.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/safe_browsing/chrome_password_reuse_detection_manager_client.h"
#include "chrome/browser/signin/dice_tab_helper.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/signin/signin_promo.h"
#include "chrome/browser/signin/signin_util.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/browser/trusted_vault/trusted_vault_encryption_keys_tab_helper.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/browser_navigator_params.h"
#include "chrome/browser/ui/views/profiles/profile_picker_view.h"
#include "chrome/browser/ui/views/profiles/profile_picker_web_contents_host.h"
#include "chrome/common/url_constants.h"
#include "chrome/common/webui_url_constants.h"
#include "components/signin/public/base/consent_level.h"
#include "components/signin/public/base/signin_metrics.h"
#include "components/signin/public/base/signin_switches.h"
#include "components/signin/public/identity_manager/account_info.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
#include "content/public/browser/context_menu_params.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/gaia_urls.h"
#include "net/base/url_util.h"
#include "third_party/blink/public/mojom/window_features/window_features.mojom.h"
#include "ui/views/controls/webview/web_contents_set_background_color.h"
namespace {
bool IsTwoFactorIntersitial(const GURL& url) { … }
bool IsExternalURL(const GURL& url) { … }
}
ProfilePickerDiceSignInProvider::ProfilePickerDiceSignInProvider(
ProfilePickerWebContentsHost* host,
signin_metrics::AccessPoint signin_access_point,
base::FilePath profile_path)
: … { … }
ProfilePickerDiceSignInProvider::~ProfilePickerDiceSignInProvider() { … }
void ProfilePickerDiceSignInProvider::SwitchToSignIn(
base::OnceCallback<void(bool)> switch_finished_callback,
SignedInCallback signin_finished_callback) { … }
void ProfilePickerDiceSignInProvider::ReloadSignInPage() { … }
void ProfilePickerDiceSignInProvider::NavigateBack() { … }
bool ProfilePickerDiceSignInProvider::HandleContextMenu(
content::RenderFrameHost& render_frame_host,
const content::ContextMenuParams& params) { … }
content::WebContents* ProfilePickerDiceSignInProvider::AddNewContents(
content::WebContents* source,
std::unique_ptr<content::WebContents> new_contents,
const GURL& target_url,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& window_features,
bool user_gesture,
bool* was_blocked) { … }
bool ProfilePickerDiceSignInProvider::HandleKeyboardEvent(
content::WebContents* source,
const input::NativeWebKeyboardEvent& event) { … }
void ProfilePickerDiceSignInProvider::NavigationStateChanged(
content::WebContents* source,
content::InvalidateTypes changed_flags) { … }
web_modal::WebContentsModalDialogHost*
ProfilePickerDiceSignInProvider::GetWebContentsModalDialogHost() { … }
void ProfilePickerDiceSignInProvider::OnProfileInitialized(
base::OnceCallback<void(bool)> switch_finished_callback,
Profile* new_profile) { … }
bool ProfilePickerDiceSignInProvider::IsInitialized() const { … }
void ProfilePickerDiceSignInProvider::FinishFlow(
const CoreAccountInfo& account_info) { … }
void ProfilePickerDiceSignInProvider::FinishFlowInPicker(
Profile* profile,
signin_metrics::AccessPoint ,
signin_metrics::PromoAction ,
content::WebContents* ,
const CoreAccountInfo& account_info) { … }
GURL ProfilePickerDiceSignInProvider::BuildSigninURL() const { … }
void ProfilePickerDiceSignInProvider::InitializeDiceTabHelper(
DiceTabHelper& helper,
DiceTabHelperMode mode) { … }