| Index: chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| diff --git a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5c2e78cf01c80b42d2ac727cae5fda144e15dc93
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| @@ -0,0 +1,98 @@
|
| +// Copyright 2014 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/ui/toolbar/browser_actions_bar_browsertest.h"
|
| +
|
| +#include "chrome/browser/extensions/browser_action_test_util.h"
|
| +#include "chrome/browser/extensions/extension_browsertest.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "components/crx_file/id_util.h"
|
| +#include "extensions/browser/extension_registry.h"
|
| +#include "extensions/common/extension.h"
|
| +#include "extensions/common/extension_builder.h"
|
| +#include "extensions/common/value_builder.h"
|
| +
|
| +namespace {
|
| +
|
| +scoped_refptr<const extensions::Extension> CreateExtension(
|
| + const std::string& name,
|
| + bool has_browser_action) {
|
| + extensions::DictionaryBuilder manifest;
|
| + manifest.Set("name", name).
|
| + Set("description", "an extension").
|
| + Set("manifest_version", 2).
|
| + Set("version", "1.0");
|
| + if (has_browser_action)
|
| + manifest.Set("browser_action", extensions::DictionaryBuilder().Pass());
|
| + return extensions::ExtensionBuilder().
|
| + SetManifest(manifest.Pass()).
|
| + SetID(crx_file::id_util::GenerateId(name)).
|
| + Build();
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +BrowserActionsBarBrowserTest::BrowserActionsBarBrowserTest() {
|
| +}
|
| +
|
| +BrowserActionsBarBrowserTest::~BrowserActionsBarBrowserTest() {
|
| +}
|
| +
|
| +void BrowserActionsBarBrowserTest::SetUpCommandLine(
|
| + base::CommandLine* command_line) {
|
| + BrowserActionTestUtil::DisableAnimations();
|
| + ExtensionBrowserTest::SetUpCommandLine(command_line);
|
| +}
|
| +
|
| +void BrowserActionsBarBrowserTest::SetUpOnMainThread() {
|
| + ExtensionBrowserTest::SetUpOnMainThread();
|
| + browser_actions_bar_.reset(new BrowserActionTestUtil(browser()));
|
| +}
|
| +
|
| +void BrowserActionsBarBrowserTest::TearDownOnMainThread() {
|
| + BrowserActionTestUtil::EnableAnimations();
|
| + ExtensionBrowserTest::TearDownOnMainThread();
|
| +}
|
| +
|
| +void BrowserActionsBarBrowserTest::LoadExtensions() {
|
| + // Create three extensions with browser actions.
|
| + extension_a_ = CreateExtension("alpha", true);
|
| + extension_b_ = CreateExtension("beta", true);
|
| + extension_c_ = CreateExtension("gamma", true);
|
| +
|
| + const extensions::Extension* extensions[] =
|
| + { extension_a(), extension_b(), extension_c() };
|
| + extensions::ExtensionRegistry* registry =
|
| + extensions::ExtensionRegistry::Get(profile());
|
| + // Add each, and verify that it is both correctly added to the extension
|
| + // registry and to the browser actions container.
|
| + for (size_t i = 0; i < arraysize(extensions); ++i) {
|
| + extension_service()->AddExtension(extensions[i]);
|
| + EXPECT_TRUE(registry->enabled_extensions().GetByID(extensions[i]->id())) <<
|
| + extensions[i]->name();
|
| + EXPECT_EQ(static_cast<int>(i + 1),
|
| + browser_actions_bar_->NumberOfBrowserActions());
|
| + EXPECT_TRUE(browser_actions_bar_->HasIcon(i));
|
| + EXPECT_EQ(static_cast<int>(i + 1),
|
| + browser_actions_bar()->VisibleBrowserActions());
|
| + }
|
| +}
|
| +
|
| +// Test the basic functionality.
|
| +IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, Basic) {
|
| + // Load an extension with no browser action.
|
| + extension_service()->AddExtension(CreateExtension("alpha", false).get());
|
| + // This extension should not be in the model (has no browser action).
|
| + EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions());
|
| +
|
| + // Load an extension with a browser action.
|
| + extension_service()->AddExtension(CreateExtension("beta", true).get());
|
| + EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions());
|
| + EXPECT_TRUE(browser_actions_bar()->HasIcon(0));
|
| +
|
| + // Unload the extension.
|
| + std::string id = browser_actions_bar()->GetExtensionId(0);
|
| + UnloadExtension(id);
|
| + EXPECT_EQ(0, browser_actions_bar()->NumberOfBrowserActions());
|
| +}
|
|
|