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

Unified Diff: chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc

Issue 2076093004: [Extensions UI] Handle multiple warning bubbles racing to show (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix win tests Created 4 years, 6 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
Index: chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
diff --git a/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc b/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
index 153cc897247a164b1c6c6f4aa625bf629d9c066f..74ea47d38508d8f30815135ba7eda3ad9b3b7699 100644
--- a/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
+++ b/chrome/browser/ui/extensions/extension_message_bubble_browsertest.cc
@@ -65,6 +65,34 @@ void ExtensionMessageBubbleBrowserTest::AddSettingsOverrideExtension(
ASSERT_TRUE(LoadExtension(custom_extension_dir_->unpacked_path()));
}
+void ExtensionMessageBubbleBrowserTest::CheckBubble(
+ Browser* browser,
+ AnchorPosition position,
+ bool should_be_highlighting) {
+ EXPECT_EQ(should_be_highlighting, toolbar_model()->is_highlighting());
+ EXPECT_TRUE(toolbar_model()->has_active_bubble());
+ EXPECT_TRUE(browser->window()->GetToolbarActionsBar()->is_showing_bubble());
+ CheckBubbleNative(browser, position);
+}
+
+void ExtensionMessageBubbleBrowserTest::CheckBubbleIsNotPresent(
+ Browser* browser,
+ bool should_profile_have_bubble,
+ bool should_be_highlighting) {
+ // We should never be highlighting without an active bubble.
+ ASSERT_TRUE(!should_be_highlighting || should_profile_have_bubble);
+ EXPECT_EQ(should_be_highlighting, toolbar_model()->is_highlighting());
+ EXPECT_EQ(should_profile_have_bubble, toolbar_model()->has_active_bubble());
+ EXPECT_FALSE(browser->window()->GetToolbarActionsBar()->is_showing_bubble());
+ CheckBubbleIsNotPresentNative(browser);
+}
+
+void ExtensionMessageBubbleBrowserTest::CloseBubble(Browser* browser) {
+ CloseBubbleNative(browser);
+ base::RunLoop().RunUntilIdle();
+ CheckBubbleIsNotPresent(browser, false, false);
+}
+
void ExtensionMessageBubbleBrowserTest::TestBubbleAnchoredToExtensionAction() {
scoped_refptr<const extensions::Extension> action_extension =
extensions::extension_action_test_util::CreateActionExtension(
@@ -76,7 +104,7 @@ void ExtensionMessageBubbleBrowserTest::TestBubbleAnchoredToExtensionAction() {
Browser* second_browser = new Browser(Browser::CreateParams(profile()));
base::RunLoop().RunUntilIdle();
- CheckBubble(second_browser, ANCHOR_BROWSER_ACTION);
+ CheckBubble(second_browser, ANCHOR_BROWSER_ACTION, true);
CloseBubble(second_browser);
}
@@ -89,7 +117,7 @@ void ExtensionMessageBubbleBrowserTest::TestBubbleAnchoredToAppMenu() {
extension_service()->AddExtension(no_action_extension.get());
Browser* second_browser = new Browser(Browser::CreateParams(profile()));
base::RunLoop().RunUntilIdle();
- CheckBubble(second_browser, ANCHOR_APP_MENU);
+ CheckBubble(second_browser, ANCHOR_APP_MENU, false);
CloseBubble(second_browser);
}
@@ -112,7 +140,7 @@ void ExtensionMessageBubbleBrowserTest::
Browser* second_browser = new Browser(Browser::CreateParams(profile()));
base::RunLoop().RunUntilIdle();
- CheckBubble(second_browser, ANCHOR_APP_MENU);
+ CheckBubble(second_browser, ANCHOR_APP_MENU, false);
CloseBubble(second_browser);
}
@@ -136,7 +164,7 @@ void ExtensionMessageBubbleBrowserTest::TestUninstallDangerousExtension() {
extension->id(), extensions::UNINSTALL_REASON_FOR_TESTING,
base::Bind(&base::DoNothing), nullptr);
base::RunLoop().RunUntilIdle();
- CheckBubbleIsNotPresent(second_browser);
+ CheckBubbleIsNotPresent(second_browser, false, false);
}
void ExtensionMessageBubbleBrowserTest::PreBubbleShowsOnStartup() {
@@ -145,7 +173,7 @@ void ExtensionMessageBubbleBrowserTest::PreBubbleShowsOnStartup() {
void ExtensionMessageBubbleBrowserTest::TestBubbleShowsOnStartup() {
base::RunLoop().RunUntilIdle();
- CheckBubble(browser(), ANCHOR_BROWSER_ACTION);
+ CheckBubble(browser(), ANCHOR_BROWSER_ACTION, true);
CloseBubble(browser());
}
@@ -160,24 +188,24 @@ void ExtensionMessageBubbleBrowserTest::TestDevModeBubbleIsntShownTwice() {
Browser* second_browser = new Browser(Browser::CreateParams(profile()));
base::RunLoop().RunUntilIdle();
- CheckBubble(second_browser, ANCHOR_BROWSER_ACTION);
+ CheckBubble(second_browser, ANCHOR_BROWSER_ACTION, true);
CloseBubble(second_browser);
base::RunLoop().RunUntilIdle();
// The bubble was already shown, so it shouldn't be shown again.
Browser* third_browser = new Browser(Browser::CreateParams(profile()));
base::RunLoop().RunUntilIdle();
- CheckBubbleIsNotPresent(third_browser);
+ CheckBubbleIsNotPresent(third_browser, false, false);
}
void ExtensionMessageBubbleBrowserTest::TestControlledNewTabPageBubbleShown() {
ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
.AppendASCII("override")
.AppendASCII("newtab")));
- CheckBubbleIsNotPresent(browser());
+ CheckBubbleIsNotPresent(browser(), false, false);
chrome::NewTab(browser());
base::RunLoop().RunUntilIdle();
- CheckBubble(browser(), ANCHOR_BROWSER_ACTION);
+ CheckBubble(browser(), ANCHOR_BROWSER_ACTION, false);
CloseBubble(browser());
}
@@ -187,13 +215,13 @@ void ExtensionMessageBubbleBrowserTest::TestControlledHomeBubbleShown() {
const char kHomePage[] = "'homepage': 'https://www.google.com'\n";
AddSettingsOverrideExtension(kHomePage);
- CheckBubbleIsNotPresent(browser());
+ CheckBubbleIsNotPresent(browser(), false, false);
chrome::ExecuteCommandWithDisposition(browser(),
IDC_HOME, NEW_FOREGROUND_TAB);
base::RunLoop().RunUntilIdle();
- CheckBubble(browser(), ANCHOR_BROWSER_ACTION);
+ CheckBubble(browser(), ANCHOR_BROWSER_ACTION, false);
CloseBubble(browser());
}
@@ -209,7 +237,7 @@ void ExtensionMessageBubbleBrowserTest::TestControlledSearchBubbleShown() {
"}\n";
AddSettingsOverrideExtension(kSearchProvider);
- CheckBubbleIsNotPresent(browser());
+ CheckBubbleIsNotPresent(browser(), false, false);
OmniboxView* omnibox =
browser()->window()->GetLocationBar()->GetOmniboxView();
@@ -219,6 +247,22 @@ void ExtensionMessageBubbleBrowserTest::TestControlledSearchBubbleShown() {
omnibox->model()->AcceptInput(CURRENT_TAB, false);
base::RunLoop().RunUntilIdle();
- CheckBubble(browser(), ANCHOR_BROWSER_ACTION);
+ CheckBubble(browser(), ANCHOR_BROWSER_ACTION, false);
CloseBubble(browser());
}
+
+void ExtensionMessageBubbleBrowserTest::TestBubbleWithMultipleWindows() {
+ CheckBubbleIsNotPresent(browser(), false, false);
+ LoadExtension(test_data_dir_.AppendASCII("good_unpacked"));
+ Browser* second_browser = new Browser(Browser::CreateParams(profile()));
+ Browser* third_browser = new Browser(Browser::CreateParams(profile()));
+ Browser* fourth_browser = new Browser(Browser::CreateParams(profile()));
+ base::RunLoop().RunUntilIdle();
+ CheckBubble(second_browser, ANCHOR_BROWSER_ACTION, true);
+ // Even though the bubble isn't present on these browser windows, highlighting
+ // is per-profile.
+ CheckBubbleIsNotPresent(browser(), true, true);
+ CheckBubbleIsNotPresent(third_browser, true, true);
+ CheckBubbleIsNotPresent(fourth_browser, true, true);
+ CloseBubble(second_browser);
+}

Powered by Google App Engine
This is Rietveld 408576698