Index: chrome/browser/ui/views/constrained_window_views_browsertest.cc |
diff --git a/chrome/browser/ui/views/constrained_window_views_browsertest.cc b/chrome/browser/ui/views/constrained_window_views_browsertest.cc |
index b842745b5914734ad94eba229f87be018a43124c..efdf105265948db499e9773d5777336393a3268d 100644 |
--- a/chrome/browser/ui/views/constrained_window_views_browsertest.cc |
+++ b/chrome/browser/ui/views/constrained_window_views_browsertest.cc |
@@ -168,6 +168,53 @@ IN_PROC_BROWSER_TEST_F(ConstrainedWindowViewTest, TabMoveTest) { |
EXPECT_EQ(NULL, dialog->GetWidget()); |
} |
+// Tests that the web contents navigates when backspace is pressed. |
+IN_PROC_BROWSER_TEST_F(ConstrainedWindowViewTest, NavigationOnBackspace) { |
+ content::WebContents* web_contents = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ content::WaitForLoadStop(web_contents); |
+ const GURL original_url = web_contents->GetURL(); |
+ EXPECT_NE(GURL(chrome::kChromeUIVersionURL), original_url); |
+ ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); |
+ content::WaitForLoadStop(web_contents); |
+ EXPECT_EQ(GURL(chrome::kChromeUIVersionURL), web_contents->GetURL()); |
+ |
+ std::unique_ptr<TestDialog> dialog = ShowModalDialog(web_contents); |
+ |
+ views::Widget* widget = dialog->GetWidget(); |
+ |
+ EXPECT_TRUE(widget->IsVisible()); |
+ EXPECT_EQ(dialog->GetContentsView(), |
+ widget->GetFocusManager()->GetFocusedView()); |
+ |
+ // Pressing backspace should not navigate back and close the dialog |
+ // with the Finch flag disabled. |
+ EXPECT_TRUE(chrome::CanGoBack(browser())); |
+ EXPECT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_BACK, |
+ false, false, false, false)); |
+ content::RunAllPendingInMessageLoop(); |
+ content::WaitForLoadStop(web_contents); |
+ |
+ EXPECT_EQ(widget, dialog->GetWidget()); |
+ EXPECT_EQ(GURL(chrome::kChromeUIVersionURL), web_contents->GetURL()); |
+ |
+ // Pressing backspace should navigate back and close the dialog with the |
+ // Finch flag enabled. |
+ base::FeatureList::ClearInstanceForTesting(); |
+ std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
+ feature_list->InitializeFromCommandLine("BackspaceGoesBack", std::string()); |
+ base::FeatureList::SetInstance(std::move(feature_list)); |
+ |
+ EXPECT_TRUE(chrome::CanGoBack(browser())); |
+ EXPECT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_BACK, |
+ false, false, false, false)); |
+ content::RunAllPendingInMessageLoop(); |
+ content::WaitForLoadStop(web_contents); |
+ |
+ EXPECT_EQ(nullptr, dialog->GetWidget()); |
+ EXPECT_EQ(original_url, web_contents->GetURL()); |
+} |
+ |
// Tests that the dialog closes when the escape key is pressed. |
IN_PROC_BROWSER_TEST_F(ConstrainedWindowViewTest, ClosesOnEscape) { |
#if defined(OS_WIN) |