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

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

Issue 11052015: Fix bug with login-prompt-visible not being sent in some rare cases. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: build Created 8 years, 2 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"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 110
111 namespace chromeos { 111 namespace chromeos {
112 112
113 // WebUILoginView public: ------------------------------------------------------ 113 // WebUILoginView public: ------------------------------------------------------
114 114
115 WebUILoginView::WebUILoginView() 115 WebUILoginView::WebUILoginView()
116 : webui_login_(NULL), 116 : webui_login_(NULL),
117 login_window_(NULL), 117 login_window_(NULL),
118 host_window_frozen_(false), 118 host_window_frozen_(false),
119 is_hidden_(false), 119 is_hidden_(false),
120 login_visible_notification_fired_(false),
121 login_prompt_visible_handled_(false), 120 login_prompt_visible_handled_(false),
122 should_emit_login_prompt_visible_(true) { 121 should_emit_login_prompt_visible_(true) {
123 registrar_.Add(this, 122 registrar_.Add(this,
124 chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE, 123 chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE,
125 content::NotificationService::AllSources()); 124 content::NotificationService::AllSources());
126 125
127 accel_map_[ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)] = 126 accel_map_[ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)] =
128 kAccelNameCancel; 127 kAccelNameCancel;
129 accel_map_[ui::Accelerator(ui::VKEY_E, 128 accel_map_[ui::Accelerator(ui::VKEY_E,
130 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] = 129 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 } 231 }
233 232
234 void WebUILoginView::OpenProxySettings() { 233 void WebUILoginView::OpenProxySettings() {
235 ProxySettingsDialog* dialog = 234 ProxySettingsDialog* dialog =
236 new ProxySettingsDialog(NULL, GetNativeWindow()); 235 new ProxySettingsDialog(NULL, GetNativeWindow());
237 dialog->Show(); 236 dialog->Show();
238 } 237 }
239 238
240 void WebUILoginView::OnPostponedShow() { 239 void WebUILoginView::OnPostponedShow() {
241 set_is_hidden(false); 240 set_is_hidden(false);
242 // If notification will happen later let it fire login-prompt-visible signal. 241 OnLoginPromptVisible();
243 if (login_visible_notification_fired_) {
244 LOG(INFO) << "Login WebUI >> postponed show, login_visible already fired";
245 OnLoginPromptVisible();
246 }
247 } 242 }
248 243
249 void WebUILoginView::SetStatusAreaVisible(bool visible) { 244 void WebUILoginView::SetStatusAreaVisible(bool visible) {
250 ash::SystemTray* tray = ash::Shell::GetInstance()->system_tray(); 245 ash::SystemTray* tray = ash::Shell::GetInstance()->system_tray();
251 if (tray) { 246 if (tray) {
252 if (visible) { 247 if (visible) {
253 // Tray may have been initialized being hidden. 248 // Tray may have been initialized being hidden.
254 tray->SetVisible(visible); 249 tray->SetVisible(visible);
255 tray->GetWidget()->Show(); 250 tray->GetWidget()->Show();
256 } else { 251 } else {
(...skipping 21 matching lines...) Expand all
278 // Return the focus to the web contents. 273 // Return the focus to the web contents.
279 webui_login_->web_contents()->FocusThroughTabTraversal(reverse); 274 webui_login_->web_contents()->FocusThroughTabTraversal(reverse);
280 GetWidget()->Activate(); 275 GetWidget()->Activate();
281 } 276 }
282 277
283 void WebUILoginView::Observe(int type, 278 void WebUILoginView::Observe(int type,
284 const content::NotificationSource& source, 279 const content::NotificationSource& source,
285 const content::NotificationDetails& details) { 280 const content::NotificationDetails& details) {
286 switch (type) { 281 switch (type) {
287 case chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE: { 282 case chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE: {
288 login_visible_notification_fired_ = true;
289 OnLoginPromptVisible(); 283 OnLoginPromptVisible();
290 registrar_.RemoveAll(); 284 registrar_.RemoveAll();
291 break; 285 break;
292 } 286 }
293 case content::NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED: { 287 case content::NOTIFICATION_WEB_CONTENTS_RENDER_VIEW_HOST_CREATED: {
294 RenderViewHost* render_view_host = 288 RenderViewHost* render_view_host =
295 content::Details<RenderViewHost>(details).ptr(); 289 content::Details<RenderViewHost>(details).ptr();
296 new SnifferObserver(render_view_host, GetWebUI()); 290 new SnifferObserver(render_view_host, GetWebUI());
297 break; 291 break;
298 } 292 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 aura::Env::GetInstance()->set_render_white_bg(true); 370 aura::Env::GetInstance()->set_render_white_bg(true);
377 } 371 }
378 372
379 void WebUILoginView::ReturnFocus(bool reverse) { 373 void WebUILoginView::ReturnFocus(bool reverse) {
380 // Return the focus to the web contents. 374 // Return the focus to the web contents.
381 webui_login_->web_contents()->FocusThroughTabTraversal(reverse); 375 webui_login_->web_contents()->FocusThroughTabTraversal(reverse);
382 GetWidget()->Activate(); 376 GetWidget()->Activate();
383 } 377 }
384 378
385 } // namespace chromeos 379 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/webui_login_view.h ('k') | chrome/browser/resources/chromeos/login/demo_user_login.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698