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

Unified Diff: chrome/browser/ui/views/extensions/extension_message_bubble_view_browsertest.cc

Issue 2630473003: MacViews: Harmony for toolbar actions bubbles. (Closed)
Patch Set: respond to comments Created 3 years, 9 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/views/extensions/extension_message_bubble_view_browsertest.cc
diff --git a/chrome/browser/ui/views/extensions/extension_message_bubble_view_browsertest.cc b/chrome/browser/ui/views/extensions/extension_message_bubble_view_browsertest.cc
index 980e9a897d8311a8518065f02d3bfe54610dade6..a4d260931431ab516738b7e910b63933ef2d95f8 100644
--- a/chrome/browser/ui/views/extensions/extension_message_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/extensions/extension_message_bubble_view_browsertest.cc
@@ -4,12 +4,9 @@
#include "base/macros.h"
#include "chrome/browser/ui/extensions/extension_message_bubble_browsertest.h"
-#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
-#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/toolbar/app_menu_button.h"
-#include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
+#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h"
-#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/views/bubble/bubble_dialog_delegate.h"
#include "ui/views/controls/link.h"
#include "ui/views/controls/link_listener.h"
@@ -17,27 +14,14 @@
namespace {
-// Returns the ToolbarView for the given |browser|.
-ToolbarView* GetToolbarViewForBrowser(Browser* browser) {
- return BrowserView::GetBrowserViewForBrowser(browser)->toolbar();
-}
-
-ToolbarActionsBarBubbleViews* GetBubbleForBrowser(Browser* browser) {
- return static_cast<ToolbarActionsBarBubbleViews*>(
- GetToolbarViewForBrowser(browser)->browser_actions()->active_bubble());
-}
-
-// Checks that the |bubble| is using the |expected_reference_view|, and is in
-// approximately the correct position.
-void CheckBubbleAndReferenceView(views::BubbleDialogDelegateView* bubble,
- views::View* expected_reference_view) {
+// Checks that the |bubble| is showing. Uses |reference_bounds| to ensure it is
+// in approximately the correct position.
+void CheckBubbleAgainstReferenceBounds(views::BubbleDialogDelegateView* bubble,
+ const gfx::Rect& reference_bounds) {
ASSERT_TRUE(bubble);
- ASSERT_TRUE(expected_reference_view);
- EXPECT_EQ(expected_reference_view, bubble->GetAnchorView());
// Do a rough check that the bubble is in the right place.
gfx::Rect bubble_bounds = bubble->GetWidget()->GetWindowBoundsInScreen();
- gfx::Rect reference_bounds = expected_reference_view->GetBoundsInScreen();
// It should be below the reference view, but not too far below.
EXPECT_GE(bubble_bounds.y(), reference_bounds.y());
// The arrow should be poking into the anchor.
@@ -56,13 +40,20 @@ void CheckBubbleAndReferenceView(views::BubbleDialogDelegateView* bubble,
} // namespace
class ExtensionMessageBubbleViewBrowserTest
- : public ExtensionMessageBubbleBrowserTest {
+ : public SupportsTestDialog<ExtensionMessageBubbleBrowserTest> {
protected:
ExtensionMessageBubbleViewBrowserTest() {}
~ExtensionMessageBubbleViewBrowserTest() override {}
+ // ExtensionMessageBubbleBrowserTest:
+ void SetUpCommandLine(base::CommandLine* command_line) override;
+
+ // TestBrowserDialog:
+ void ShowDialog(const std::string& name) override;
+
private:
// ExtensionMessageBubbleBrowserTest:
+ void CloseBubble(Browser* browser) override;
Peter Kasting 2017/03/10 08:29:54 Nit: Goes after CheckBubbleNative() (match base cl
tapted 2017/03/13 06:04:57 Done.
void CheckBubbleNative(Browser* browser, AnchorPosition anchor) override;
void CloseBubbleNative(Browser* browser) override;
void CheckBubbleIsNotPresentNative(Browser* browser) override;
@@ -70,6 +61,10 @@ class ExtensionMessageBubbleViewBrowserTest
void ClickActionButton(Browser* browser) override;
void ClickDismissButton(Browser* browser) override;
+ // Whether to ignore requests from ExtensionMessageBubbleBrowserTest to
+ // CloseBubble().
+ bool block_close_ = false;
+
DISALLOW_COPY_AND_ASSIGN(ExtensionMessageBubbleViewBrowserTest);
};
@@ -84,58 +79,69 @@ class ExtensionMessageBubbleViewBrowserTestLegacy
}
};
+void ExtensionMessageBubbleViewBrowserTest::SetUpCommandLine(
+ base::CommandLine* command_line) {
+ ExtensionMessageBubbleBrowserTest::SetUpCommandLine(command_line);
+ // MD is required on Mac to get a Views bubble. On other platforms, it should
+ // not affect the behavior of the bubble (just the appearance), so enable for
+ // all platforms.
+ command_line->AppendSwitch(switches::kExtendMdToSecondaryUi);
+}
+
+void ExtensionMessageBubbleViewBrowserTest::ShowDialog(
+ const std::string& name) {
+ // TODO(tapted): Add cases for all bubble types.
+ EXPECT_EQ("devmode_warning", name);
+
+ // When invoked this way, the dialog test harness must close the bubble.
+ block_close_ = true;
Peter Kasting 2017/03/10 08:29:54 Nit: Use base::AutoReset<> rather than manually to
tapted 2017/03/13 06:04:57 Done.
+ TestBubbleAnchoredToExtensionAction();
+ block_close_ = false;
+}
+
+void ExtensionMessageBubbleViewBrowserTest::CloseBubble(Browser* browser) {
+ if (!block_close_)
+ ExtensionMessageBubbleBrowserTest::CloseBubble(browser);
+}
+
void ExtensionMessageBubbleViewBrowserTest::CheckBubbleNative(
Browser* browser,
AnchorPosition anchor) {
- ToolbarView* toolbar_view = GetToolbarViewForBrowser(browser);
- BrowserActionsContainer* container = toolbar_view->browser_actions();
- views::BubbleDialogDelegateView* bubble = container->active_bubble();
- views::View* anchor_view = nullptr;
- switch (anchor) {
- case ANCHOR_BROWSER_ACTION:
- DCHECK_GT(container->num_toolbar_actions(), 0u);
- anchor_view = container->GetToolbarActionViewAt(0);
- break;
- case ANCHOR_APP_MENU:
- anchor_view = toolbar_view->app_menu_button();
- break;
- }
- CheckBubbleAndReferenceView(bubble, anchor_view);
+ gfx::Rect reference_bounds =
+ GetAnchorReferenceBoundsForBrowser(browser, anchor);
+ CheckBubbleAgainstReferenceBounds(GetViewsBubbleForBrowser(browser),
+ reference_bounds);
}
void ExtensionMessageBubbleViewBrowserTest::CloseBubbleNative(
Browser* browser) {
- BrowserActionsContainer* container =
- GetToolbarViewForBrowser(browser)->browser_actions();
- views::BubbleDialogDelegateView* bubble = container->active_bubble();
+ views::BubbleDialogDelegateView* bubble = GetViewsBubbleForBrowser(browser);
ASSERT_TRUE(bubble);
bubble->GetWidget()->Close();
- EXPECT_EQ(nullptr, container->active_bubble());
+ EXPECT_EQ(nullptr, GetViewsBubbleForBrowser(browser));
}
void ExtensionMessageBubbleViewBrowserTest::CheckBubbleIsNotPresentNative(
Browser* browser) {
- EXPECT_EQ(
- nullptr,
- GetToolbarViewForBrowser(browser)->browser_actions()->active_bubble());
+ EXPECT_EQ(nullptr, GetViewsBubbleForBrowser(browser));
}
void ExtensionMessageBubbleViewBrowserTest::ClickLearnMoreButton(
Browser* browser) {
- ToolbarActionsBarBubbleViews* bubble = GetBubbleForBrowser(browser);
+ ToolbarActionsBarBubbleViews* bubble = GetViewsBubbleForBrowser(browser);
static_cast<views::LinkListener*>(bubble)->LinkClicked(
const_cast<views::Link*>(bubble->learn_more_button()), 0);
}
void ExtensionMessageBubbleViewBrowserTest::ClickActionButton(
Browser* browser) {
- ToolbarActionsBarBubbleViews* bubble = GetBubbleForBrowser(browser);
+ ToolbarActionsBarBubbleViews* bubble = GetViewsBubbleForBrowser(browser);
bubble->GetDialogClientView()->AcceptWindow();
}
void ExtensionMessageBubbleViewBrowserTest::ClickDismissButton(
Browser* browser) {
- ToolbarActionsBarBubbleViews* bubble = GetBubbleForBrowser(browser);
+ ToolbarActionsBarBubbleViews* bubble = GetViewsBubbleForBrowser(browser);
bubble->GetDialogClientView()->CancelWindow();
}
@@ -233,3 +239,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
TestClickingDismissButton) {
TestClickingDismissButton();
}
+
+// BrowserDialogTest for the warning bubble that appears at startup when there
+// are extensions installed in developer mode. Can be invoked interactively with
+// --gtest_filter=BrowserDialogTest.Invoke.
+IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
+ InvokeDialog_devmode_warning) {
+ RunDialog();
+}

Powered by Google App Engine
This is Rietveld 408576698