| Index: chrome/browser/task_management/providers/web_contents/extension_tag_browsertest.cc
|
| diff --git a/chrome/browser/task_management/providers/web_contents/extension_tag_browsertest.cc b/chrome/browser/task_management/providers/web_contents/extension_tag_browsertest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6f5db81b77d3baba3dc7ed49c7f8f1578426a792
|
| --- /dev/null
|
| +++ b/chrome/browser/task_management/providers/web_contents/extension_tag_browsertest.cc
|
| @@ -0,0 +1,95 @@
|
| +// 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 "base/strings/utf_string_conversions.h"
|
| +#include "chrome/browser/extensions/extension_browsertest.h"
|
| +#include "chrome/browser/task_management/task_management_browsertest_util.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| +
|
| +namespace task_management {
|
| +
|
| +class ExtensionTagsTest : public ExtensionBrowserTest {
|
| + public:
|
| + ExtensionTagsTest() {}
|
| + ~ExtensionTagsTest() override {}
|
| +
|
| + protected:
|
| + // ExtensionBrowserTest:
|
| + void SetUpCommandLine(base::CommandLine* command_line) override {
|
| + ExtensionBrowserTest::SetUpCommandLine(command_line);
|
| +
|
| + // Do not launch device discovery process.
|
| + command_line->AppendSwitch(switches::kDisableDeviceDiscoveryNotifications);
|
| + }
|
| +
|
| + const std::vector<WebContentsTag*>& tracked_tags() const {
|
| + return WebContentsTagsManager::GetInstance()->tracked_tags();
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ExtensionTagsTest);
|
| +};
|
| +
|
| +// Tests loading, disabling, enabling and unloading extensions and how that will
|
| +// affect the recording of tags.
|
| +IN_PROC_BROWSER_TEST_F(ExtensionTagsTest, Basic) {
|
| + // Browser tests start with a single tab.
|
| + EXPECT_EQ(1U, tracked_tags().size());
|
| +
|
| + const extensions::Extension* extension = LoadExtension(
|
| + test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
|
| + .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
|
| + .AppendASCII("1.0.0.0"));
|
| + ASSERT_TRUE(extension);
|
| +
|
| + EXPECT_EQ(2U, tracked_tags().size());
|
| +
|
| + DisableExtension(extension->id());
|
| + EXPECT_EQ(1U, tracked_tags().size());
|
| +
|
| + EnableExtension(extension->id());
|
| + EXPECT_EQ(2U, tracked_tags().size());
|
| +
|
| + UnloadExtension(extension->id());
|
| + EXPECT_EQ(1U, tracked_tags().size());
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ExtensionTagsTest, PreAndPostExistingTaskProviding) {
|
| + // Browser tests start with a single tab.
|
| + EXPECT_EQ(1U, tracked_tags().size());
|
| + MockWebContentsTaskManager task_manager;
|
| + EXPECT_TRUE(task_manager.tasks().empty());
|
| +
|
| + const extensions::Extension* extension = LoadExtension(
|
| + test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
|
| + .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
|
| + .AppendASCII("1.0.0.0"));
|
| + ASSERT_TRUE(extension);
|
| +
|
| + EXPECT_EQ(2U, tracked_tags().size());
|
| + EXPECT_TRUE(task_manager.tasks().empty());
|
| +
|
| + // Start observing, pre-existing tasks will be provided.
|
| + task_manager.StartObserving();
|
| + EXPECT_EQ(2U, task_manager.tasks().size());
|
| + EXPECT_EQ(Task::EXTENSION, task_manager.tasks().back()->GetType());
|
| +
|
| + // Unload the extension and expect that the task manager now shows only the
|
| + // about:blank tab.
|
| + UnloadExtension(extension->id());
|
| + EXPECT_EQ(1U, tracked_tags().size());
|
| + EXPECT_EQ(1U, task_manager.tasks().size());
|
| + const Task* about_blank_task = task_manager.tasks().back();
|
| + EXPECT_EQ(Task::RENDERER, about_blank_task->GetType());
|
| + EXPECT_EQ(base::UTF8ToUTF16("Tab: about:blank"), about_blank_task->title());
|
| +
|
| + // Reload the extension, the task manager should show it again.
|
| + ReloadExtension(extension->id());
|
| + EXPECT_EQ(2U, tracked_tags().size());
|
| + EXPECT_EQ(2U, task_manager.tasks().size());
|
| + EXPECT_EQ(Task::EXTENSION, task_manager.tasks().back()->GetType());
|
| +}
|
| +
|
| +} // namespace task_management
|
| +
|
|
|