Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: chrome/browser/chromeos/login/webui_login_view.cc

Issue 13872010: cros: Add a header for gaia auth requests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, comments in #1 Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/login/webui_login_view.h" 5 #include "chrome/browser/chromeos/login/webui_login_view.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/system/tray/system_tray.h" 8 #include "ash/system/tray/system_tray.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/command_line.h"
11 #include "base/debug/trace_event.h" 12 #include "base/debug/trace_event.h"
12 #include "base/i18n/rtl.h" 13 #include "base/i18n/rtl.h"
13 #include "base/utf_string_conversions.h" 14 #include "base/utf_string_conversions.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "chrome/browser/chromeos/accessibility/accessibility_util.h" 16 #include "chrome/browser/chromeos/accessibility/accessibility_util.h"
16 #include "chrome/browser/chromeos/cros/cros_library.h" 17 #include "chrome/browser/chromeos/cros/cros_library.h"
17 #include "chrome/browser/chromeos/login/base_login_display_host.h" 18 #include "chrome/browser/chromeos/login/base_login_display_host.h"
18 #include "chrome/browser/chromeos/login/proxy_settings_dialog.h" 19 #include "chrome/browser/chromeos/login/proxy_settings_dialog.h"
19 #include "chrome/browser/chromeos/login/webui_login_display.h" 20 #include "chrome/browser/chromeos/login/webui_login_display.h"
21 #include "chrome/browser/extensions/component_loader.h"
22 #include "chrome/browser/extensions/extension_service.h"
23 #include "chrome/browser/extensions/extension_system.h"
20 #include "chrome/browser/password_manager/password_manager.h" 24 #include "chrome/browser/password_manager/password_manager.h"
21 #include "chrome/browser/password_manager/password_manager_delegate_impl.h" 25 #include "chrome/browser/password_manager/password_manager_delegate_impl.h"
22 #include "chrome/browser/profiles/profile_manager.h" 26 #include "chrome/browser/profiles/profile_manager.h"
23 #include "chrome/browser/renderer_preferences_util.h" 27 #include "chrome/browser/renderer_preferences_util.h"
24 #include "chrome/browser/ui/media_stream_infobar_delegate.h" 28 #include "chrome/browser/ui/media_stream_infobar_delegate.h"
25 #include "chrome/browser/ui/web_contents_modal_dialog_manager.h" 29 #include "chrome/browser/ui/web_contents_modal_dialog_manager.h"
26 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 30 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
27 #include "chrome/common/chrome_notification_types.h" 31 #include "chrome/common/chrome_notification_types.h"
32 #include "chrome/common/chrome_switches.h"
28 #include "chrome/common/render_messages.h" 33 #include "chrome/common/render_messages.h"
29 #include "chromeos/dbus/dbus_thread_manager.h" 34 #include "chromeos/dbus/dbus_thread_manager.h"
30 #include "chromeos/dbus/session_manager_client.h" 35 #include "chromeos/dbus/session_manager_client.h"
31 #include "content/public/browser/notification_service.h" 36 #include "content/public/browser/notification_service.h"
32 #include "content/public/browser/render_view_host.h" 37 #include "content/public/browser/render_view_host.h"
33 #include "content/public/browser/render_view_host_observer.h" 38 #include "content/public/browser/render_view_host_observer.h"
34 #include "content/public/browser/render_widget_host_view.h" 39 #include "content/public/browser/render_widget_host_view.h"
35 #include "content/public/browser/web_contents.h" 40 #include "content/public/browser/web_contents.h"
36 #include "content/public/browser/web_contents_view.h" 41 #include "content/public/browser/web_contents_view.h"
37 #include "content/public/browser/web_ui.h" 42 #include "content/public/browser/web_ui.h"
43 #include "grit/browser_resources.h"
38 #include "ui/aura/env.h" 44 #include "ui/aura/env.h"
39 #include "ui/gfx/rect.h" 45 #include "ui/gfx/rect.h"
40 #include "ui/gfx/size.h" 46 #include "ui/gfx/size.h"
41 #include "ui/views/controls/webview/webview.h" 47 #include "ui/views/controls/webview/webview.h"
42 #include "ui/views/widget/widget.h" 48 #include "ui/views/widget/widget.h"
43 49
44 using content::NativeWebKeyboardEvent; 50 using content::NativeWebKeyboardEvent;
45 using content::RenderViewHost; 51 using content::RenderViewHost;
46 using content::WebContents; 52 using content::WebContents;
47 53
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 } 113 }
108 114
109 } // namespace 115 } // namespace
110 116
111 namespace chromeos { 117 namespace chromeos {
112 118
113 // static 119 // static
114 const char WebUILoginView::kViewClassName[] = 120 const char WebUILoginView::kViewClassName[] =
115 "browser/chromeos/login/WebUILoginView"; 121 "browser/chromeos/login/WebUILoginView";
116 122
123 // WebUILoginView::ScopedGaiaAuthExtension -------------------------------------
124 class WebUILoginView::ScopedGaiaAuthExtension {
125 public:
126 explicit ScopedGaiaAuthExtension(Profile* profile)
127 : profile_(profile) {
128 LoadGaiaAuthExtension();
129 }
130
131 ~ScopedGaiaAuthExtension() {
132 UnloadGaiaAuthExtension();
133 }
134
135 private:
136 extensions::ComponentLoader* GetComponentLoader() {
137 extensions::ExtensionSystem* extension_system =
138 extensions::ExtensionSystem::Get(profile_);
139 ExtensionService* extension_service = extension_system->extension_service();
140 return extension_service->component_loader();
141 }
142
143 void LoadGaiaAuthExtension() {
144 extensions::ComponentLoader* component_loader = GetComponentLoader();
145 const CommandLine* command_line = CommandLine::ForCurrentProcess();
146 if (command_line->HasSwitch(switches::kAuthExtensionPath)) {
147 base::FilePath auth_extension_path =
148 command_line->GetSwitchValuePath(switches::kAuthExtensionPath);
149 component_loader->Add(IDR_GAIA_TEST_AUTH_MANIFEST, auth_extension_path);
150 return;
151 }
152 component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
Nikita (slow) 2013/04/19 11:35:57 Is ComponentLoader just fine with postponed initia
153 base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
154 }
155
156 void UnloadGaiaAuthExtension() {
157 const char kGaiaAuthId[] = "mfffpogegjflfpflabcdkioaeobkgjik";
158 GetComponentLoader()->Remove(kGaiaAuthId);
159 }
160
161 Profile* profile_;
Nikita (slow) 2013/04/19 11:35:57 nit: // Not owned.
162
163 DISALLOW_COPY_AND_ASSIGN(ScopedGaiaAuthExtension);
164 };
165
117 // WebUILoginView public: ------------------------------------------------------ 166 // WebUILoginView public: ------------------------------------------------------
118 167
119 WebUILoginView::WebUILoginView() 168 WebUILoginView::WebUILoginView()
120 : webui_login_(NULL), 169 : webui_login_(NULL),
121 login_window_(NULL), 170 login_window_(NULL),
122 host_window_frozen_(false), 171 host_window_frozen_(false),
123 is_hidden_(false), 172 is_hidden_(false),
124 login_prompt_visible_handled_(false), 173 login_prompt_visible_handled_(false),
125 should_emit_login_prompt_visible_(true), 174 should_emit_login_prompt_visible_(true),
126 forward_keyboard_event_(true) { 175 forward_keyboard_event_(true) {
(...skipping 17 matching lines...) Expand all
144 } 193 }
145 194
146 WebUILoginView::~WebUILoginView() { 195 WebUILoginView::~WebUILoginView() {
147 if (ash::Shell::GetInstance()->HasPrimaryStatusArea()) { 196 if (ash::Shell::GetInstance()->HasPrimaryStatusArea()) {
148 ash::Shell::GetInstance()->GetPrimarySystemTray()-> 197 ash::Shell::GetInstance()->GetPrimarySystemTray()->
149 SetNextFocusableView(NULL); 198 SetNextFocusableView(NULL);
150 } 199 }
151 } 200 }
152 201
153 void WebUILoginView::Init(views::Widget* login_window) { 202 void WebUILoginView::Init(views::Widget* login_window) {
203 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
204 gaia_auth_.reset(new ScopedGaiaAuthExtension(profile));
205
154 login_window_ = login_window; 206 login_window_ = login_window;
155 webui_login_ = new views::WebView(ProfileManager::GetDefaultProfile()); 207 webui_login_ = new views::WebView(profile);
156 AddChildView(webui_login_); 208 AddChildView(webui_login_);
157 209
158 WebContents* web_contents = webui_login_->GetWebContents(); 210 WebContents* web_contents = webui_login_->GetWebContents();
159 211
160 // Create the password manager that is needed for the proxy. 212 // Create the password manager that is needed for the proxy.
161 PasswordManagerDelegateImpl::CreateForWebContents(web_contents); 213 PasswordManagerDelegateImpl::CreateForWebContents(web_contents);
162 PasswordManager::CreateForWebContentsAndDelegate( 214 PasswordManager::CreateForWebContentsAndDelegate(
163 web_contents, PasswordManagerDelegateImpl::FromWebContents(web_contents)); 215 web_contents, PasswordManagerDelegateImpl::FromWebContents(web_contents));
164 216
165 // LoginHandlerViews uses a constrained window for the password manager view. 217 // LoginHandlerViews uses a constrained window for the password manager view.
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 aura::Env::GetInstance()->set_render_white_bg(true); 430 aura::Env::GetInstance()->set_render_white_bg(true);
379 } 431 }
380 432
381 void WebUILoginView::ReturnFocus(bool reverse) { 433 void WebUILoginView::ReturnFocus(bool reverse) {
382 // Return the focus to the web contents. 434 // Return the focus to the web contents.
383 webui_login_->web_contents()->FocusThroughTabTraversal(reverse); 435 webui_login_->web_contents()->FocusThroughTabTraversal(reverse);
384 GetWidget()->Activate(); 436 GetWidget()->Activate();
385 } 437 }
386 438
387 } // namespace chromeos 439 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698