Commit 60e3c65c authored by Emily Stark's avatar Emily Stark Committed by Commit Bot

Add GetWidget overrides to ExternalProtocolDialog, fix keyboard lock

These overrides are necessary for keyboard focus to work properly when
the dialog is shown.

Bug: 1025343
Change-Id: I1a63c6a5e9233bd972cf1a07ad89670bf05a8a67
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1919947
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#716114}
parent ccfc3cd4
...@@ -118,6 +118,14 @@ ui::ModalType ExternalProtocolDialog::GetModalType() const { ...@@ -118,6 +118,14 @@ ui::ModalType ExternalProtocolDialog::GetModalType() const {
return ui::MODAL_TYPE_CHILD; return ui::MODAL_TYPE_CHILD;
} }
views::Widget* ExternalProtocolDialog::GetWidget() {
return message_box_view_->GetWidget();
}
const views::Widget* ExternalProtocolDialog::GetWidget() const {
return message_box_view_->GetWidget();
}
void ExternalProtocolDialog::ShowRememberSelectionCheckbox() { void ExternalProtocolDialog::ShowRememberSelectionCheckbox() {
message_box_view_->SetCheckBoxLabel( message_box_view_->SetCheckBoxLabel(
l10n_util::GetStringUTF16(IDS_EXTERNAL_PROTOCOL_CHECKBOX_TEXT)); l10n_util::GetStringUTF16(IDS_EXTERNAL_PROTOCOL_CHECKBOX_TEXT));
......
...@@ -42,6 +42,8 @@ class ExternalProtocolDialog : public views::DialogDelegateView, ...@@ -42,6 +42,8 @@ class ExternalProtocolDialog : public views::DialogDelegateView,
bool Accept() override; bool Accept() override;
views::View* GetContentsView() override; views::View* GetContentsView() override;
ui::ModalType GetModalType() const override; ui::ModalType GetModalType() const override;
views::Widget* GetWidget() override;
const views::Widget* GetWidget() const override;
private: private:
friend class test::ExternalProtocolDialogTestApi; friend class test::ExternalProtocolDialogTestApi;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/histogram_tester.h"
#include "chrome/browser/external_protocol/external_protocol_handler.h" #include "chrome/browser/external_protocol/external_protocol_handler.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/test/test_browser_dialog.h" #include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/views/external_protocol_dialog.h" #include "chrome/browser/ui/views/external_protocol_dialog.h"
...@@ -196,3 +197,14 @@ IN_PROC_BROWSER_TEST_F(ExternalProtocolDialogBrowserTest, ...@@ -196,3 +197,14 @@ IN_PROC_BROWSER_TEST_F(ExternalProtocolDialogBrowserTest,
IN_PROC_BROWSER_TEST_F(ExternalProtocolDialogBrowserTest, InvokeUi_default) { IN_PROC_BROWSER_TEST_F(ExternalProtocolDialogBrowserTest, InvokeUi_default) {
ShowAndVerifyUi(); ShowAndVerifyUi();
} }
// Tests that keyboard focus works when the dialog is shown. Regression test for
// https://crbug.com/1025343.
IN_PROC_BROWSER_TEST_F(ExternalProtocolDialogBrowserTest, TestFocus) {
ShowUi(std::string());
gfx::NativeWindow window = browser()->window()->GetNativeWindow();
views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
const views::FocusManager* focus_manager = widget->GetFocusManager();
const views::View* focused_view = focus_manager->GetFocusedView();
EXPECT_TRUE(focused_view);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment