| OLD | NEW |
| 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" | |
| 8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 7 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
| 9 #include "chrome/browser/extensions/browser_action_test_util.h" | 8 #include "chrome/browser/extensions/browser_action_test_util.h" |
| 10 #include "chrome/browser/extensions/extension_browsertest.h" | |
| 11 #include "chrome/browser/extensions/extension_service.h" | 9 #include "chrome/browser/extensions/extension_service.h" |
| 12 #include "chrome/browser/extensions/extension_toolbar_model.h" | 10 #include "chrome/browser/extensions/extension_toolbar_model.h" |
| 13 #include "chrome/browser/ui/browser_window.h" | 11 #include "chrome/browser/ui/browser_window.h" |
| 14 #include "chrome/browser/ui/browser_window_testing_views.h" | 12 #include "chrome/browser/ui/browser_window_testing_views.h" |
| 13 #include "chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h" |
| 15 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" | 14 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" |
| 16 #include "chrome/browser/ui/views/frame/browser_view.h" | 15 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 17 #include "chrome/browser/ui/views/toolbar/browser_action_view.h" | 16 #include "chrome/browser/ui/views/toolbar/browser_action_view.h" |
| 18 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" | 17 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" |
| 19 #include "components/crx_file/id_util.h" | |
| 20 #include "content/public/test/test_utils.h" | |
| 21 #include "extensions/browser/extension_prefs.h" | 18 #include "extensions/browser/extension_prefs.h" |
| 22 #include "extensions/browser/extension_registry.h" | |
| 23 #include "extensions/common/extension.h" | 19 #include "extensions/common/extension.h" |
| 24 #include "extensions/common/extension_builder.h" | |
| 25 #include "extensions/common/value_builder.h" | |
| 26 #include "ui/base/dragdrop/drop_target_event.h" | 20 #include "ui/base/dragdrop/drop_target_event.h" |
| 27 #include "ui/base/dragdrop/os_exchange_data.h" | 21 #include "ui/base/dragdrop/os_exchange_data.h" |
| 28 #include "ui/gfx/geometry/point.h" | 22 #include "ui/gfx/geometry/point.h" |
| 29 #include "ui/views/view.h" | 23 #include "ui/views/view.h" |
| 30 | 24 |
| 31 using extensions::Extension; | 25 // TODO(devlin): Continue moving any tests that should be platform independent |
| 32 | 26 // from this file to the crossplatform tests in |
| 33 namespace { | 27 // chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc. |
| 34 | |
| 35 scoped_refptr<const Extension> CreateExtension(const std::string& name, | |
| 36 bool has_browser_action) { | |
| 37 extensions::DictionaryBuilder manifest; | |
| 38 manifest.Set("name", name). | |
| 39 Set("description", "an extension"). | |
| 40 Set("manifest_version", 2). | |
| 41 Set("version", "1.0"); | |
| 42 if (has_browser_action) | |
| 43 manifest.Set("browser_action", extensions::DictionaryBuilder().Pass()); | |
| 44 return extensions::ExtensionBuilder(). | |
| 45 SetManifest(manifest.Pass()). | |
| 46 SetID(crx_file::id_util::GenerateId(name)). | |
| 47 Build(); | |
| 48 } | |
| 49 | |
| 50 } // namespace | |
| 51 | |
| 52 class BrowserActionsContainerTest : public ExtensionBrowserTest { | |
| 53 public: | |
| 54 BrowserActionsContainerTest() { | |
| 55 } | |
| 56 virtual ~BrowserActionsContainerTest() {} | |
| 57 | |
| 58 protected: | |
| 59 virtual void SetUpCommandLine(base::CommandLine* command_line) override { | |
| 60 BrowserActionsContainer::disable_animations_during_testing_ = true; | |
| 61 ExtensionBrowserTest::SetUpCommandLine(command_line); | |
| 62 } | |
| 63 | |
| 64 virtual void SetUpOnMainThread() override { | |
| 65 ExtensionBrowserTest::SetUpOnMainThread(); | |
| 66 browser_actions_bar_.reset(new BrowserActionTestUtil(browser())); | |
| 67 } | |
| 68 | |
| 69 virtual void TearDownOnMainThread() override { | |
| 70 BrowserActionsContainer::disable_animations_during_testing_ = false; | |
| 71 ExtensionBrowserTest::TearDownOnMainThread(); | |
| 72 } | |
| 73 | |
| 74 BrowserActionTestUtil* browser_actions_bar() { | |
| 75 return browser_actions_bar_.get(); | |
| 76 } | |
| 77 | |
| 78 // Creates three different extensions, each with a browser action, and adds | |
| 79 // them to associated ExtensionService. These can then be accessed via | |
| 80 // extension_[a|b|c](). | |
| 81 void LoadExtensions(); | |
| 82 | |
| 83 const Extension* extension_a() const { return extension_a_.get(); } | |
| 84 const Extension* extension_b() const { return extension_b_.get(); } | |
| 85 const Extension* extension_c() const { return extension_c_.get(); } | |
| 86 | |
| 87 private: | |
| 88 scoped_ptr<BrowserActionTestUtil> browser_actions_bar_; | |
| 89 | |
| 90 // Extensions with browser actions used for testing. | |
| 91 scoped_refptr<const Extension> extension_a_; | |
| 92 scoped_refptr<const Extension> extension_b_; | |
| 93 scoped_refptr<const Extension> extension_c_; | |
| 94 }; | |
| 95 | |
| 96 void BrowserActionsContainerTest::LoadExtensions() { | |
| 97 // Create three extensions with browser actions. | |
| 98 extension_a_ = CreateExtension("alpha", true); | |
| 99 extension_b_ = CreateExtension("beta", true); | |
| 100 extension_c_ = CreateExtension("gamma", true); | |
| 101 | |
| 102 const Extension* extensions[] = | |
| 103 { extension_a(), extension_b(), extension_c() }; | |
| 104 extensions::ExtensionRegistry* registry = | |
| 105 extensions::ExtensionRegistry::Get(profile()); | |
| 106 // Add each, and verify that it is both correctly added to the extension | |
| 107 // registry and to the browser actions container. | |
| 108 for (size_t i = 0; i < arraysize(extensions); ++i) { | |
| 109 extension_service()->AddExtension(extensions[i]); | |
| 110 EXPECT_TRUE(registry->enabled_extensions().GetByID(extensions[i]->id())) << | |
| 111 extensions[i]->name(); | |
| 112 EXPECT_EQ(static_cast<int>(i + 1), | |
| 113 browser_actions_bar_->NumberOfBrowserActions()); | |
| 114 EXPECT_TRUE(browser_actions_bar_->HasIcon(i)); | |
| 115 EXPECT_EQ(static_cast<int>(i + 1), | |
| 116 browser_actions_bar()->VisibleBrowserActions()); | |
| 117 } | |
| 118 } | |
| 119 | |
| 120 // Test the basic functionality. | |
| 121 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, Basic) { | |
| 122 // Load an extension with no browser action. | |
| 123 extension_service()->AddExtension(CreateExtension("alpha", false).get()); | |
| 124 // This extension should not be in the model (has no browser action). | |
| 125 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions()); | |
| 126 | |
| 127 // Load an extension with a browser action. | |
| 128 extension_service()->AddExtension(CreateExtension("beta", true).get()); | |
| 129 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); | |
| 130 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); | |
| 131 | |
| 132 // Unload the extension. | |
| 133 std::string id = browser_actions_bar()->GetExtensionId(0); | |
| 134 UnloadExtension(id); | |
| 135 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions()); | |
| 136 } | |
| 137 | 28 |
| 138 // Test moving various browser actions. This is not to check the logic of the | 29 // Test moving various browser actions. This is not to check the logic of the |
| 139 // move (that's in the toolbar model tests), but just to check our ui. | 30 // move (that's in the toolbar model tests), but just to check our ui. |
| 140 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, MoveBrowserActions) { | 31 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, MoveBrowserActions) { |
| 141 LoadExtensions(); | 32 LoadExtensions(); |
| 142 | 33 |
| 143 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 34 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 144 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); | 35 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); |
| 145 | 36 |
| 146 extensions::ExtensionToolbarModel* model = | 37 extensions::ExtensionToolbarModel* model = |
| 147 extensions::ExtensionToolbarModel::Get(profile()); | 38 extensions::ExtensionToolbarModel::Get(profile()); |
| 148 ASSERT_TRUE(model); | 39 ASSERT_TRUE(model); |
| 149 | 40 |
| 150 // Order is now A B C. | 41 // Order is now A B C. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 167 // Move B to middle position. Order is C B A. | 58 // Move B to middle position. Order is C B A. |
| 168 model->MoveExtensionIcon(extension_b(), 1); | 59 model->MoveExtensionIcon(extension_b(), 1); |
| 169 EXPECT_EQ(extension_c()->id(), browser_actions_bar()->GetExtensionId(0)); | 60 EXPECT_EQ(extension_c()->id(), browser_actions_bar()->GetExtensionId(0)); |
| 170 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); | 61 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); |
| 171 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(2)); | 62 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(2)); |
| 172 } | 63 } |
| 173 | 64 |
| 174 // Test that dragging browser actions works, and that dragging a browser action | 65 // Test that dragging browser actions works, and that dragging a browser action |
| 175 // from the overflow menu results in it "popping" out (growing the container | 66 // from the overflow menu results in it "popping" out (growing the container |
| 176 // size by 1), rather than just reordering the extensions. | 67 // size by 1), rather than just reordering the extensions. |
| 177 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, DragBrowserActions) { | 68 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, DragBrowserActions) { |
| 178 LoadExtensions(); | 69 LoadExtensions(); |
| 179 | 70 |
| 180 // Sanity check: All extensions showing; order is A B C. | 71 // Sanity check: All extensions showing; order is A B C. |
| 181 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 72 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 182 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); | 73 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); |
| 183 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); | 74 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); |
| 184 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); | 75 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); |
| 185 EXPECT_EQ(extension_c()->id(), browser_actions_bar()->GetExtensionId(2)); | 76 EXPECT_EQ(extension_c()->id(), browser_actions_bar()->GetExtensionId(2)); |
| 186 | 77 |
| 187 BrowserActionsContainer* container = | 78 BrowserActionsContainer* container = |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 EXPECT_EQ(3u, container->VisibleBrowserActions()); | 154 EXPECT_EQ(3u, container->VisibleBrowserActions()); |
| 264 EXPECT_FALSE(container->chevron()->visible()); | 155 EXPECT_FALSE(container->chevron()->visible()); |
| 265 EXPECT_EQ(-1, model->GetVisibleIconCount()); | 156 EXPECT_EQ(-1, model->GetVisibleIconCount()); |
| 266 | 157 |
| 267 // TODO(devlin): Ideally, we'd also have tests for dragging from the legacy | 158 // TODO(devlin): Ideally, we'd also have tests for dragging from the legacy |
| 268 // overflow menu (i.e., chevron) to the main bar, but this requires either | 159 // overflow menu (i.e., chevron) to the main bar, but this requires either |
| 269 // having a fairly complicated interactive UI test or finding a good way to | 160 // having a fairly complicated interactive UI test or finding a good way to |
| 270 // mock up the BrowserActionOverflowMenuController. | 161 // mock up the BrowserActionOverflowMenuController. |
| 271 } | 162 } |
| 272 | 163 |
| 273 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, Visibility) { | 164 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, Visibility) { |
| 274 LoadExtensions(); | 165 LoadExtensions(); |
| 275 | 166 |
| 276 // Change container to show only one action, rest in overflow: A, [B, C]. | 167 // Change container to show only one action, rest in overflow: A, [B, C]. |
| 277 browser_actions_bar()->SetIconVisibilityCount(1); | 168 browser_actions_bar()->SetIconVisibilityCount(1); |
| 278 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); | 169 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); |
| 279 | 170 |
| 280 // Disable extension A (should disappear). State becomes: B [C]. | 171 // Disable extension A (should disappear). State becomes: B [C]. |
| 281 DisableExtension(extension_a()->id()); | 172 DisableExtension(extension_a()->id()); |
| 282 EXPECT_EQ(2, browser_actions_bar()->NumberOfBrowserActions()); | 173 EXPECT_EQ(2, browser_actions_bar()->NumberOfBrowserActions()); |
| 283 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); | 174 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 // should be visible. | 254 // should be visible. |
| 364 EnableExtension(extension_c()->id()); | 255 EnableExtension(extension_c()->id()); |
| 365 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); | 256 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); |
| 366 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); | 257 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); |
| 367 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); | 258 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); |
| 368 EXPECT_TRUE(container->chevron()->visible()); | 259 EXPECT_TRUE(container->chevron()->visible()); |
| 369 } | 260 } |
| 370 | 261 |
| 371 // Test that changes performed in one container affect containers in other | 262 // Test that changes performed in one container affect containers in other |
| 372 // windows so that it is consistent. | 263 // windows so that it is consistent. |
| 373 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, MultipleWindows) { | 264 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, MultipleWindows) { |
| 374 LoadExtensions(); | 265 LoadExtensions(); |
| 375 BrowserActionsContainer* first = | 266 BrowserActionsContainer* first = |
| 376 BrowserView::GetBrowserViewForBrowser(browser())->toolbar()-> | 267 BrowserView::GetBrowserViewForBrowser(browser())->toolbar()-> |
| 377 browser_actions(); | 268 browser_actions(); |
| 378 | 269 |
| 379 // Create a second browser. | 270 // Create a second browser. |
| 380 Browser* second_browser = new Browser( | 271 Browser* second_browser = new Browser( |
| 381 Browser::CreateParams(profile(), browser()->host_desktop_type())); | 272 Browser::CreateParams(profile(), browser()->host_desktop_type())); |
| 382 BrowserActionsContainer* second = | 273 BrowserActionsContainer* second = |
| 383 BrowserView::GetBrowserViewForBrowser(second_browser)->toolbar()-> | 274 BrowserView::GetBrowserViewForBrowser(second_browser)->toolbar()-> |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 EXPECT_EQ(extension_c(), first->GetBrowserActionViewAt(2u)->extension()); | 309 EXPECT_EQ(extension_c(), first->GetBrowserActionViewAt(2u)->extension()); |
| 419 EXPECT_EQ(extension_c(), second->GetBrowserActionViewAt(2u)->extension()); | 310 EXPECT_EQ(extension_c(), second->GetBrowserActionViewAt(2u)->extension()); |
| 420 | 311 |
| 421 // Next, simulate a resize by shrinking the container. | 312 // Next, simulate a resize by shrinking the container. |
| 422 first->OnResize(1, true); | 313 first->OnResize(1, true); |
| 423 // The first and second container should each have resized. | 314 // The first and second container should each have resized. |
| 424 EXPECT_EQ(2u, first->VisibleBrowserActions()); | 315 EXPECT_EQ(2u, first->VisibleBrowserActions()); |
| 425 EXPECT_EQ(2u, second->VisibleBrowserActions()); | 316 EXPECT_EQ(2u, second->VisibleBrowserActions()); |
| 426 } | 317 } |
| 427 | 318 |
| 428 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, ForceHide) { | 319 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, ForceHide) { |
| 429 // Load extension A (with a browser action). | 320 LoadExtensions(); |
| 430 extension_service()->AddExtension(CreateExtension("alpha", true).get()); | |
| 431 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); | |
| 432 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); | |
| 433 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); | |
| 434 std::string idA = browser_actions_bar()->GetExtensionId(0); | |
| 435 | 321 |
| 436 // Force hide this browser action. | 322 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 323 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); |
| 324 // Force hide one of the extensions' browser action. |
| 437 extensions::ExtensionActionAPI::SetBrowserActionVisibility( | 325 extensions::ExtensionActionAPI::SetBrowserActionVisibility( |
| 438 extensions::ExtensionPrefs::Get(browser()->profile()), idA, false); | 326 extensions::ExtensionPrefs::Get(browser()->profile()), |
| 439 EXPECT_EQ(0, browser_actions_bar()->VisibleBrowserActions()); | 327 extension_a()->id(), |
| 328 false); |
| 329 // The browser action for Extension A should be removed. |
| 330 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); |
| 331 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(0)); |
| 440 } | 332 } |
| 441 | 333 |
| 442 // Test that the BrowserActionsContainer responds correctly when the underlying | 334 // Test that the BrowserActionsContainer responds correctly when the underlying |
| 443 // model enters highlight mode, and that browser actions are undraggable in | 335 // model enters highlight mode, and that browser actions are undraggable in |
| 444 // highlight mode. (Highlight mode itself it tested more thoroughly in the | 336 // highlight mode. (Highlight mode itself it tested more thoroughly in the |
| 445 // ExtensionToolbarModel browsertests). | 337 // ExtensionToolbarModel browsertests). |
| 446 IN_PROC_BROWSER_TEST_F(BrowserActionsContainerTest, HighlightMode) { | 338 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, HighlightMode) { |
| 447 LoadExtensions(); | 339 LoadExtensions(); |
| 448 | 340 |
| 449 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 341 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 450 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); | 342 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); |
| 451 | 343 |
| 452 BrowserActionsContainer* container = browser() | 344 BrowserActionsContainer* container = browser() |
| 453 ->window() | 345 ->window() |
| 454 ->GetBrowserWindowTesting() | 346 ->GetBrowserWindowTesting() |
| 455 ->GetToolbarView() | 347 ->GetToolbarView() |
| 456 ->browser_actions(); | 348 ->browser_actions(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 479 | 371 |
| 480 // We should go back to normal after leaving highlight mode. | 372 // We should go back to normal after leaving highlight mode. |
| 481 model->StopHighlighting(); | 373 model->StopHighlighting(); |
| 482 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 374 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
| 483 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); | 375 EXPECT_EQ(3, browser_actions_bar()->NumberOfBrowserActions()); |
| 484 action_view = container->GetBrowserActionViewAt(0); | 376 action_view = container->GetBrowserActionViewAt(0); |
| 485 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); | 377 EXPECT_TRUE(container->CanStartDragForView(action_view, point, point)); |
| 486 } | 378 } |
| 487 | 379 |
| 488 // Test the behavior of the overflow container for Extension Actions. | 380 // Test the behavior of the overflow container for Extension Actions. |
| 489 class BrowserActionsContainerOverflowTest : public BrowserActionsContainerTest { | 381 class BrowserActionsContainerOverflowTest |
| 382 : public BrowserActionsBarBrowserTest { |
| 490 public: | 383 public: |
| 491 BrowserActionsContainerOverflowTest() : main_bar_(NULL), model_(NULL) { | 384 BrowserActionsContainerOverflowTest() : main_bar_(NULL), model_(NULL) { |
| 492 } | 385 } |
| 493 virtual ~BrowserActionsContainerOverflowTest() { | 386 virtual ~BrowserActionsContainerOverflowTest() { |
| 494 } | 387 } |
| 495 | 388 |
| 496 protected: | 389 protected: |
| 497 // Returns true if the order of the BrowserActionViews in |main_bar_| | 390 // Returns true if the order of the BrowserActionViews in |main_bar_| |
| 498 // and |overflow_bar_| match. | 391 // and |overflow_bar_| match. |
| 499 bool ViewOrdersMatch(); | 392 bool ViewOrdersMatch(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 525 extensions::ExtensionToolbarModel* model_; | 418 extensions::ExtensionToolbarModel* model_; |
| 526 | 419 |
| 527 // Enable the feature redesign switch. | 420 // Enable the feature redesign switch. |
| 528 scoped_ptr<extensions::FeatureSwitch::ScopedOverride> enable_redesign_; | 421 scoped_ptr<extensions::FeatureSwitch::ScopedOverride> enable_redesign_; |
| 529 | 422 |
| 530 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainerOverflowTest); | 423 DISALLOW_COPY_AND_ASSIGN(BrowserActionsContainerOverflowTest); |
| 531 }; | 424 }; |
| 532 | 425 |
| 533 void BrowserActionsContainerOverflowTest::SetUpCommandLine( | 426 void BrowserActionsContainerOverflowTest::SetUpCommandLine( |
| 534 base::CommandLine* command_line) { | 427 base::CommandLine* command_line) { |
| 535 BrowserActionsContainerTest::SetUpCommandLine(command_line); | 428 BrowserActionsBarBrowserTest::SetUpCommandLine(command_line); |
| 536 enable_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( | 429 enable_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( |
| 537 extensions::FeatureSwitch::extension_action_redesign(), | 430 extensions::FeatureSwitch::extension_action_redesign(), |
| 538 true)); | 431 true)); |
| 539 } | 432 } |
| 540 | 433 |
| 541 void BrowserActionsContainerOverflowTest::SetUpOnMainThread() { | 434 void BrowserActionsContainerOverflowTest::SetUpOnMainThread() { |
| 542 BrowserActionsContainerTest::SetUpOnMainThread(); | 435 BrowserActionsBarBrowserTest::SetUpOnMainThread(); |
| 543 main_bar_ = BrowserView::GetBrowserViewForBrowser(browser()) | 436 main_bar_ = BrowserView::GetBrowserViewForBrowser(browser()) |
| 544 ->toolbar()->browser_actions(); | 437 ->toolbar()->browser_actions(); |
| 545 overflow_bar_.reset(new BrowserActionsContainer(browser(), NULL, main_bar_)); | 438 overflow_bar_.reset(new BrowserActionsContainer(browser(), NULL, main_bar_)); |
| 546 overflow_bar_->set_owned_by_client(); | 439 overflow_bar_->set_owned_by_client(); |
| 547 model_ = extensions::ExtensionToolbarModel::Get(profile()); | 440 model_ = extensions::ExtensionToolbarModel::Get(profile()); |
| 548 } | 441 } |
| 549 | 442 |
| 550 void BrowserActionsContainerOverflowTest::TearDownOnMainThread() { | 443 void BrowserActionsContainerOverflowTest::TearDownOnMainThread() { |
| 551 overflow_bar_.reset(); | 444 overflow_bar_.reset(); |
| 552 enable_redesign_.reset(); | 445 enable_redesign_.reset(); |
| 553 BrowserActionsContainerTest::TearDownOnMainThread(); | 446 BrowserActionsBarBrowserTest::TearDownOnMainThread(); |
| 554 } | 447 } |
| 555 | 448 |
| 556 bool BrowserActionsContainerOverflowTest::ViewOrdersMatch() { | 449 bool BrowserActionsContainerOverflowTest::ViewOrdersMatch() { |
| 557 if (main_bar_->num_browser_actions() != | 450 if (main_bar_->num_browser_actions() != |
| 558 overflow_bar_->num_browser_actions()) | 451 overflow_bar_->num_browser_actions()) |
| 559 return false; | 452 return false; |
| 560 for (size_t i = 0; i < main_bar_->num_browser_actions(); ++i) { | 453 for (size_t i = 0; i < main_bar_->num_browser_actions(); ++i) { |
| 561 if (main_bar_->GetBrowserActionViewAt(i)->extension() != | 454 if (main_bar_->GetBrowserActionViewAt(i)->extension() != |
| 562 overflow_bar_->GetBrowserActionViewAt(i)->extension()) | 455 overflow_bar_->GetBrowserActionViewAt(i)->extension()) |
| 563 return false; | 456 return false; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 702 | 595 |
| 703 main_bar()->OnDragUpdated(target_event3); | 596 main_bar()->OnDragUpdated(target_event3); |
| 704 main_bar()->OnPerformDrop(target_event3); | 597 main_bar()->OnPerformDrop(target_event3); |
| 705 | 598 |
| 706 // Order should be A C B, and there should be no extensions in overflow. | 599 // Order should be A C B, and there should be no extensions in overflow. |
| 707 EXPECT_EQ(extension_a(), main_bar()->GetBrowserActionViewAt(0)->extension()); | 600 EXPECT_EQ(extension_a(), main_bar()->GetBrowserActionViewAt(0)->extension()); |
| 708 EXPECT_EQ(extension_c(), main_bar()->GetBrowserActionViewAt(1)->extension()); | 601 EXPECT_EQ(extension_c(), main_bar()->GetBrowserActionViewAt(1)->extension()); |
| 709 EXPECT_EQ(extension_b(), main_bar()->GetBrowserActionViewAt(2)->extension()); | 602 EXPECT_EQ(extension_b(), main_bar()->GetBrowserActionViewAt(2)->extension()); |
| 710 VerifyVisibleCount(3u); | 603 VerifyVisibleCount(3u); |
| 711 } | 604 } |
| OLD | NEW |