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

Side by Side Diff: chrome/browser/ui/views/toolbar/browser_actions_container_browsertest.cc

Issue 476873002: Make hiding an extension action cause it to go to the overflow menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 4 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
« no previous file with comments | « chrome/browser/ui/views/toolbar/browser_actions_container.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/ui/views/toolbar/browser_actions_container.h" 5 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
6 6
7 #include "chrome/browser/chrome_notification_types.h" 7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" 8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
9 #include "chrome/browser/extensions/browser_action_test_util.h" 9 #include "chrome/browser/extensions/browser_action_test_util.h"
10 #include "chrome/browser/extensions/extension_browsertest.h" 10 #include "chrome/browser/extensions/extension_browsertest.h"
11 #include "chrome/browser/extensions/extension_toolbar_model.h" 11 #include "chrome/browser/extensions/extension_toolbar_model.h"
12 #include "chrome/browser/ui/browser_window.h" 12 #include "chrome/browser/ui/browser_window.h"
13 #include "chrome/browser/ui/browser_window_testing_views.h" 13 #include "chrome/browser/ui/browser_window_testing_views.h"
14 #include "chrome/browser/ui/views/toolbar/browser_action_view.h" 14 #include "chrome/browser/ui/views/toolbar/browser_action_view.h"
15 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 15 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
16 #include "content/public/test/test_utils.h" 16 #include "content/public/test/test_utils.h"
17 #include "extensions/browser/extension_prefs.h" 17 #include "extensions/browser/extension_prefs.h"
18 #include "extensions/common/extension.h" 18 #include "extensions/common/extension.h"
19 #include "ui/gfx/geometry/point.h" 19 #include "ui/gfx/geometry/point.h"
20 #include "ui/views/view.h" 20 #include "ui/views/view.h"
21 21
22 using extensions::Extension; 22 using extensions::Extension;
23 23
24 class BrowserActionsContainerTest : public ExtensionBrowserTest { 24 class BrowserActionsContainerTest : public ExtensionBrowserTest {
25 public: 25 public:
26 BrowserActionsContainerTest() { 26 BrowserActionsContainerTest() {
27 } 27 }
28 virtual ~BrowserActionsContainerTest() {} 28 virtual ~BrowserActionsContainerTest() {}
29 29
30 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE {
31 BrowserActionsContainer::disable_animations_during_testing_ = true;
32 ExtensionBrowserTest::SetUpCommandLine(command_line);
33 }
34
30 virtual void SetUpOnMainThread() OVERRIDE { 35 virtual void SetUpOnMainThread() OVERRIDE {
31 ExtensionBrowserTest::SetUpOnMainThread(); 36 ExtensionBrowserTest::SetUpOnMainThread();
32 browser_actions_bar_.reset(new BrowserActionTestUtil(browser())); 37 browser_actions_bar_.reset(new BrowserActionTestUtil(browser()));
33 } 38 }
34 39
40 virtual void TearDownOnMainThread() OVERRIDE {
41 BrowserActionsContainer::disable_animations_during_testing_ = false;
42 }
43
35 BrowserActionTestUtil* browser_actions_bar() { 44 BrowserActionTestUtil* browser_actions_bar() {
36 return browser_actions_bar_.get(); 45 return browser_actions_bar_.get();
37 } 46 }
38 47
39 private: 48 private:
40 scoped_ptr<BrowserActionTestUtil> browser_actions_bar_; 49 scoped_ptr<BrowserActionTestUtil> browser_actions_bar_;
41 }; 50 };
42 51
43 // Test the basic functionality. 52 // Test the basic functionality.
44 // http://crbug.com/120770 53 // http://crbug.com/120770
45 #if defined(OS_WIN) 54 #if defined(OS_WIN)
46 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, DISABLED_Basic) { 55 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, DISABLED_Basic) {
47 #else 56 #else
48 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, Basic) { 57 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, Basic) {
49 #endif 58 #endif
50 BrowserActionsContainer::disable_animations_during_testing_ = true;
51
52 // Load an extension with no browser action. 59 // Load an extension with no browser action.
53 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 60 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
54 .AppendASCII("browser_action") 61 .AppendASCII("browser_action")
55 .AppendASCII("none"))); 62 .AppendASCII("none")));
56 // This extension should not be in the model (has no browser action). 63 // This extension should not be in the model (has no browser action).
57 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions()); 64 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions());
58 65
59 // Load an extension with a browser action. 66 // Load an extension with a browser action.
60 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 67 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
61 .AppendASCII("browser_action") 68 .AppendASCII("browser_action")
62 .AppendASCII("basics"))); 69 .AppendASCII("basics")));
63 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); 70 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions());
64 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); 71 EXPECT_TRUE(browser_actions_bar()->HasIcon(0));
65 72
66 73
67 // Unload the extension. 74 // Unload the extension.
68 std::string id = browser_actions_bar()->GetExtensionId(0); 75 std::string id = browser_actions_bar()->GetExtensionId(0);
69 UnloadExtension(id); 76 UnloadExtension(id);
70 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions()); 77 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions());
71 } 78 }
72 79
73 // Test moving various browser actions. This is not to check the logic of the 80 // Test moving various browser actions. This is not to check the logic of the
74 // move (that's in the toolbar model tests), but just to check our ui. 81 // move (that's in the toolbar model tests), but just to check our ui.
75 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, 82 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest,
76 MoveBrowserActions) { 83 MoveBrowserActions) {
77 BrowserActionsContainer::disable_animations_during_testing_ = true;
78
79 // Load three extensions with browser actions. 84 // Load three extensions with browser actions.
80 const Extension* extension_a = 85 const Extension* extension_a =
81 LoadExtension(test_data_dir_.AppendASCII("api_test") 86 LoadExtension(test_data_dir_.AppendASCII("api_test")
82 .AppendASCII("browser_action") 87 .AppendASCII("browser_action")
83 .AppendASCII("basics")); 88 .AppendASCII("basics"));
84 ASSERT_TRUE(extension_a); 89 ASSERT_TRUE(extension_a);
85 const Extension* extension_b = 90 const Extension* extension_b =
86 LoadExtension(test_data_dir_.AppendASCII("api_test") 91 LoadExtension(test_data_dir_.AppendASCII("api_test")
87 .AppendASCII("browser_action") 92 .AppendASCII("browser_action")
88 .AppendASCII("add_popup")); 93 .AppendASCII("add_popup"));
(...skipping 29 matching lines...) Expand all
118 EXPECT_EQ(extension_b->id(), browser_actions_bar()->GetExtensionId(2)); 123 EXPECT_EQ(extension_b->id(), browser_actions_bar()->GetExtensionId(2));
119 124
120 // Move B to middle position. Order is C B A. 125 // Move B to middle position. Order is C B A.
121 model->MoveExtensionIcon(extension_b, 1); 126 model->MoveExtensionIcon(extension_b, 1);
122 EXPECT_EQ(extension_c->id(), browser_actions_bar()->GetExtensionId(0)); 127 EXPECT_EQ(extension_c->id(), browser_actions_bar()->GetExtensionId(0));
123 EXPECT_EQ(extension_b->id(), browser_actions_bar()->GetExtensionId(1)); 128 EXPECT_EQ(extension_b->id(), browser_actions_bar()->GetExtensionId(1));
124 EXPECT_EQ(extension_a->id(), browser_actions_bar()->GetExtensionId(2)); 129 EXPECT_EQ(extension_a->id(), browser_actions_bar()->GetExtensionId(2));
125 } 130 }
126 131
127 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, Visibility) { 132 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, Visibility) {
128 BrowserActionsContainer::disable_animations_during_testing_ = true;
129
130 // Load extension A (contains browser action). 133 // Load extension A (contains browser action).
131 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 134 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
132 .AppendASCII("browser_action") 135 .AppendASCII("browser_action")
133 .AppendASCII("basics"))); 136 .AppendASCII("basics")));
134 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); 137 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions());
135 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); 138 EXPECT_TRUE(browser_actions_bar()->HasIcon(0));
136 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); 139 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions());
137 std::string idA = browser_actions_bar()->GetExtensionId(0); 140 std::string idA = browser_actions_bar()->GetExtensionId(0);
138 141
139 // Load extension B (contains browser action). 142 // Load extension B (contains browser action).
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 EXPECT_EQ(idB, browser_actions_bar()->GetExtensionId(0)); 212 EXPECT_EQ(idB, browser_actions_bar()->GetExtensionId(0));
210 213
211 // Enable A. State becomes: A, B, C. 214 // Enable A. State becomes: A, B, C.
212 EnableExtension(idA); 215 EnableExtension(idA);
213 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); 216 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions());
214 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); 217 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions());
215 EXPECT_EQ(idA, browser_actions_bar()->GetExtensionId(0)); 218 EXPECT_EQ(idA, browser_actions_bar()->GetExtensionId(0));
216 } 219 }
217 220
218 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, ForceHide) { 221 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, ForceHide) {
219 BrowserActionsContainer::disable_animations_during_testing_ = true;
220
221 // Load extension A (contains browser action). 222 // Load extension A (contains browser action).
222 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 223 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
223 .AppendASCII("browser_action") 224 .AppendASCII("browser_action")
224 .AppendASCII("basics"))); 225 .AppendASCII("basics")));
225 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); 226 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions());
226 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); 227 EXPECT_TRUE(browser_actions_bar()->HasIcon(0));
227 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); 228 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions());
228 std::string idA = browser_actions_bar()->GetExtensionId(0); 229 std::string idA = browser_actions_bar()->GetExtensionId(0);
229 230
230 // Force hide this browser action. 231 // Force hide this browser action.
231 extensions::ExtensionActionAPI::SetBrowserActionVisibility( 232 extensions::ExtensionActionAPI::SetBrowserActionVisibility(
232 extensions::ExtensionPrefs::Get(browser()->profile()), idA, false); 233 extensions::ExtensionPrefs::Get(browser()->profile()), idA, false);
233 EXPECT_EQ(0, browser_actions_bar()->VisibleBrowserActions()); 234 EXPECT_EQ(0, browser_actions_bar()->VisibleBrowserActions());
234 } 235 }
235 236
236 // Test that the BrowserActionsContainer responds correctly when the underlying 237 // Test that the BrowserActionsContainer responds correctly when the underlying
237 // model enters highlight mode, and that browser actions are undraggable in 238 // model enters highlight mode, and that browser actions are undraggable in
238 // highlight mode. (Highlight mode itself it tested more thoroughly in the 239 // highlight mode. (Highlight mode itself it tested more thoroughly in the
239 // ExtensionToolbarModel browsertests). 240 // ExtensionToolbarModel browsertests).
240 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, HighlightMode) { 241 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, HighlightMode) {
241 BrowserActionsContainer::disable_animations_during_testing_ = true;
242
243 // Load three extensions with browser actions. 242 // Load three extensions with browser actions.
244 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 243 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
245 .AppendASCII("browser_action") 244 .AppendASCII("browser_action")
246 .AppendASCII("basics"))); 245 .AppendASCII("basics")));
247 std::string id_a = browser_actions_bar()->GetExtensionId(0); 246 std::string id_a = browser_actions_bar()->GetExtensionId(0);
248 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 247 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
249 .AppendASCII("browser_action") 248 .AppendASCII("browser_action")
250 .AppendASCII("add_popup"))); 249 .AppendASCII("add_popup")));
251 std::string id_b = browser_actions_bar()->GetExtensionId(1); 250 std::string id_b = browser_actions_bar()->GetExtensionId(1);
252 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 251 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 action_view = container->GetBrowserActionViewAt(0); 283 action_view = container->GetBrowserActionViewAt(0);
285 EXPECT_FALSE(container->CanStartDragForView(action_view, point, point)); 284 EXPECT_FALSE(container->CanStartDragForView(action_view, point, point));
286 285
287 // We should go back to normal after leaving highlight mode. 286 // We should go back to normal after leaving highlight mode.
288 model->StopHighlighting(); 287 model->StopHighlighting();
289 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); 288 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions());
290 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); 289 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions());
291 action_view = container->GetBrowserActionViewAt(0); 290 action_view = container->GetBrowserActionViewAt(0);
292 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); 291 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point));
293 } 292 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/browser_actions_container.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698