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

Unified Diff: chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc

Issue 2784533002: Turn on auto-dismissing dialogs for trunk builds. (Closed)
Patch Set: chromeos Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/mouseleave_browsertest.cc ('k') | chrome/browser/ui/browser_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
diff --git a/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc b/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
index c299b6c9bbc1187fe7844d3f30e60c9594128f47..ea1741267b184c1fca0ec1af3fac36b533dda2ce 100644
--- a/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
+++ b/chrome/browser/ui/blocked_content/popup_blocker_browsertest.cc
@@ -10,7 +10,6 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -523,7 +522,7 @@ IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, Regress427477) {
ASSERT_EQ(0, GetBlockedContentsCount());
}
-// Verify that app modal prompts can't be used to create pop unders.
+// Verify that JavaScript dialogs can't be used to create pop unders.
IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, ModalPopUnder) {
WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
GURL url(
@@ -543,20 +542,20 @@ IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, ModalPopUnder) {
// https://crbug.com/687732 for details.
ui_test_utils::BrowserActivationWaiter alert_waiter(browser());
#endif
+ JavaScriptDialogTabHelper* js_helper =
+ JavaScriptDialogTabHelper::FromWebContents(tab);
+ base::RunLoop dialog_wait;
+ js_helper->SetDialogShownCallbackForTesting(dialog_wait.QuitClosure());
tab->GetMainFrame()->ExecuteJavaScriptForTests(base::UTF8ToUTF16("alert()"));
- app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
+ dialog_wait.Run();
#if !defined(OS_MACOSX)
if (chrome::FindLastActive() != browser())
alert_waiter.WaitForActivation();
#endif
// Verify that after the dialog is closed, the popup is in front again.
- ASSERT_TRUE(dialog->IsJavaScriptModalDialog());
- app_modal::JavaScriptAppModalDialog* js_dialog =
- static_cast<app_modal::JavaScriptAppModalDialog*>(dialog);
-
ui_test_utils::BrowserActivationWaiter waiter(popup_browser);
- js_dialog->native_dialog()->AcceptAppModalDialog();
+ js_helper->HandleJavaScriptDialog(tab, true, nullptr);
waiter.WaitForActivation();
ASSERT_EQ(popup_browser, chrome::FindLastActive());
}
@@ -587,20 +586,20 @@ IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, ModalPopUnderWindowOpener) {
// https://crbug.com/687732 for details.
ui_test_utils::BrowserActivationWaiter alert_waiter(browser());
#endif
+ JavaScriptDialogTabHelper* js_helper =
+ JavaScriptDialogTabHelper::FromWebContents(tab);
+ base::RunLoop dialog_wait;
+ js_helper->SetDialogShownCallbackForTesting(dialog_wait.QuitClosure());
tab->GetMainFrame()->ExecuteJavaScriptForTests(base::UTF8ToUTF16("alert()"));
- app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
+ dialog_wait.Run();
#if !defined(OS_MACOSX)
if (chrome::FindLastActive() != browser())
alert_waiter.WaitForActivation();
#endif
// Verify that after the dialog is closed, the popup is in front again.
- ASSERT_TRUE(dialog->IsJavaScriptModalDialog());
- app_modal::JavaScriptAppModalDialog* js_dialog =
- static_cast<app_modal::JavaScriptAppModalDialog*>(dialog);
-
ui_test_utils::BrowserActivationWaiter waiter(popup_browser);
- js_dialog->native_dialog()->AcceptAppModalDialog();
+ js_helper->HandleJavaScriptDialog(tab, true, nullptr);
waiter.WaitForActivation();
ASSERT_EQ(popup_browser, chrome::FindLastActive());
}
@@ -625,20 +624,20 @@ IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, ModalPopUnderSubframe) {
// https://crbug.com/687732 for details.
ui_test_utils::BrowserActivationWaiter alert_waiter(browser());
#endif
+ JavaScriptDialogTabHelper* js_helper =
+ JavaScriptDialogTabHelper::FromWebContents(tab);
+ base::RunLoop dialog_wait;
+ js_helper->SetDialogShownCallbackForTesting(dialog_wait.QuitClosure());
tab->GetMainFrame()->ExecuteJavaScriptForTests(base::UTF8ToUTF16("alert()"));
- app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
+ dialog_wait.Run();
#if !defined(OS_MACOSX)
if (chrome::FindLastActive() != browser())
alert_waiter.WaitForActivation();
#endif
// Verify that after the dialog is closed, the popup is in front again.
- ASSERT_TRUE(dialog->IsJavaScriptModalDialog());
- app_modal::JavaScriptAppModalDialog* js_dialog =
- static_cast<app_modal::JavaScriptAppModalDialog*>(dialog);
-
ui_test_utils::BrowserActivationWaiter waiter(popup_browser);
- js_dialog->native_dialog()->AcceptAppModalDialog();
+ js_helper->HandleJavaScriptDialog(tab, true, nullptr);
waiter.WaitForActivation();
ASSERT_EQ(popup_browser, chrome::FindLastActive());
}
@@ -663,69 +662,12 @@ IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest, ModalPopUnderNoOpener) {
// https://crbug.com/687732 for details.
ui_test_utils::BrowserActivationWaiter alert_waiter(browser());
#endif
- tab->GetMainFrame()->ExecuteJavaScriptForTests(base::UTF8ToUTF16("alert()"));
- app_modal::AppModalDialog* dialog = ui_test_utils::WaitForAppModalDialog();
-#if !defined(OS_MACOSX)
- if (chrome::FindLastActive() != browser())
- alert_waiter.WaitForActivation();
-#endif
-
- // Verify that after the dialog is closed, the popup is in front again.
- ASSERT_TRUE(dialog->IsJavaScriptModalDialog());
- app_modal::JavaScriptAppModalDialog* js_dialog =
- static_cast<app_modal::JavaScriptAppModalDialog*>(dialog);
-
- ui_test_utils::BrowserActivationWaiter waiter(popup_browser);
- js_dialog->native_dialog()->AcceptAppModalDialog();
- waiter.WaitForActivation();
- ASSERT_EQ(popup_browser, chrome::FindLastActive());
-}
-
-// Verify that app modal prompts can't be used to create pop unders, while the
-// new auto-dismissing JavaScript dialogs are enabled.
-IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest,
- ModalPopUnderAutoDismissingDialogs) {
- base::test::ScopedFeatureList feature_list;
- feature_list.InitAndEnableFeature(features::kAutoDismissingDialogs);
-
- // One tab to test in.
- TabStripModel* tab_strip = browser()->tab_strip_model();
- WebContents* tab = tab_strip->GetActiveWebContents();
- EXPECT_EQ(1, tab_strip->count());
-
- // One blank tab for later.
- ui_test_utils::NavigateToURLWithDisposition(
- browser(), GURL(url::kAboutBlankURL),
- WindowOpenDisposition::NEW_BACKGROUND_TAB,
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
- EXPECT_EQ(2, tab_strip->count());
- ASSERT_EQ(0, tab_strip->GetIndexOfWebContents(tab));
-
- // Show a popup.
JavaScriptDialogTabHelper* js_helper =
JavaScriptDialogTabHelper::FromWebContents(tab);
- GURL url(
- embedded_test_server()->GetURL("/popup_blocker/popup-window-open.html"));
- HostContentSettingsMapFactory::GetForProfile(browser()->profile())
- ->SetContentSettingDefaultScope(url, GURL(), CONTENT_SETTINGS_TYPE_POPUPS,
- std::string(), CONTENT_SETTING_ALLOW);
-
- NavigateAndCheckPopupShown(url, ExpectPopup);
-
- Browser* popup_browser = chrome::FindLastActive();
- ASSERT_NE(popup_browser, browser());
-
- // Showing an alert will raise the tab over the popup.
-#if !defined(OS_MACOSX)
- // Mac doesn't activate the browser during modal dialogs, see
- // https://crbug.com/687732 for details.
- ui_test_utils::BrowserActivationWaiter alert_waiter(browser());
-#endif
- scoped_refptr<content::MessageLoopRunner> runner =
- new content::MessageLoopRunner;
- js_helper->SetDialogShownCallbackForTesting(runner->QuitClosure());
+ base::RunLoop dialog_wait;
+ js_helper->SetDialogShownCallbackForTesting(dialog_wait.QuitClosure());
tab->GetMainFrame()->ExecuteJavaScriptForTests(base::UTF8ToUTF16("alert()"));
- runner->Run();
+ dialog_wait.Run();
#if !defined(OS_MACOSX)
if (chrome::FindLastActive() != browser())
alert_waiter.WaitForActivation();
@@ -733,7 +675,7 @@ IN_PROC_BROWSER_TEST_F(PopupBlockerBrowserTest,
// Verify that after the dialog is closed, the popup is in front again.
ui_test_utils::BrowserActivationWaiter waiter(popup_browser);
- tab_strip->ActivateTabAt(1, true);
+ js_helper->HandleJavaScriptDialog(tab, true, nullptr);
waiter.WaitForActivation();
ASSERT_EQ(popup_browser, chrome::FindLastActive());
}
« no previous file with comments | « chrome/browser/mouseleave_browsertest.cc ('k') | chrome/browser/ui/browser_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698