OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/toolbar/browser_actions_bar_browsertest.h" | 5 #include "chrome/browser/ui/toolbar/browser_actions_bar_browsertest.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 base::CommandLine* command_line) { | 70 base::CommandLine* command_line) { |
71 ExtensionBrowserTest::SetUpCommandLine(command_line); | 71 ExtensionBrowserTest::SetUpCommandLine(command_line); |
72 ToolbarActionsBar::disable_animations_for_testing_ = true; | 72 ToolbarActionsBar::disable_animations_for_testing_ = true; |
73 // We need to disable Media Router since having Media Router enabled will | 73 // We need to disable Media Router since having Media Router enabled will |
74 // result in auto-enabling the redesign and breaking the test. | 74 // result in auto-enabling the redesign and breaking the test. |
75 override_media_router_.reset(new extensions::FeatureSwitch::ScopedOverride( | 75 override_media_router_.reset(new extensions::FeatureSwitch::ScopedOverride( |
76 extensions::FeatureSwitch::media_router(), false)); | 76 extensions::FeatureSwitch::media_router(), false)); |
77 // These tests are deliberately testing behavior without the redesign. | 77 // These tests are deliberately testing behavior without the redesign. |
78 // Forcefully disable it. | 78 // Forcefully disable it. |
79 override_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( | 79 override_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( |
80 extensions::FeatureSwitch::extension_action_redesign(), false)); | 80 extensions::FeatureSwitch::extension_action_redesign(), true)); |
81 } | 81 } |
82 | 82 |
83 void BrowserActionsBarBrowserTest::SetUpOnMainThread() { | 83 void BrowserActionsBarBrowserTest::SetUpOnMainThread() { |
84 ExtensionBrowserTest::SetUpOnMainThread(); | 84 ExtensionBrowserTest::SetUpOnMainThread(); |
85 browser_actions_bar_.reset(new BrowserActionTestUtil(browser())); | 85 browser_actions_bar_.reset(new BrowserActionTestUtil(browser())); |
86 toolbar_model_ = ToolbarActionsModel::Get(profile()); | 86 toolbar_model_ = ToolbarActionsModel::Get(profile()); |
87 } | 87 } |
88 | 88 |
89 void BrowserActionsBarBrowserTest::TearDownOnMainThread() { | 89 void BrowserActionsBarBrowserTest::TearDownOnMainThread() { |
90 ToolbarActionsBar::disable_animations_for_testing_ = false; | 90 ToolbarActionsBar::disable_animations_for_testing_ = false; |
(...skipping 17 matching lines...) Expand all Loading... |
108 EXPECT_TRUE(registry->enabled_extensions().GetByID(extensions[i]->id())) << | 108 EXPECT_TRUE(registry->enabled_extensions().GetByID(extensions[i]->id())) << |
109 extensions[i]->name(); | 109 extensions[i]->name(); |
110 EXPECT_EQ(static_cast<int>(i + 1), | 110 EXPECT_EQ(static_cast<int>(i + 1), |
111 browser_actions_bar_->NumberOfBrowserActions()); | 111 browser_actions_bar_->NumberOfBrowserActions()); |
112 EXPECT_TRUE(browser_actions_bar_->HasIcon(i)); | 112 EXPECT_TRUE(browser_actions_bar_->HasIcon(i)); |
113 EXPECT_EQ(static_cast<int>(i + 1), | 113 EXPECT_EQ(static_cast<int>(i + 1), |
114 browser_actions_bar()->VisibleBrowserActions()); | 114 browser_actions_bar()->VisibleBrowserActions()); |
115 } | 115 } |
116 } | 116 } |
117 | 117 |
118 // BrowserActionsBarRedesignBrowserTest: | 118 // BrowserActionsBarLegacyBrowserTest: |
119 | 119 |
120 BrowserActionsBarRedesignBrowserTest::BrowserActionsBarRedesignBrowserTest() { | 120 BrowserActionsBarLegacyBrowserTest::BrowserActionsBarLegacyBrowserTest() { |
121 } | 121 } |
122 | 122 |
123 BrowserActionsBarRedesignBrowserTest::~BrowserActionsBarRedesignBrowserTest() { | 123 BrowserActionsBarLegacyBrowserTest::~BrowserActionsBarLegacyBrowserTest() { |
124 } | 124 } |
125 | 125 |
126 void BrowserActionsBarRedesignBrowserTest::SetUpCommandLine( | 126 void BrowserActionsBarLegacyBrowserTest::SetUpCommandLine( |
127 base::CommandLine* command_line) { | 127 base::CommandLine* command_line) { |
128 BrowserActionsBarBrowserTest::SetUpCommandLine(command_line); | 128 BrowserActionsBarBrowserTest::SetUpCommandLine(command_line); |
129 // Override to force the redesign. Completely clear the previous override | 129 // Override to force the redesign. Completely clear the previous override |
130 // first, since doing so resets the value of the switch. | 130 // first, since doing so resets the value of the switch. |
131 override_redesign_.reset(); | 131 override_redesign_.reset(); |
132 override_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( | 132 override_redesign_.reset(new extensions::FeatureSwitch::ScopedOverride( |
133 extensions::FeatureSwitch::extension_action_redesign(), true)); | 133 extensions::FeatureSwitch::extension_action_redesign(), false)); |
134 } | 134 } |
135 | 135 |
136 // Test the basic functionality. | 136 // Test the basic functionality. |
137 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, Basic) { | 137 IN_PROC_BROWSER_TEST_F(BrowserActionsBarLegacyBrowserTest, Basic) { |
138 // Load an extension with no browser action. | 138 // Load an extension with no browser action. |
139 extension_service()->AddExtension(CreateExtension("alpha", false).get()); | 139 extension_service()->AddExtension(CreateExtension("alpha", false).get()); |
140 // This extension should not be in the model (has no browser action). | 140 // This extension should not be in the model (has no browser action). |
141 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions()); | 141 EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions()); |
142 | 142 |
143 // Load an extension with a browser action. | 143 // Load an extension with a browser action. |
144 extension_service()->AddExtension(CreateExtension("beta", true).get()); | 144 extension_service()->AddExtension(CreateExtension("beta", true).get()); |
145 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); | 145 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); |
146 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); | 146 EXPECT_TRUE(browser_actions_bar()->HasIcon(0)); |
147 | 147 |
(...skipping 30 matching lines...) Expand all Loading... |
178 | 178 |
179 // Move B to middle position. Order is C B A. | 179 // Move B to middle position. Order is C B A. |
180 toolbar_model()->MoveActionIcon(extension_b()->id(), 1); | 180 toolbar_model()->MoveActionIcon(extension_b()->id(), 1); |
181 EXPECT_EQ(extension_c()->id(), browser_actions_bar()->GetExtensionId(0)); | 181 EXPECT_EQ(extension_c()->id(), browser_actions_bar()->GetExtensionId(0)); |
182 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); | 182 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); |
183 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(2)); | 183 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(2)); |
184 } | 184 } |
185 | 185 |
186 // Test that explicitly hiding an extension action results in it disappearing | 186 // Test that explicitly hiding an extension action results in it disappearing |
187 // from the browser actions bar. | 187 // from the browser actions bar. |
188 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, ForceHide) { | 188 IN_PROC_BROWSER_TEST_F(BrowserActionsBarLegacyBrowserTest, ForceHide) { |
189 LoadExtensions(); | 189 LoadExtensions(); |
190 | 190 |
191 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 191 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
192 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); | 192 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); |
193 // Force hide one of the extensions' browser action. | 193 // Force hide one of the extensions' browser action. |
194 extensions::ExtensionActionAPI::Get(browser()->profile())-> | 194 extensions::ExtensionActionAPI::Get(browser()->profile())-> |
195 SetBrowserActionVisibility(extension_a()->id(), false); | 195 SetBrowserActionVisibility(extension_a()->id(), false); |
196 // The browser action for Extension A should be removed. | 196 // The browser action for Extension A should be removed. |
197 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); | 197 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); |
198 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(0)); | 198 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(0)); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 // overflow. | 288 // overflow. |
289 EnableExtension(extension_c()->id()); | 289 EnableExtension(extension_c()->id()); |
290 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); | 290 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); |
291 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); | 291 EXPECT_EQ(extension_a()->id(), browser_actions_bar()->GetExtensionId(0)); |
292 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); | 292 EXPECT_EQ(extension_b()->id(), browser_actions_bar()->GetExtensionId(1)); |
293 EXPECT_TRUE(toolbar_actions_bar->NeedsOverflow()); | 293 EXPECT_TRUE(toolbar_actions_bar->NeedsOverflow()); |
294 } | 294 } |
295 | 295 |
296 // Test that, with the toolbar action redesign, actions that want to run have | 296 // Test that, with the toolbar action redesign, actions that want to run have |
297 // the proper appearance. | 297 // the proper appearance. |
298 IN_PROC_BROWSER_TEST_F(BrowserActionsBarRedesignBrowserTest, | 298 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, |
299 TestUiForActionsWantToRun) { | 299 TestUiForActionsWantToRun) { |
300 LoadExtensions(); | 300 LoadExtensions(); |
301 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); | 301 EXPECT_EQ(3, browser_actions_bar()->VisibleBrowserActions()); |
302 | 302 |
303 // Load an extension with a page action. | 303 // Load an extension with a page action. |
304 scoped_refptr<const extensions::Extension> page_action_extension = | 304 scoped_refptr<const extensions::Extension> page_action_extension = |
305 extensions::extension_action_test_util::CreateActionExtension( | 305 extensions::extension_action_test_util::CreateActionExtension( |
306 "page action", extensions::extension_action_test_util::PAGE_ACTION); | 306 "page action", extensions::extension_action_test_util::PAGE_ACTION); |
307 extension_service()->AddExtension(page_action_extension.get()); | 307 extension_service()->AddExtension(page_action_extension.get()); |
308 | 308 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, | 405 extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, |
406 content::NotificationService::AllSources()); | 406 content::NotificationService::AllSources()); |
407 browser_actions_bar()->Press(1); | 407 browser_actions_bar()->Press(1); |
408 observer.Wait(); | 408 observer.Wait(); |
409 EXPECT_FALSE(browser_actions_bar()->HasPopup()); | 409 EXPECT_FALSE(browser_actions_bar()->HasPopup()); |
410 EXPECT_FALSE(first_controller->is_showing_popup()); | 410 EXPECT_FALSE(first_controller->is_showing_popup()); |
411 EXPECT_FALSE(second_controller->is_showing_popup()); | 411 EXPECT_FALSE(second_controller->is_showing_popup()); |
412 } | 412 } |
413 } | 413 } |
414 | 414 |
415 IN_PROC_BROWSER_TEST_F(BrowserActionsBarRedesignBrowserTest, | 415 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, |
416 OverflowedBrowserActionPopupTest) { | 416 OverflowedBrowserActionPopupTest) { |
417 std::unique_ptr<BrowserActionTestUtil> overflow_bar = | 417 std::unique_ptr<BrowserActionTestUtil> overflow_bar = |
418 browser_actions_bar()->CreateOverflowBar(); | 418 browser_actions_bar()->CreateOverflowBar(); |
419 | 419 |
420 // Load up two extensions that have browser action popups. | 420 // Load up two extensions that have browser action popups. |
421 base::FilePath data_dir = | 421 base::FilePath data_dir = |
422 test_data_dir_.AppendASCII("api_test").AppendASCII("browser_action"); | 422 test_data_dir_.AppendASCII("api_test").AppendASCII("browser_action"); |
423 const extensions::Extension* first_extension = | 423 const extensions::Extension* first_extension = |
424 LoadExtension(data_dir.AppendASCII("open_popup")); | 424 LoadExtension(data_dir.AppendASCII("open_popup")); |
425 ASSERT_TRUE(first_extension); | 425 ASSERT_TRUE(first_extension); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 EXPECT_EQ(2, overflow_bar->VisibleBrowserActions()); | 492 EXPECT_EQ(2, overflow_bar->VisibleBrowserActions()); |
493 base::RunLoop().RunUntilIdle(); | 493 base::RunLoop().RunUntilIdle(); |
494 EXPECT_EQ(first_controller_main->GetId(), | 494 EXPECT_EQ(first_controller_main->GetId(), |
495 browser_actions_bar()->GetExtensionId(0)); | 495 browser_actions_bar()->GetExtensionId(0)); |
496 EXPECT_EQ(second_controller_main->GetId(), | 496 EXPECT_EQ(second_controller_main->GetId(), |
497 browser_actions_bar()->GetExtensionId(1)); | 497 browser_actions_bar()->GetExtensionId(1)); |
498 } | 498 } |
499 | 499 |
500 // Test removing an extension that has an popup showing. | 500 // Test removing an extension that has an popup showing. |
501 // Regression test for crbug.com/599467. | 501 // Regression test for crbug.com/599467. |
502 IN_PROC_BROWSER_TEST_F(BrowserActionsBarRedesignBrowserTest, | 502 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, |
503 OverflowedBrowserActionPopupTestRemoval) { | 503 OverflowedBrowserActionPopupTestRemoval) { |
504 std::unique_ptr<BrowserActionTestUtil> overflow_bar = | 504 std::unique_ptr<BrowserActionTestUtil> overflow_bar = |
505 browser_actions_bar()->CreateOverflowBar(); | 505 browser_actions_bar()->CreateOverflowBar(); |
506 | 506 |
507 // Install an extension and shrink the visible count to zero so the extension | 507 // Install an extension and shrink the visible count to zero so the extension |
508 // is overflowed. | 508 // is overflowed. |
509 base::FilePath data_dir = | 509 base::FilePath data_dir = |
510 test_data_dir_.AppendASCII("api_test").AppendASCII("browser_action"); | 510 test_data_dir_.AppendASCII("api_test").AppendASCII("browser_action"); |
511 const extensions::Extension* extension = | 511 const extensions::Extension* extension = |
512 LoadExtension(data_dir.AppendASCII("open_popup")); | 512 LoadExtension(data_dir.AppendASCII("open_popup")); |
(...skipping 19 matching lines...) Expand all Loading... |
532 extensions::UnloadedExtensionInfo::REASON_UNINSTALL); | 532 extensions::UnloadedExtensionInfo::REASON_UNINSTALL); |
533 observer.Wait(); | 533 observer.Wait(); |
534 } | 534 } |
535 | 535 |
536 EXPECT_EQ(0, browser_actions_bar()->VisibleBrowserActions()); | 536 EXPECT_EQ(0, browser_actions_bar()->VisibleBrowserActions()); |
537 EXPECT_EQ(0, overflow_bar->VisibleBrowserActions()); | 537 EXPECT_EQ(0, overflow_bar->VisibleBrowserActions()); |
538 EXPECT_EQ(0u, toolbar_model()->toolbar_items().size()); | 538 EXPECT_EQ(0u, toolbar_model()->toolbar_items().size()); |
539 } | 539 } |
540 | 540 |
541 // Test that page action popups work with the toolbar redesign. | 541 // Test that page action popups work with the toolbar redesign. |
542 IN_PROC_BROWSER_TEST_F(BrowserActionsBarRedesignBrowserTest, | 542 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, |
543 PageActionPopupsTest) { | 543 PageActionPopupsTest) { |
544 ExtensionTestMessageListener listener("ready", false); | 544 ExtensionTestMessageListener listener("ready", false); |
545 const extensions::Extension* page_action_extension = | 545 const extensions::Extension* page_action_extension = |
546 LoadExtension(test_data_dir_.AppendASCII("trigger_actions"). | 546 LoadExtension(test_data_dir_.AppendASCII("trigger_actions"). |
547 AppendASCII("page_action_popup")); | 547 AppendASCII("page_action_popup")); |
548 ASSERT_TRUE(page_action_extension); | 548 ASSERT_TRUE(page_action_extension); |
549 listener.WaitUntilSatisfied(); | 549 listener.WaitUntilSatisfied(); |
550 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); | 550 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); |
551 EXPECT_EQ(page_action_extension->id(), | 551 EXPECT_EQ(page_action_extension->id(), |
552 browser_actions_bar()->GetExtensionId(0)); | 552 browser_actions_bar()->GetExtensionId(0)); |
553 browser_actions_bar()->Press(0); | 553 browser_actions_bar()->Press(0); |
554 base::RunLoop().RunUntilIdle(); | 554 base::RunLoop().RunUntilIdle(); |
555 EXPECT_TRUE(browser_actions_bar()->HasPopup()); | 555 EXPECT_TRUE(browser_actions_bar()->HasPopup()); |
556 // Cleanup the popup (to avoid having windows open at tear down). | 556 // Cleanup the popup (to avoid having windows open at tear down). |
557 browser_actions_bar()->HidePopup(); | 557 browser_actions_bar()->HidePopup(); |
558 content::RunAllBlockingPoolTasksUntilIdle(); | 558 content::RunAllBlockingPoolTasksUntilIdle(); |
559 EXPECT_FALSE(browser_actions_bar()->HasPopup()); | 559 EXPECT_FALSE(browser_actions_bar()->HasPopup()); |
560 } | 560 } |
561 | 561 |
562 // Test removing an action while it is popped out. | 562 // Test removing an action while it is popped out. |
563 IN_PROC_BROWSER_TEST_F(BrowserActionsBarRedesignBrowserTest, | 563 IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, RemovePoppedOutAction) { |
564 RemovePoppedOutAction) { | |
565 // First, load up three separate extensions and reduce the visible count to | 564 // First, load up three separate extensions and reduce the visible count to |
566 // one (so that two are in the overflow). | 565 // one (so that two are in the overflow). |
567 scoped_refptr<const extensions::Extension> extension1 = | 566 scoped_refptr<const extensions::Extension> extension1 = |
568 extensions::extension_action_test_util::CreateActionExtension( | 567 extensions::extension_action_test_util::CreateActionExtension( |
569 "extension1", extensions::extension_action_test_util::BROWSER_ACTION); | 568 "extension1", extensions::extension_action_test_util::BROWSER_ACTION); |
570 extension_service()->AddExtension(extension1.get()); | 569 extension_service()->AddExtension(extension1.get()); |
571 scoped_refptr<const extensions::Extension> extension2 = | 570 scoped_refptr<const extensions::Extension> extension2 = |
572 extensions::extension_action_test_util::CreateActionExtension( | 571 extensions::extension_action_test_util::CreateActionExtension( |
573 "extension2", extensions::extension_action_test_util::BROWSER_ACTION); | 572 "extension2", extensions::extension_action_test_util::BROWSER_ACTION); |
574 extension_service()->AddExtension(extension2.get()); | 573 extension_service()->AddExtension(extension2.get()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); | 633 EXPECT_EQ(2, browser_actions_bar()->VisibleBrowserActions()); |
635 ASSERT_TRUE(toolbar_actions_bar->popped_out_action()); | 634 ASSERT_TRUE(toolbar_actions_bar->popped_out_action()); |
636 EXPECT_EQ(extension3->id(), | 635 EXPECT_EQ(extension3->id(), |
637 toolbar_actions_bar->popped_out_action()->GetId()); | 636 toolbar_actions_bar->popped_out_action()->GetId()); |
638 extension_service()->UnloadExtension( | 637 extension_service()->UnloadExtension( |
639 extension3->id(), extensions::UnloadedExtensionInfo::REASON_DISABLE); | 638 extension3->id(), extensions::UnloadedExtensionInfo::REASON_DISABLE); |
640 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); | 639 EXPECT_EQ(1, browser_actions_bar()->VisibleBrowserActions()); |
641 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); | 640 EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions()); |
642 EXPECT_FALSE(toolbar_actions_bar->popped_out_action()); | 641 EXPECT_FALSE(toolbar_actions_bar->popped_out_action()); |
643 } | 642 } |
OLD | NEW |