From 859fcf40bf0e8b71a746f4227103a29323280179 Mon Sep 17 00:00:00 2001 From: dpolukhin Date: Wed, 12 Nov 2014 06:51:45 -0800 Subject: [PATCH] Move gaia component extension initialization closer to where it is really needed SigninScreenHandler is used for showing OOBE and account picker screen so it is too early to init the extension. GaiaScreenHandler::LoadGaia is called when GAIA screen is about to show so it is right time to load the extension. On login screen after this change the extension loads after account picker is ready. BUG=348548 TEST=manual + existing tests Review URL: https://codereview.chromium.org/723523002 Cr-Commit-Position: refs/heads/master@{#303833} --- chrome/browser/chromeos/login/ui/webui_login_view.cc | 1 - chrome/browser/chromeos/login/ui/webui_login_view.h | 3 --- chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc | 5 +++++ chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h | 4 ++++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/chrome/browser/chromeos/login/ui/webui_login_view.cc b/chrome/browser/chromeos/login/ui/webui_login_view.cc index a6923d75164e..865a110c576c 100644 --- a/chrome/browser/chromeos/login/ui/webui_login_view.cc +++ b/chrome/browser/chromeos/login/ui/webui_login_view.cc @@ -180,7 +180,6 @@ WebUILoginView::~WebUILoginView() { void WebUILoginView::Init() { Profile* signin_profile = ProfileHelper::GetSigninProfile(); - auth_extension_.reset(new ScopedGaiaAuthExtension(signin_profile)); webui_login_ = new views::WebView(signin_profile); webui_login_->set_allow_accelerators(true); AddChildView(webui_login_); diff --git a/chrome/browser/chromeos/login/ui/webui_login_view.h b/chrome/browser/chromeos/login/ui/webui_login_view.h index 4673fab4be91..03ebdc354b50 100644 --- a/chrome/browser/chromeos/login/ui/webui_login_view.h +++ b/chrome/browser/chromeos/login/ui/webui_login_view.h @@ -10,7 +10,6 @@ #include "base/memory/scoped_ptr.h" #include "base/observer_list.h" -#include "chrome/browser/extensions/signin/scoped_gaia_auth_extension.h" #include "chrome/browser/ui/chrome_web_modal_dialog_manager_delegate.h" #include "components/web_modal/popup_manager.h" #include "components/web_modal/web_contents_modal_dialog_host.h" @@ -193,8 +192,6 @@ class WebUILoginView : public views::View, // True to forward keyboard event. bool forward_keyboard_event_; - scoped_ptr auth_extension_; - ObserverList observer_list_; ObserverList frame_observer_list_; diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index 2b3460675dad..20384b139dab 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc @@ -158,6 +158,11 @@ GaiaScreenHandler::~GaiaScreenHandler() { } void GaiaScreenHandler::LoadGaia(const GaiaContext& context) { + if (!auth_extension_) { + Profile* signin_profile = ProfileHelper::GetSigninProfile(); + auth_extension_.reset(new ScopedGaiaAuthExtension(signin_profile)); + } + base::DictionaryValue params; const bool is_enrolling_consumer_management = context.is_enrolling_consumer_management; diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h index a7f08836c45b..0c5b838c50f5 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h @@ -11,6 +11,7 @@ #include "base/command_line.h" #include "base/memory/ref_counted.h" #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" +#include "chrome/browser/extensions/signin/scoped_gaia_auth_extension.h" #include "chrome/browser/ui/webui/chromeos/login/network_state_informer.h" #include "net/base/net_errors.h" @@ -249,6 +250,9 @@ class GaiaScreenHandler : public BaseScreenHandler { // signin_screen_handler directly. SigninScreenHandler* signin_screen_handler_; + // GAIA extension loader. + scoped_ptr auth_extension_; + base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(GaiaScreenHandler); -- 2.11.4.GIT