| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/webui_login_view.h" | 5 #include "chrome/browser/chromeos/login/ui/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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 | 166 |
| 167 for (AccelMap::iterator i(accel_map_.begin()); i != accel_map_.end(); ++i) | 167 for (AccelMap::iterator i(accel_map_.begin()); i != accel_map_.end(); ++i) |
| 168 AddAccelerator(i->first); | 168 AddAccelerator(i->first); |
| 169 } | 169 } |
| 170 | 170 |
| 171 WebUILoginView::~WebUILoginView() { | 171 WebUILoginView::~WebUILoginView() { |
| 172 FOR_EACH_OBSERVER(web_modal::ModalDialogHostObserver, | 172 FOR_EACH_OBSERVER(web_modal::ModalDialogHostObserver, |
| 173 observer_list_, | 173 observer_list_, |
| 174 OnHostDestroying()); | 174 OnHostDestroying()); |
| 175 | 175 |
| 176 #if !defined(USE_ATHENA) |
| 176 if (ash::Shell::GetInstance()->HasPrimaryStatusArea()) { | 177 if (ash::Shell::GetInstance()->HasPrimaryStatusArea()) { |
| 177 ash::Shell::GetInstance()->GetPrimarySystemTray()-> | 178 ash::Shell::GetInstance()->GetPrimarySystemTray()-> |
| 178 SetNextFocusableView(NULL); | 179 SetNextFocusableView(NULL); |
| 179 } | 180 } |
| 181 #endif |
| 180 } | 182 } |
| 181 | 183 |
| 182 void WebUILoginView::Init() { | 184 void WebUILoginView::Init() { |
| 183 Profile* signin_profile = ProfileHelper::GetSigninProfile(); | 185 Profile* signin_profile = ProfileHelper::GetSigninProfile(); |
| 184 auth_extension_.reset(new ScopedGaiaAuthExtension(signin_profile)); | 186 auth_extension_.reset(new ScopedGaiaAuthExtension(signin_profile)); |
| 185 webui_login_ = new views::WebView(signin_profile); | 187 webui_login_ = new views::WebView(signin_profile); |
| 186 webui_login_->set_allow_accelerators(true); | 188 webui_login_->set_allow_accelerators(true); |
| 187 AddChildView(webui_login_); | 189 AddChildView(webui_login_); |
| 188 | 190 |
| 189 WebContents* web_contents = webui_login_->GetWebContents(); | 191 WebContents* web_contents = webui_login_->GetWebContents(); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 *network, NULL, GetNativeWindow()); | 308 *network, NULL, GetNativeWindow()); |
| 307 dialog->Show(); | 309 dialog->Show(); |
| 308 } | 310 } |
| 309 | 311 |
| 310 void WebUILoginView::OnPostponedShow() { | 312 void WebUILoginView::OnPostponedShow() { |
| 311 set_is_hidden(false); | 313 set_is_hidden(false); |
| 312 OnLoginPromptVisible(); | 314 OnLoginPromptVisible(); |
| 313 } | 315 } |
| 314 | 316 |
| 315 void WebUILoginView::SetStatusAreaVisible(bool visible) { | 317 void WebUILoginView::SetStatusAreaVisible(bool visible) { |
| 318 #if !defined(USE_ATHENA) |
| 316 if (ash::Shell::GetInstance()->HasPrimaryStatusArea()) { | 319 if (ash::Shell::GetInstance()->HasPrimaryStatusArea()) { |
| 317 ash::SystemTray* tray = ash::Shell::GetInstance()->GetPrimarySystemTray(); | 320 ash::SystemTray* tray = ash::Shell::GetInstance()->GetPrimarySystemTray(); |
| 318 if (visible) { | 321 if (visible) { |
| 319 // Tray may have been initialized being hidden. | 322 // Tray may have been initialized being hidden. |
| 320 tray->SetVisible(visible); | 323 tray->SetVisible(visible); |
| 321 tray->GetWidget()->Show(); | 324 tray->GetWidget()->Show(); |
| 322 } else { | 325 } else { |
| 323 tray->GetWidget()->Hide(); | 326 tray->GetWidget()->Hide(); |
| 324 } | 327 } |
| 325 } | 328 } |
| 329 #endif |
| 326 } | 330 } |
| 327 | 331 |
| 328 void WebUILoginView::SetUIEnabled(bool enabled) { | 332 void WebUILoginView::SetUIEnabled(bool enabled) { |
| 329 forward_keyboard_event_ = enabled; | 333 forward_keyboard_event_ = enabled; |
| 334 #if !defined(USE_ATHENA) |
| 330 ash::Shell::GetInstance()->GetPrimarySystemTray()->SetEnabled(enabled); | 335 ash::Shell::GetInstance()->GetPrimarySystemTray()->SetEnabled(enabled); |
| 336 #endif |
| 331 } | 337 } |
| 332 | 338 |
| 333 void WebUILoginView::AddFrameObserver(FrameObserver* frame_observer) { | 339 void WebUILoginView::AddFrameObserver(FrameObserver* frame_observer) { |
| 334 DCHECK(frame_observer); | 340 DCHECK(frame_observer); |
| 335 DCHECK(!frame_observer_list_.HasObserver(frame_observer)); | 341 DCHECK(!frame_observer_list_.HasObserver(frame_observer)); |
| 336 frame_observer_list_.AddObserver(frame_observer); | 342 frame_observer_list_.AddObserver(frame_observer); |
| 337 } | 343 } |
| 338 | 344 |
| 339 void WebUILoginView::RemoveFrameObserver(FrameObserver* frame_observer) { | 345 void WebUILoginView::RemoveFrameObserver(FrameObserver* frame_observer) { |
| 340 DCHECK(frame_observer); | 346 DCHECK(frame_observer); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 bool WebUILoginView::IsPopupOrPanel(const WebContents* source) const { | 425 bool WebUILoginView::IsPopupOrPanel(const WebContents* source) const { |
| 420 return true; | 426 return true; |
| 421 } | 427 } |
| 422 | 428 |
| 423 bool WebUILoginView::TakeFocus(content::WebContents* source, bool reverse) { | 429 bool WebUILoginView::TakeFocus(content::WebContents* source, bool reverse) { |
| 424 // In case of blocked UI (ex.: sign in is in progress) | 430 // In case of blocked UI (ex.: sign in is in progress) |
| 425 // we should not process focus change events. | 431 // we should not process focus change events. |
| 426 if (!forward_keyboard_event_) | 432 if (!forward_keyboard_event_) |
| 427 return false; | 433 return false; |
| 428 | 434 |
| 435 #if !defined(USE_ATHENA) |
| 429 ash::SystemTray* tray = ash::Shell::GetInstance()->GetPrimarySystemTray(); | 436 ash::SystemTray* tray = ash::Shell::GetInstance()->GetPrimarySystemTray(); |
| 430 if (tray && tray->GetWidget()->IsVisible()) { | 437 if (tray && tray->GetWidget()->IsVisible()) { |
| 431 tray->SetNextFocusableView(this); | 438 tray->SetNextFocusableView(this); |
| 432 ash::Shell::GetInstance()->RotateFocus(reverse ? ash::Shell::BACKWARD : | 439 ash::Shell::GetInstance()->RotateFocus(reverse ? ash::Shell::BACKWARD : |
| 433 ash::Shell::FORWARD); | 440 ash::Shell::FORWARD); |
| 434 } | 441 } |
| 442 #endif |
| 435 | 443 |
| 436 return true; | 444 return true; |
| 437 } | 445 } |
| 438 | 446 |
| 439 void WebUILoginView::RequestMediaAccessPermission( | 447 void WebUILoginView::RequestMediaAccessPermission( |
| 440 WebContents* web_contents, | 448 WebContents* web_contents, |
| 441 const content::MediaStreamRequest& request, | 449 const content::MediaStreamRequest& request, |
| 442 const content::MediaResponseCallback& callback) { | 450 const content::MediaResponseCallback& callback) { |
| 443 if (MediaStreamInfoBarDelegate::Create(web_contents, request, callback)) | 451 if (MediaStreamInfoBarDelegate::Create(web_contents, request, callback)) |
| 444 NOTREACHED() << "Media stream not allowed for WebUI"; | 452 NOTREACHED() << "Media stream not allowed for WebUI"; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 webui_visible_ = true; | 493 webui_visible_ = true; |
| 486 } | 494 } |
| 487 | 495 |
| 488 void WebUILoginView::ReturnFocus(bool reverse) { | 496 void WebUILoginView::ReturnFocus(bool reverse) { |
| 489 // Return the focus to the web contents. | 497 // Return the focus to the web contents. |
| 490 webui_login_->web_contents()->FocusThroughTabTraversal(reverse); | 498 webui_login_->web_contents()->FocusThroughTabTraversal(reverse); |
| 491 GetWidget()->Activate(); | 499 GetWidget()->Activate(); |
| 492 } | 500 } |
| 493 | 501 |
| 494 } // namespace chromeos | 502 } // namespace chromeos |
| OLD | NEW |