Chromium Code Reviews| Index: chrome/browser/chromeos/login/ui/login_web_dialog.cc |
| diff --git a/chrome/browser/chromeos/login/ui/login_web_dialog.cc b/chrome/browser/chromeos/login/ui/login_web_dialog.cc |
| index fe8506be4ce413baef1317b43c4f2cd6b573a965..f13973c3f32f872483898cde0ddccbaa86aad177 100644 |
| --- a/chrome/browser/chromeos/login/ui/login_web_dialog.cc |
| +++ b/chrome/browser/chromeos/login/ui/login_web_dialog.cc |
| @@ -53,23 +53,27 @@ LoginWebDialog::LoginWebDialog(content::BrowserContext* browser_context, |
| parent_window_(parent_window), |
| delegate_(delegate), |
| title_(title), |
| - url_(url), |
| - is_open_(false) { |
| + url_(url) { |
| gfx::Rect screen_bounds(CalculateScreenBounds(gfx::Size())); |
| width_ = static_cast<int>(kDefaultWidthRatio * screen_bounds.width()); |
| height_ = static_cast<int>(kDefaultHeightRatio * screen_bounds.height()); |
| + |
| + // Registers 'Shift + Browser Back' accelerator to web dialog, which allows |
| + // Chrome OS CFM remote controller using hangup button to close dialog. |
| + accelerators_.push_back( |
| + ui::Accelerator(ui::VKEY_BROWSER_BACK, ui::EF_SHIFT_DOWN)); |
|
xiyuan
2017/05/11 04:48:27
Move this into GetAccelerators and get rid of |acc
Qiang(Joe) Xu
2017/05/12 21:50:45
Done.
|
| } |
| LoginWebDialog::~LoginWebDialog() {} |
| void LoginWebDialog::Show() { |
| if (parent_window_) { |
| - chrome::ShowWebDialog(parent_window_, browser_context_, this); |
| + dialog_window_ = |
| + chrome::ShowWebDialog(parent_window_, browser_context_, this); |
| } else { |
| - chrome::ShowWebDialogInContainer( |
| + dialog_window_ = chrome::ShowWebDialogInContainer( |
|
sky
2017/05/11 15:04:11
Initialize dialog_window_ to null.
Qiang(Joe) Xu
2017/05/12 21:50:45
Done.
|
| SystemTrayClient::GetDialogParentContainerId(), browser_context_, this); |
| } |
| - is_open_ = true; |
| } |
| void LoginWebDialog::SetDialogSize(int width, int height) { |
| @@ -128,7 +132,7 @@ void LoginWebDialog::OnDialogShown(content::WebUI* webui, |
| } |
| void LoginWebDialog::OnDialogClosed(const std::string& json_retval) { |
| - is_open_ = false; |
| + dialog_window_ = nullptr; |
| if (delegate_) |
| delegate_->OnDialogClosed(); |
| delete this; |
| @@ -170,4 +174,21 @@ bool LoginWebDialog::HandleShouldCreateWebContents() { |
| return false; |
| } |
| +std::vector<ui::Accelerator> LoginWebDialog::GetAccelerators() { |
| + return accelerators_; |
| +} |
| + |
| +bool LoginWebDialog::AcceleratorPressed(const ui::Accelerator& accelerator) { |
| + if (!dialog_window_) |
| + return false; |
| + |
| + if (accelerator.key_code() == ui::VKEY_BROWSER_BACK && |
|
sky
2017/05/11 15:04:11
Have a function that you use to get the accelerato
Qiang(Joe) Xu
2017/05/12 21:50:45
Done.
|
| + accelerator.IsShiftDown()) { |
| + views::Widget::GetWidgetForNativeWindow(dialog_window_)->Close(); |
| + return true; |
| + } |
| + |
| + return false; |
| +} |
| + |
| } // namespace chromeos |