| 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,
|
| + base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
|
| + }
|
| +
|
| + void UnloadGaiaAuthExtension() {
|
| + const char kGaiaAuthId[] = "mfffpogegjflfpflabcdkioaeobkgjik";
|
| + GetComponentLoader()->Remove(kGaiaAuthId);
|
| + }
|
| +
|
| + Profile* profile_;
|
| +
|
| + 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();
|
| + 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();
|
|
|