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

Side by Side Diff: chrome/browser/ui/views/extensions/extension_message_bubble_view_browsertest.cc

Issue 1786933002: Revert of [Extension UI Views] Add tests for clicking the different message bubble buttons (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/macros.h" 5 #include "base/macros.h"
6 #include "chrome/browser/extensions/ntp_overridden_bubble_delegate.h"
7 #include "chrome/browser/ui/extensions/extension_message_bubble_browsertest.h" 6 #include "chrome/browser/ui/extensions/extension_message_bubble_browsertest.h"
8 #include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h" 7 #include "chrome/browser/ui/views/extensions/extension_message_bubble_view.h"
9 #include "chrome/browser/ui/views/frame/browser_view.h" 8 #include "chrome/browser/ui/views/frame/browser_view.h"
10 #include "chrome/browser/ui/views/toolbar/app_menu_button.h" 9 #include "chrome/browser/ui/views/toolbar/app_menu_button.h"
11 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h" 10 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
12 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 11 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
13 #include "chrome/test/base/ui_test_utils.h"
14 #include "extensions/browser/extension_registry.h"
15 #include "ui/events/event_utils.h"
16
17 namespace extensions {
18 12
19 namespace { 13 namespace {
20 14
21 // Returns the ToolbarView for the given |browser|. 15 // Returns the ToolbarView for the given |browser|.
22 ToolbarView* GetToolbarViewForBrowser(Browser* browser) { 16 ToolbarView* GetToolbarViewForBrowser(Browser* browser) {
23 return BrowserView::GetBrowserViewForBrowser(browser)->toolbar(); 17 return BrowserView::GetBrowserViewForBrowser(browser)->toolbar();
24 } 18 }
25 19
26 // Checks that the |bubble| is using the |expected_reference_view|, and is in 20 // Checks that the |bubble| is using the |expected_reference_view|, and is in
27 // approximately the correct position. 21 // approximately the correct position.
(...skipping 24 matching lines...) Expand all
52 // ... as should its Widget. 46 // ... as should its Widget.
53 EXPECT_TRUE(bubble->GetWidget()->IsVisible()); 47 EXPECT_TRUE(bubble->GetWidget()->IsVisible());
54 } 48 }
55 49
56 } // namespace 50 } // namespace
57 51
58 class ExtensionMessageBubbleViewBrowserTest 52 class ExtensionMessageBubbleViewBrowserTest
59 : public ExtensionMessageBubbleBrowserTest { 53 : public ExtensionMessageBubbleBrowserTest {
60 protected: 54 protected:
61 ExtensionMessageBubbleViewBrowserTest() { 55 ExtensionMessageBubbleViewBrowserTest() {
62 ExtensionMessageBubbleView::set_bubble_appearance_wait_time_for_testing(0); 56 extensions::ExtensionMessageBubbleView::
57 set_bubble_appearance_wait_time_for_testing(0);
63 } 58 }
64 ~ExtensionMessageBubbleViewBrowserTest() override {} 59 ~ExtensionMessageBubbleViewBrowserTest() override {}
65 60
66 // Loads and returns an extension that overrides the new tab page.
67 const Extension* LoadNewTabExtension();
68
69 // Clicks on the |bubble|'s dismiss button.
70 void ClickDismissButton(ExtensionMessageBubbleView* bubble) {
71 ClickMessageBubbleButton(bubble, bubble->dismiss_button_);
72 }
73
74 // Clicks on the |bubble|'s action button.
75 void ClickActionButton(ExtensionMessageBubbleView* bubble) {
76 ClickMessageBubbleButton(bubble, bubble->action_button_);
77 }
78
79 ExtensionMessageBubbleView* active_message_bubble() {
80 return ExtensionMessageBubbleView::active_bubble_for_testing_;
81 }
82
83 private: 61 private:
84 void ClickMessageBubbleButton(ExtensionMessageBubbleView* bubble,
85 views::Button* button);
86
87 // ExtensionMessageBubbleBrowserTest: 62 // ExtensionMessageBubbleBrowserTest:
88 void CheckBubble(Browser* browser, AnchorPosition anchor) override; 63 void CheckBubble(Browser* browser, AnchorPosition anchor) override;
89 void CloseBubble(Browser* browser) override; 64 void CloseBubble(Browser* browser) override;
90 void CheckBubbleIsNotPresent(Browser* browser) override; 65 void CheckBubbleIsNotPresent(Browser* browser) override;
91 66
92 DISALLOW_COPY_AND_ASSIGN(ExtensionMessageBubbleViewBrowserTest); 67 DISALLOW_COPY_AND_ASSIGN(ExtensionMessageBubbleViewBrowserTest);
93 }; 68 };
94 69
95 const Extension* ExtensionMessageBubbleViewBrowserTest::LoadNewTabExtension() {
96 base::FilePath crx_path = PackExtension(test_data_dir_.AppendASCII("api_test")
97 .AppendASCII("override")
98 .AppendASCII("newtab"));
99 EXPECT_FALSE(crx_path.empty());
100 const Extension* extension = InstallExtensionFromWebstore(crx_path, 1);
101 return extension;
102 }
103
104 void ExtensionMessageBubbleViewBrowserTest::ClickMessageBubbleButton(
105 ExtensionMessageBubbleView* bubble,
106 views::Button* button) {
107 gfx::Point p(button->x(), button->y());
108 ui::MouseEvent event(ui::ET_MOUSE_RELEASED, p, p, ui::EventTimeForNow(),
109 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON);
110 bubble->ButtonPressed(button, event);
111 }
112
113 void ExtensionMessageBubbleViewBrowserTest::CheckBubble(Browser* browser, 70 void ExtensionMessageBubbleViewBrowserTest::CheckBubble(Browser* browser,
114 AnchorPosition anchor) { 71 AnchorPosition anchor) {
115 ToolbarView* toolbar_view = GetToolbarViewForBrowser(browser); 72 ToolbarView* toolbar_view = GetToolbarViewForBrowser(browser);
116 BrowserActionsContainer* container = toolbar_view->browser_actions(); 73 BrowserActionsContainer* container = toolbar_view->browser_actions();
117 views::BubbleDelegateView* bubble = container->active_bubble(); 74 views::BubbleDelegateView* bubble = container->active_bubble();
118 views::View* anchor_view = nullptr; 75 views::View* anchor_view = nullptr;
119 switch (anchor) { 76 switch (anchor) {
120 case ANCHOR_BROWSER_ACTION: 77 case ANCHOR_BROWSER_ACTION:
121 anchor_view = container->GetToolbarActionViewAt(0); 78 anchor_view = container->GetToolbarActionViewAt(0);
122 break; 79 break;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 122
166 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest, 123 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
167 ExtensionBubbleShowsOnStartup) { 124 ExtensionBubbleShowsOnStartup) {
168 TestBubbleShowsOnStartup(); 125 TestBubbleShowsOnStartup();
169 } 126 }
170 127
171 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest, 128 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
172 TestUninstallDangerousExtension) { 129 TestUninstallDangerousExtension) {
173 TestUninstallDangerousExtension(); 130 TestUninstallDangerousExtension();
174 } 131 }
175
176 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
177 TestClickingDismissButton) {
178 const Extension* extension = LoadNewTabExtension();
179 ASSERT_TRUE(extension);
180 const std::string extension_id = extension->id();
181
182 ui_test_utils::NavigateToURLWithDisposition(
183 browser(), GURL("chrome://newtab/"), NEW_FOREGROUND_TAB,
184 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
185
186 NtpOverriddenBubbleDelegate bubble_delegate(profile());
187 EXPECT_FALSE(bubble_delegate.HasBubbleInfoBeenAcknowledged(extension->id()));
188
189 // Check the bubble is showing.
190 base::RunLoop().RunUntilIdle();
191 ExtensionMessageBubbleView* bubble = active_message_bubble();
192 views::View* anchor_view =
193 GetToolbarViewForBrowser(browser())->app_menu_button();
194 CheckBubbleAndReferenceView(bubble, anchor_view);
195
196 // Click the dismiss button. The bubble should close, and the extension should
197 // be acknowledged (and still installed).
198 ClickDismissButton(bubble);
199 base::RunLoop().RunUntilIdle();
200 EXPECT_FALSE(active_message_bubble());
201 EXPECT_TRUE(bubble_delegate.HasBubbleInfoBeenAcknowledged(extension->id()));
202 EXPECT_TRUE(ExtensionRegistry::Get(profile())->enabled_extensions().GetByID(
203 extension_id));
204 }
205
206 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
207 TestClickingActionButton) {
208 const Extension* extension = LoadNewTabExtension();
209 ASSERT_TRUE(extension);
210 const std::string extension_id = extension->id();
211
212 ui_test_utils::NavigateToURLWithDisposition(
213 browser(), GURL("chrome://newtab/"), NEW_FOREGROUND_TAB,
214 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
215
216 NtpOverriddenBubbleDelegate bubble_delegate(profile());
217 EXPECT_FALSE(bubble_delegate.HasBubbleInfoBeenAcknowledged(extension->id()));
218
219 // Check the bubble is showing.
220 base::RunLoop().RunUntilIdle();
221 ExtensionMessageBubbleView* bubble = active_message_bubble();
222 views::View* anchor_view =
223 GetToolbarViewForBrowser(browser())->app_menu_button();
224 CheckBubbleAndReferenceView(bubble, anchor_view);
225
226 // Click the action button. The bubble should close, and the extension should
227 // not be acknowledged. Instead, the extension should be disabled.
228 ClickActionButton(bubble);
229 base::RunLoop().RunUntilIdle();
230 EXPECT_FALSE(active_message_bubble());
231 EXPECT_FALSE(bubble_delegate.HasBubbleInfoBeenAcknowledged(extension->id()));
232 EXPECT_FALSE(ExtensionRegistry::Get(profile())->enabled_extensions().GetByID(
233 extension_id));
234 EXPECT_TRUE(ExtensionRegistry::Get(profile())->disabled_extensions().GetByID(
235 extension_id));
236 }
237
238 IN_PROC_BROWSER_TEST_F(ExtensionMessageBubbleViewBrowserTest,
239 TestBubbleFocusLoss) {
240 const Extension* extension = LoadNewTabExtension();
241 ASSERT_TRUE(extension);
242 const std::string extension_id = extension->id();
243
244 ui_test_utils::NavigateToURLWithDisposition(
245 browser(), GURL("chrome://newtab/"), NEW_FOREGROUND_TAB,
246 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
247
248 NtpOverriddenBubbleDelegate bubble_delegate(profile());
249 EXPECT_FALSE(bubble_delegate.HasBubbleInfoBeenAcknowledged(extension->id()));
250
251 // Check the bubble is showing.
252 base::RunLoop().RunUntilIdle();
253 ExtensionMessageBubbleView* bubble = active_message_bubble();
254 views::View* anchor_view =
255 GetToolbarViewForBrowser(browser())->app_menu_button();
256 CheckBubbleAndReferenceView(bubble, anchor_view);
257
258 // Deactivate the bubble's widget (e.g. due to focus loss). This causes the
259 // bubble to close, but the extension should not be acknowledged or removed.
260 bubble->GetWidget()->Deactivate();
261 base::RunLoop().RunUntilIdle();
262 EXPECT_FALSE(active_message_bubble());
263 EXPECT_FALSE(bubble_delegate.HasBubbleInfoBeenAcknowledged(extension->id()));
264 EXPECT_TRUE(ExtensionRegistry::Get(profile())->enabled_extensions().GetByID(
265 extension_id));
266 }
267
268 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698