Chromium Code Reviews| Index: chrome/browser/chromeos/login/webui_login_view.cc |
| diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc |
| index e6f7dedd74d71ec79a76352e5f29b93e2d86af74..756223124a9934b68cd5f805d86c828960666b35 100644 |
| --- a/chrome/browser/chromeos/login/webui_login_view.cc |
| +++ b/chrome/browser/chromeos/login/webui_login_view.cc |
| @@ -8,6 +8,7 @@ |
| #include "ash/system/tray/system_tray.h" |
| #include "base/bind.h" |
| #include "base/callback.h" |
| +#include "base/command_line.h" |
| #include "base/debug/trace_event.h" |
| #include "base/i18n/rtl.h" |
| #include "base/utf_string_conversions.h" |
| @@ -17,6 +18,9 @@ |
| #include "chrome/browser/chromeos/login/base_login_display_host.h" |
| #include "chrome/browser/chromeos/login/proxy_settings_dialog.h" |
| #include "chrome/browser/chromeos/login/webui_login_display.h" |
| +#include "chrome/browser/extensions/component_loader.h" |
| +#include "chrome/browser/extensions/extension_service.h" |
| +#include "chrome/browser/extensions/extension_system.h" |
| #include "chrome/browser/password_manager/password_manager.h" |
| #include "chrome/browser/password_manager/password_manager_delegate_impl.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| @@ -25,6 +29,7 @@ |
| #include "chrome/browser/ui/web_contents_modal_dialog_manager.h" |
| #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
| #include "chrome/common/chrome_notification_types.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/render_messages.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| #include "chromeos/dbus/session_manager_client.h" |
| @@ -35,6 +40,7 @@ |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_contents_view.h" |
| #include "content/public/browser/web_ui.h" |
| +#include "grit/browser_resources.h" |
| #include "ui/aura/env.h" |
| #include "ui/gfx/rect.h" |
| #include "ui/gfx/size.h" |
| @@ -114,6 +120,49 @@ namespace chromeos { |
| const char WebUILoginView::kViewClassName[] = |
| "browser/chromeos/login/WebUILoginView"; |
| +// WebUILoginView::ScopedGaiaAuthExtension ------------------------------------- |
| +class WebUILoginView::ScopedGaiaAuthExtension { |
| + public: |
| + explicit ScopedGaiaAuthExtension(Profile* profile) |
| + : profile_(profile) { |
| + LoadGaiaAuthExtension(); |
| + } |
| + |
| + ~ScopedGaiaAuthExtension() { |
| + UnloadGaiaAuthExtension(); |
| + } |
| + |
| + private: |
| + extensions::ComponentLoader* GetComponentLoader() { |
| + extensions::ExtensionSystem* extension_system = |
| + extensions::ExtensionSystem::Get(profile_); |
| + ExtensionService* extension_service = extension_system->extension_service(); |
| + return extension_service->component_loader(); |
| + } |
| + |
| + void LoadGaiaAuthExtension() { |
| + extensions::ComponentLoader* component_loader = GetComponentLoader(); |
| + const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(switches::kAuthExtensionPath)) { |
| + base::FilePath auth_extension_path = |
| + command_line->GetSwitchValuePath(switches::kAuthExtensionPath); |
| + component_loader->Add(IDR_GAIA_TEST_AUTH_MANIFEST, auth_extension_path); |
| + return; |
| + } |
| + component_loader->Add(IDR_GAIA_AUTH_MANIFEST, |
|
Nikita (slow)
2013/04/19 11:35:57
Is ComponentLoader just fine with postponed initia
|
| + base::FilePath(FILE_PATH_LITERAL("gaia_auth"))); |
| + } |
| + |
| + void UnloadGaiaAuthExtension() { |
| + const char kGaiaAuthId[] = "mfffpogegjflfpflabcdkioaeobkgjik"; |
| + GetComponentLoader()->Remove(kGaiaAuthId); |
| + } |
| + |
| + Profile* profile_; |
|
Nikita (slow)
2013/04/19 11:35:57
nit: // Not owned.
|
| + |
| + DISALLOW_COPY_AND_ASSIGN(ScopedGaiaAuthExtension); |
| +}; |
| + |
| // WebUILoginView public: ------------------------------------------------------ |
| WebUILoginView::WebUILoginView() |
| @@ -151,8 +200,11 @@ WebUILoginView::~WebUILoginView() { |
| } |
| void WebUILoginView::Init(views::Widget* login_window) { |
| + Profile* profile = ProfileManager::GetDefaultProfile(); |
|
Nikita (slow)
2013/04/15 15:49:27
Depending on which CL lands first, this has to be
Nikita (slow)
2013/04/19 11:35:57
CL landed, this should be ProfileHelper::GetSignin
|
| + gaia_auth_.reset(new ScopedGaiaAuthExtension(profile)); |
| + |
| login_window_ = login_window; |
| - webui_login_ = new views::WebView(ProfileManager::GetDefaultProfile()); |
| + webui_login_ = new views::WebView(profile); |
| AddChildView(webui_login_); |
| WebContents* web_contents = webui_login_->GetWebContents(); |