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(); |