| Index: chrome/browser/extensions/sidebar_browsertest.cc
|
| diff --git a/chrome/browser/extensions/sidebar_browsertest.cc b/chrome/browser/extensions/sidebar_browsertest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e3826c12687d58e220a904731fae4d5005255c34
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/sidebar_browsertest.cc
|
| @@ -0,0 +1,141 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/extensions/browser_action_test_util.h"
|
| +#include "chrome/browser/extensions/extension_action_manager.h"
|
| +#include "chrome/browser/extensions/extension_browsertest.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/extensions/extension_action_view_controller.h"
|
| +#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h"
|
| +#include "chrome/test/base/ui_test_utils.h"
|
| +#include "extensions/common/extension.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +class SidebarBrowserTest : public ExtensionBrowserTest {
|
| + public:
|
| + SidebarBrowserTest() {}
|
| + ~SidebarBrowserTest() override {}
|
| +
|
| + protected:
|
| + // InProcessBrowserTest
|
| + void SetUpOnMainThread() override {
|
| + ExtensionBrowserTest::SetUpOnMainThread();
|
| +
|
| + // Load test sidebar extensions
|
| + firstExtension_ = LoadExtension(test_data_dir_.AppendASCII("sidebar"));
|
| + ASSERT_TRUE(firstExtension_);
|
| +
|
| + secondExtension_ = LoadExtension(test_data_dir_.AppendASCII("sidebar2"));
|
| + ASSERT_TRUE(secondExtension_);
|
| +
|
| + ASSERT_NE(firstExtension_->id(), secondExtension_->id());
|
| +
|
| + browser_action_test_util_.reset(new BrowserActionTestUtil(browser()));
|
| + }
|
| +
|
| + const ExtensionId first_extension_id() { return firstExtension_->id(); }
|
| +
|
| + const ExtensionId second_extension_id() { return secondExtension_->id(); }
|
| +
|
| + void ClickExtensionBrowserAction() {
|
| + browser_action_test_util_.get()->Press(0);
|
| + }
|
| +
|
| + ToolbarActionsBar* toolbar_actions_bar() {
|
| + return browser_action_test_util_->GetToolbarActionsBar();
|
| + }
|
| +
|
| + ExtensionAction* GetBrowserAction(const Extension& extension) {
|
| + return ExtensionActionManager::Get(browser()->profile())
|
| + ->GetBrowserAction(extension);
|
| + }
|
| +
|
| + void DisableOpenInSidebar() {
|
| + GetBrowserAction(*firstExtension_)->set_open_in_sidebar(false);
|
| + GetBrowserAction(*secondExtension_)->set_open_in_sidebar(false);
|
| + }
|
| +
|
| + bool IsShowingSidebar(const ExtensionId id) {
|
| + ExtensionActionViewController* controller;
|
| + for (unsigned int i = 0; i < toolbar_actions_bar()->GetActions().size();
|
| + i++) {
|
| + controller = static_cast<ExtensionActionViewController*>(
|
| + toolbar_actions_bar()->GetActions()[i]);
|
| + if (controller->extension()->id() == id) {
|
| + return controller->is_showing_sidebar();
|
| + }
|
| + }
|
| + return false;
|
| + }
|
| +
|
| + void ClickBrowserAction(const ExtensionId id) {
|
| + ExtensionActionViewController* controller;
|
| + for (unsigned int i = 0; i < toolbar_actions_bar()->GetActions().size();
|
| + i++) {
|
| + controller = static_cast<ExtensionActionViewController*>(
|
| + toolbar_actions_bar()->GetActions()[i]);
|
| + if (controller->extension()->id() == id) {
|
| + browser_action_test_util_.get()->Press(i);
|
| + }
|
| + }
|
| + }
|
| +
|
| + private:
|
| + const Extension* firstExtension_;
|
| + const Extension* secondExtension_;
|
| + scoped_ptr<BrowserActionTestUtil> browser_action_test_util_;
|
| +};
|
| +
|
| +// 1 - Tests that cliking on the browser action show/hides the sidebar
|
| +IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, CreateSidebar) {
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| + ClickBrowserAction(first_extension_id());
|
| + EXPECT_TRUE(IsShowingSidebar(first_extension_id()));
|
| + ClickBrowserAction(first_extension_id());
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| +}
|
| +
|
| +// Tests that sidebar visible at the other tabs
|
| +IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, SwitchingTabs) {
|
| + // Open sidebar and move to a new tab
|
| + ClickBrowserAction(first_extension_id());
|
| + AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED);
|
| + EXPECT_TRUE(IsShowingSidebar(first_extension_id()));
|
| +
|
| + // Close sidebar and switch back to the first tab
|
| + ClickBrowserAction(first_extension_id());
|
| + TabStripModel* tab_strip_model = browser()->tab_strip_model();
|
| + tab_strip_model->ActivateTabAt(0, false);
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| +}
|
| +
|
| +// Tests that sidebars are not shown if open_in_sidebar: false
|
| +IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, CreateDisabledSidebar) {
|
| + DisableOpenInSidebar();
|
| + ClickBrowserAction(first_extension_id());
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| +}
|
| +
|
| +// Tests that cliking on the browser action show/hides the sidebar
|
| +IN_PROC_BROWSER_TEST_F(SidebarBrowserTest, MultipleExtensions) {
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| + EXPECT_FALSE(IsShowingSidebar(second_extension_id()));
|
| + ClickBrowserAction(first_extension_id());
|
| + EXPECT_TRUE(IsShowingSidebar(first_extension_id()));
|
| + EXPECT_FALSE(IsShowingSidebar(second_extension_id()));
|
| +
|
| + ClickBrowserAction(second_extension_id());
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| + EXPECT_TRUE(IsShowingSidebar(second_extension_id()));
|
| +
|
| + ClickBrowserAction(second_extension_id());
|
| + EXPECT_FALSE(IsShowingSidebar(first_extension_id()));
|
| + EXPECT_FALSE(IsShowingSidebar(second_extension_id()));
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|