Move ExtensionServiceTestBase into its own header/cc file

This is the first step in refactoring the (overly-gigantic)
extension_service_unittest.cc

BUG=381251

TBR=atwilson@chromium.org (c/b/background/)
TBR=bauerb@chromium.org (c/b/managed_mode/)
TBR=battre@chromium.org (c/b/profile_resetter/)
TBR=pkotwicz@chromium.org (c/b/themes)
TBR=koz@chromium.org (c/b/ui/app_list)
All TBRs are for simple mechanical changes (primarily namespace move).

Review URL: https://codereview.chromium.org/318863008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276587 0039d316-1c4b-4281-b951-d872f2087c98
parent 86936530
......@@ -15,7 +15,7 @@
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/permissions_updater.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/notification_registrar.h"
......@@ -41,7 +41,8 @@ base::FilePath bogus_file_pathname(const std::string& name) {
.AppendASCII(name);
}
class BackgroundApplicationListModelTest : public ExtensionServiceTestBase {
class BackgroundApplicationListModelTest
: public extensions::ExtensionServiceTestBase {
public:
BackgroundApplicationListModelTest() {}
virtual ~BackgroundApplicationListModelTest() {}
......
......@@ -5,7 +5,8 @@
#include "chrome/browser/extensions/bookmark_app_helper.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/render_process_host.h"
......@@ -42,13 +43,14 @@ class BookmarkAppHelperTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest);
};
class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase {
class BookmarkAppHelperExtensionServiceTest
: public extensions::ExtensionServiceTestBase {
public:
BookmarkAppHelperExtensionServiceTest() {}
virtual ~BookmarkAppHelperExtensionServiceTest() {}
virtual void SetUp() OVERRIDE {
ExtensionServiceTestBase::SetUp();
extensions::ExtensionServiceTestBase::SetUp();
InitializeEmptyExtensionService();
service_->Init();
EXPECT_EQ(0u, service_->extensions()->size());
......@@ -222,7 +224,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) {
}
TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) {
EXPECT_EQ(0u, registry_->enabled_extensions().size());
EXPECT_EQ(0u, registry()->enabled_extensions().size());
WebApplicationInfo web_app_info;
web_app_info.app_url = GURL(kAppUrl);
web_app_info.title = base::UTF8ToUTF16(kAppTitle);
......@@ -234,7 +236,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) {
base::RunLoop().RunUntilIdle();
{
EXPECT_EQ(1u, registry_->enabled_extensions().size());
EXPECT_EQ(1u, registry()->enabled_extensions().size());
const Extension* extension = service_->extensions()->begin()->get();
EXPECT_TRUE(extension->from_bookmark());
EXPECT_EQ(kAppTitle, extension->name());
......@@ -252,7 +254,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) {
base::RunLoop().RunUntilIdle();
{
EXPECT_EQ(1u, registry_->enabled_extensions().size());
EXPECT_EQ(1u, registry()->enabled_extensions().size());
const Extension* extension = service_->extensions()->begin()->get();
EXPECT_TRUE(extension->from_bookmark());
EXPECT_EQ(kAlternativeAppTitle, extension->name());
......@@ -281,7 +283,7 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, GetWebApplicationInfo) {
extensions::CreateOrUpdateBookmarkApp(service_, web_app_info);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(1u, registry_->enabled_extensions().size());
EXPECT_EQ(1u, registry()->enabled_extensions().size());
base::RunLoop run_loop;
extensions::GetWebApplicationInfoFromApp(
profile_.get(),
......
......@@ -4,7 +4,8 @@
#include "chrome/browser/extensions/extension_context_menu_model.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/host_desktop.h"
#include "chrome/test/base/test_browser_window.h"
......
......@@ -6,7 +6,7 @@
#include "chrome/browser/extensions/extension_error_controller.h"
#include "chrome/browser/extensions/extension_error_ui.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/test/base/testing_profile.h"
#include "extensions/browser/extension_prefs.h"
......
......@@ -12,7 +12,8 @@
#include "chrome/browser/chromeos/login/users/user_manager.h"
#include "chrome/browser/extensions/extension_assets_manager_chromeos.h"
#include "chrome/browser/extensions/extension_garbage_collector_chromeos.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/prefs/browser_prefs.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/test/base/testing_browser_process.h"
......
......@@ -9,7 +9,8 @@
#include "base/threading/sequenced_worker_pool.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_garbage_collector.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/install_tracker.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_constants.h"
......@@ -75,7 +76,7 @@ TEST_F(ExtensionGarbageCollectorUnitTest, CleanupOnStartup) {
service_->Init();
GarbageCollectExtensions();
base::FileEnumerator dirs(extensions_install_dir_,
base::FileEnumerator dirs(extensions_install_dir(),
false, // not recursive
base::FileEnumerator::DIRECTORIES);
size_t count = 0;
......@@ -87,7 +88,7 @@ TEST_F(ExtensionGarbageCollectorUnitTest, CleanupOnStartup) {
// And extension1 dir should now be toast.
base::FilePath extension_dir =
extensions_install_dir_.AppendASCII(kExtensionId);
extensions_install_dir().AppendASCII(kExtensionId);
ASSERT_FALSE(base::PathExists(extension_dir));
}
......@@ -117,7 +118,7 @@ TEST_F(ExtensionGarbageCollectorUnitTest, NoCleanupDuringInstall) {
// extension1 dir should still exist.
base::FilePath extension_dir =
extensions_install_dir_.AppendASCII(kExtensionId);
extensions_install_dir().AppendASCII(kExtensionId);
ASSERT_TRUE(base::PathExists(extension_dir));
// Finish CRX installation and re-run garbage collection.
......@@ -134,7 +135,7 @@ TEST_F(ExtensionGarbageCollectorUnitTest, GarbageCollectWithPendingUpdates) {
InitPluginService();
base::FilePath source_install_dir =
data_dir_.AppendASCII("pending_updates").AppendASCII("Extensions");
data_dir().AppendASCII("pending_updates").AppendASCII("Extensions");
base::FilePath pref_path =
source_install_dir.DirName().Append(chrome::kPreferencesFilename);
......@@ -143,20 +144,20 @@ TEST_F(ExtensionGarbageCollectorUnitTest, GarbageCollectWithPendingUpdates) {
// This is the directory that is going to be deleted, so make sure it actually
// is there before the garbage collection.
ASSERT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
ASSERT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"hpiknbiabeeppbpihjehijgoemciehgk/3")));
GarbageCollectExtensions();
// Verify that the pending update for the first extension didn't get
// deleted.
EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0")));
EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"bjafgdebaacbbbecmhlhpofkepfkgcpa/2.0")));
EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"hpiknbiabeeppbpihjehijgoemciehgk/2")));
EXPECT_FALSE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_FALSE(base::PathExists(extensions_install_dir().AppendASCII(
"hpiknbiabeeppbpihjehijgoemciehgk/3")));
}
......@@ -165,7 +166,7 @@ TEST_F(ExtensionGarbageCollectorUnitTest, UpdateOnStartup) {
InitPluginService();
base::FilePath source_install_dir =
data_dir_.AppendASCII("pending_updates").AppendASCII("Extensions");
data_dir().AppendASCII("pending_updates").AppendASCII("Extensions");
base::FilePath pref_path =
source_install_dir.DirName().Append(chrome::kPreferencesFilename);
......@@ -174,20 +175,20 @@ TEST_F(ExtensionGarbageCollectorUnitTest, UpdateOnStartup) {
// This is the directory that is going to be deleted, so make sure it actually
// is there before the garbage collection.
ASSERT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
ASSERT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"hpiknbiabeeppbpihjehijgoemciehgk/3")));
service_->Init();
GarbageCollectExtensions();
// Verify that the pending update for the first extension got installed.
EXPECT_FALSE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_FALSE(base::PathExists(extensions_install_dir().AppendASCII(
"bjafgdebaacbbbecmhlhpofkepfkgcpa/1.0")));
EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"bjafgdebaacbbbecmhlhpofkepfkgcpa/2.0")));
EXPECT_TRUE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_TRUE(base::PathExists(extensions_install_dir().AppendASCII(
"hpiknbiabeeppbpihjehijgoemciehgk/2")));
EXPECT_FALSE(base::PathExists(extensions_install_dir_.AppendASCII(
EXPECT_FALSE(base::PathExists(extensions_install_dir().AppendASCII(
"hpiknbiabeeppbpihjehijgoemciehgk/3")));
// Make sure update information got deleted.
......
// 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/extensions/extension_service_test_base.h"
#include "base/command_line.h"
#include "base/file_util.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_garbage_collector_factory.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/test_extension_system.h"
#include "chrome/browser/extensions/updater/extension_updater.h"
#include "chrome/browser/prefs/browser_prefs.h"
#include "chrome/browser/prefs/pref_service_mock_factory.h"
#include "chrome/browser/prefs/pref_service_syncable.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/test/base/testing_profile.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "content/public/browser/browser_context.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/extensions/install_limiter.h"
#endif
namespace extensions {
namespace {
// Create a testing profile according to |params|.
scoped_ptr<TestingProfile> BuildTestingProfile(
const ExtensionServiceTestBase::ExtensionServiceInitParams& params) {
TestingProfile::Builder profile_builder;
// Create a PrefService that only contains user defined preference values.
PrefServiceMockFactory factory;
// If pref_file is empty, TestingProfile automatically creates
// TestingPrefServiceSyncable instance.
if (!params.pref_file.empty()) {
factory.SetUserPrefsFile(params.pref_file,
base::MessageLoopProxy::current().get());
scoped_refptr<user_prefs::PrefRegistrySyncable> registry(
new user_prefs::PrefRegistrySyncable);
scoped_ptr<PrefServiceSyncable> prefs(
factory.CreateSyncable(registry.get()));
chrome::RegisterUserProfilePrefs(registry.get());
profile_builder.SetPrefService(prefs.Pass());
}
if (params.profile_is_managed)
profile_builder.SetManagedUserId("asdf");
profile_builder.SetPath(params.profile_path);
return profile_builder.Build();
}
} // namespace
ExtensionServiceTestBase::ExtensionServiceInitParams::
ExtensionServiceInitParams()
: autoupdate_enabled(false), is_first_run(true), profile_is_managed(false) {
}
// Our message loop may be used in tests which require it to be an IO loop.
ExtensionServiceTestBase::ExtensionServiceTestBase()
: service_(NULL),
thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
registry_(NULL) {
base::FilePath test_data_dir;
if (!PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir)) {
ADD_FAILURE();
return;
}
data_dir_ = test_data_dir.AppendASCII("extensions");
}
ExtensionServiceTestBase::~ExtensionServiceTestBase() {
// Why? Because |profile_| has to be destroyed before |at_exit_manager_|, but
// is declared above it in the class definition since it's protected.
profile_.reset();
}
ExtensionServiceTestBase::ExtensionServiceInitParams
ExtensionServiceTestBase::CreateDefaultInitParams() {
ExtensionServiceInitParams params;
EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
base::FilePath path = temp_dir_.path();
path = path.Append(FILE_PATH_LITERAL("TestingExtensionsPath"));
EXPECT_TRUE(base::DeleteFile(path, true));
base::File::Error error = base::File::FILE_OK;
EXPECT_TRUE(base::CreateDirectoryAndGetError(path, &error)) << error;
base::FilePath prefs_filename =
path.Append(FILE_PATH_LITERAL("TestPreferences"));
base::FilePath extensions_install_dir =
path.Append(FILE_PATH_LITERAL("Extensions"));
EXPECT_TRUE(base::DeleteFile(extensions_install_dir, true));
EXPECT_TRUE(base::CreateDirectoryAndGetError(extensions_install_dir, &error))
<< error;
params.profile_path = path;
params.pref_file = prefs_filename;
params.extensions_install_dir = extensions_install_dir;
return params;
}
void ExtensionServiceTestBase::InitializeExtensionService(
const ExtensionServiceTestBase::ExtensionServiceInitParams& params) {
profile_ = BuildTestingProfile(params);
CreateExtensionService(params);
extensions_install_dir_ = params.extensions_install_dir;
registry_ = ExtensionRegistry::Get(profile_.get());
// Garbage collector is typically NULL during tests, so give it a build.
ExtensionGarbageCollectorFactory::GetInstance()->SetTestingFactoryAndUse(
profile_.get(), &ExtensionGarbageCollectorFactory::BuildInstanceFor);
}
void ExtensionServiceTestBase::InitializeEmptyExtensionService() {
InitializeExtensionService(CreateDefaultInitParams());
}
void ExtensionServiceTestBase::InitializeInstalledExtensionService(
const base::FilePath& prefs_file,
const base::FilePath& source_install_dir) {
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
base::FilePath path = temp_dir_.path();
path = path.Append(FILE_PATH_LITERAL("TestingExtensionsPath"));
ASSERT_TRUE(base::DeleteFile(path, true));
base::File::Error error = base::File::FILE_OK;
ASSERT_TRUE(base::CreateDirectoryAndGetError(path, &error)) << error;
base::FilePath temp_prefs = path.Append(chrome::kPreferencesFilename);
ASSERT_TRUE(base::CopyFile(prefs_file, temp_prefs));
base::FilePath extensions_install_dir =
path.Append(FILE_PATH_LITERAL("Extensions"));
ASSERT_TRUE(base::DeleteFile(extensions_install_dir, true));
ASSERT_TRUE(
base::CopyDirectory(source_install_dir, extensions_install_dir, true));
ExtensionServiceInitParams params;
params.profile_path = path;
params.pref_file = temp_prefs;
params.extensions_install_dir = extensions_install_dir;
InitializeExtensionService(params);
}
void ExtensionServiceTestBase::InitializeGoodInstalledExtensionService() {
base::FilePath source_install_dir =
data_dir_.AppendASCII("good").AppendASCII("Extensions");
base::FilePath pref_path =
source_install_dir.DirName().Append(chrome::kPreferencesFilename);
InitializeInstalledExtensionService(pref_path, source_install_dir);
}
void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() {
ExtensionServiceInitParams params = CreateDefaultInitParams();
params.autoupdate_enabled = true;
InitializeExtensionService(params);
service_->updater()->Start();
}
void ExtensionServiceTestBase::InitializeProcessManager() {
static_cast<extensions::TestExtensionSystem*>(
ExtensionSystem::Get(profile_.get()))->CreateProcessManager();
}
void ExtensionServiceTestBase::SetUp() {
ExtensionErrorReporter::GetInstance()->ClearErrors();
}
void ExtensionServiceTestBase::SetUpTestCase() {
// Safe to call multiple times.
ExtensionErrorReporter::Init(false); // no noisy errors.
}
// These are declared in the .cc so that all inheritors don't need to know
// that TestingProfile derives Profile derives BrowserContext.
content::BrowserContext* ExtensionServiceTestBase::browser_context() {
return profile_.get();
}
Profile* ExtensionServiceTestBase::profile() {
return profile_.get();
}
void ExtensionServiceTestBase::CreateExtensionService(
const ExtensionServiceInitParams& params) {
TestExtensionSystem* system =
static_cast<TestExtensionSystem*>(ExtensionSystem::Get(profile_.get()));
if (!params.is_first_run) {
ExtensionPrefs* prefs = system->CreateExtensionPrefs(
base::CommandLine::ForCurrentProcess(), params.extensions_install_dir);
prefs->SetAlertSystemFirstRun();
}
service_ =
system->CreateExtensionService(base::CommandLine::ForCurrentProcess(),
params.extensions_install_dir,
params.autoupdate_enabled);
service_->SetFileTaskRunnerForTesting(
base::MessageLoopProxy::current().get());
service_->set_extensions_enabled(true);
service_->set_show_extensions_prompts(false);
service_->set_install_updates_when_idle_for_test(false);
// When we start up, we want to make sure there is no external provider,
// since the ExtensionService on Windows will use the Registry as a default
// provider and if there is something already registered there then it will
// interfere with the tests. Those tests that need an external provider
// will register one specifically.
service_->ClearProvidersForTesting();
#if defined(OS_CHROMEOS)
InstallLimiter::Get(profile_.get())->DisableForTest();
#endif
}
} // namespace extensions
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// 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.
#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_UNITTEST_H_
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_UNITTEST_H_
#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_TEST_BASE_H_
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_TEST_BASE_H_
#include "base/at_exit.h"
#include "base/files/file_path.h"
#include "base/files/scoped_temp_dir.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "chrome/browser/extensions/extension_service.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/public/test/test_utils.h"
#include "extensions/common/feature_switch.h"
#include "testing/gtest/include/gtest/gtest.h"
#if defined(OS_CHROMEOS)
......@@ -23,82 +19,118 @@
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#endif
class ExtensionService;
class Profile;
class TestingProfile;
namespace content {
class BrowserContext;
}
namespace extensions {
class ExtensionRegistry;
class ManagementPolicy;
}
// A unittest infrastructure which creates an ExtensionService. Whenever
// possible, use this instead of creating a browsertest.
// Note: Before adding methods to this class, please, please, please think about
// whether they should go here or in a more specific subclass. Lots of things
// need an ExtensionService, but they don't all need to know how you want yours
// to be initialized.
class ExtensionServiceTestBase : public testing::Test {
public:
struct ExtensionServiceInitParams {
base::FilePath profile_path;
base::FilePath pref_file;
base::FilePath extensions_install_dir;
bool autoupdate_enabled;
bool is_first_run;
bool profile_is_managed;
bool autoupdate_enabled; // defaults to false.
bool is_first_run; // defaults to true.
bool profile_is_managed; // defaults to false.
// Though you could use this constructor, you probably want to use
// CreateDefaultInitParams(), and then make a change or two.
ExtensionServiceInitParams();
};
protected:
ExtensionServiceTestBase();
virtual ~ExtensionServiceTestBase();
void InitializeExtensionService(const ExtensionServiceInitParams& params);
// testing::Test implementation.
virtual void SetUp() OVERRIDE;
static void SetUpTestCase(); // faux-verride (static override).
static scoped_ptr<TestingProfile> CreateTestingProfile(
const ExtensionServiceInitParams& params);
// Create a set of InitParams to install an ExtensionService into |temp_dir_|.
ExtensionServiceInitParams CreateDefaultInitParams();
// Initialize an ExtensionService according to the given |params|.
void InitializeExtensionService(const ExtensionServiceInitParams& params);
static ExtensionService* InitializeExtensionServiceForProfile(
const ExtensionServiceInitParams& params,
Profile* profile);
// Initialize an empty ExtensionService using the default init params.
void InitializeEmptyExtensionService();
// Initialize an ExtensionService with the associated |prefs_file| and
// |source_install_dir|.
void InitializeInstalledExtensionService(
const base::FilePath& prefs_file,
const base::FilePath& source_install_dir);
// Initialize an ExtensionService with a few already-installed extensions.
void InitializeGoodInstalledExtensionService();
void InitializeEmptyExtensionService();
// Initialize an ExtensionService with autoupdate enabled.
void InitializeExtensionServiceWithUpdater();
// Initialize the associated ProcessManager.
void InitializeProcessManager();
void InitializeExtensionServiceWithUpdater();
// TODO(rdevlin.cronin): Pull out more methods from ExtensionServiceTest that
// are commonly used and/or reimplemented. For instance, methods to install
// extensions from various locations, etc.
void InitializeExtensionSyncService();
content::BrowserContext* browser_context();
Profile* profile();
ExtensionService* service() { return service_; }
ExtensionRegistry* registry() { return registry_; }
const base::FilePath& extensions_install_dir() const {
return extensions_install_dir_;
}
const base::FilePath& data_dir() const { return data_dir_; }
const base::ScopedTempDir& temp_dir() const { return temp_dir_; }
static void SetUpTestCase();
// It's unfortunate that these are exposed to subclasses (rather than used
// through the accessor methods above), but too many tests already use them
// directly.
virtual void SetUp() OVERRIDE;
virtual void TearDown() OVERRIDE;
// The associated testing profile.
scoped_ptr<TestingProfile> profile_;
void set_extensions_enabled(bool enabled) {
service_->set_extensions_enabled(enabled);
}
// The ExtensionService, whose lifetime is managed by |profile|'s
// ExtensionSystem.
ExtensionService* service_;
protected:
ExtensionServiceInitParams CreateDefaultInitParams();
static ExtensionServiceInitParams CreateDefaultInitParamsInTempDir(
base::ScopedTempDir* temp_dir);
private:
void CreateExtensionService(const ExtensionServiceInitParams& params);
// Destroy temp_dir_ after thread_bundle_ so clean-up tasks can still use the
// directory.
base::ScopedTempDir temp_dir_;
// Destroying at_exit_manager_ will delete all LazyInstances, so it must come
// after thread_bundle_ in the destruction order.
base::ShadowingAtExitManager at_exit_manager_;
content::TestBrowserThreadBundle thread_bundle_;
scoped_ptr<TestingProfile> profile_;
// The directory into which extensions are installed.
base::FilePath extensions_install_dir_;
// chrome/test/data/extensions/
base::FilePath data_dir_;
// Managed by extensions::ExtensionSystemFactory.
ExtensionService* service_;
extensions::ManagementPolicy* management_policy_;
scoped_ptr<ExtensionSyncService> extension_sync_service_;
size_t expected_extensions_count_;
content::InProcessUtilityThreadHelper in_process_utility_thread_helper_;
// The associated ExtensionRegistry, for convenience.
extensions::ExtensionRegistry* registry_;
#if defined OS_CHROMEOS
......@@ -108,4 +140,6 @@ class ExtensionServiceTestBase : public testing::Test {
#endif
};
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_UNITTEST_H_
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_TEST_BASE_H_
......@@ -11,7 +11,8 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/customization_document.h"
#include "chrome/browser/chromeos/login/users/fake_user_manager.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/testing_browser_process.h"
......@@ -64,9 +65,8 @@ class ExternalProviderImplChromeOSTest : public ExtensionServiceTestBase {
chromeos::ServicesCustomizationDocument::RegisterPrefs(
local_state_.registry());
external_externsions_overrides_.reset(
new base::ScopedPathOverride(chrome::DIR_EXTERNAL_EXTENSIONS,
data_dir_.Append("external")));
external_externsions_overrides_.reset(new base::ScopedPathOverride(
chrome::DIR_EXTERNAL_EXTENSIONS, data_dir().Append("external")));
chromeos::system::StatisticsProvider::SetTestProvider(
&mock_statistics_provider_);
......
......@@ -13,7 +13,8 @@
#include "base/strings/stringprintf.h"
#include "base/test/scoped_path_override.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/updater/extension_cache_fake.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
......
......@@ -10,7 +10,7 @@
#include "base/values.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/permissions_updater.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/extension_test_util.h"
......
......@@ -7,7 +7,7 @@
#include "base/strings/string16.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/pending_extension_manager.h"
#include "chrome/browser/extensions/shared_module_service.h"
#include "chrome/common/extensions/features/feature_channel.h"
......@@ -65,8 +65,8 @@ void SharedModuleServiceUnitTest::SetUp() {
testing::AssertionResult SharedModuleServiceUnitTest::InstallExtension(
const Extension* extension) {
// Verify the extension is not already installed.
if (registry_->GetExtensionById(extension->id(),
ExtensionRegistry::ENABLED)) {
if (registry()->GetExtensionById(extension->id(),
ExtensionRegistry::ENABLED)) {
return testing::AssertionFailure() << "Extension already installed.";
}
......@@ -80,8 +80,8 @@ testing::AssertionResult SharedModuleServiceUnitTest::InstallExtension(
false); // Don't wait for idle.
// Verify that the extension is now installed.
if (!registry_->GetExtensionById(extension->id(),
ExtensionRegistry::ENABLED)) {
if (!registry()->GetExtensionById(extension->id(),
ExtensionRegistry::ENABLED)) {
return testing::AssertionFailure() << "Could not install extension.";
}
......@@ -141,8 +141,8 @@ TEST_F(SharedModuleServiceUnitTest, PruneSharedModulesOnUninstall) {
// Since the module was only referenced by that single extension, it should
// have been uninstalled as a side-effect of uninstalling the extension that
// depended upon it.
EXPECT_FALSE(registry_->GetExtensionById(shared_module->id(),
ExtensionRegistry::EVERYTHING));
EXPECT_FALSE(registry()->GetExtensionById(shared_module->id(),
ExtensionRegistry::EVERYTHING));
}
TEST_F(SharedModuleServiceUnitTest, WhitelistedImports) {
......
......@@ -7,7 +7,8 @@
#include "base/message_loop/message_loop.h"
#include "base/threading/thread.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/extensions/user_script_listener.h"
#include "chrome/common/chrome_paths.h"
......
......@@ -7,7 +7,7 @@
#include "base/prefs/scoped_user_pref_update.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/managed_mode/custodian_profile_downloader_service.h"
#include "chrome/browser/managed_mode/custodian_profile_downloader_service_factory.h"
......@@ -165,7 +165,8 @@ TEST_F(ManagedUserServiceTest, ShutDownCustodianProfileDownloader) {
}
#if !defined(OS_ANDROID)
class ManagedUserServiceExtensionTestBase : public ExtensionServiceTestBase {
class ManagedUserServiceExtensionTestBase
: public extensions::ExtensionServiceTestBase {
public:
explicit ManagedUserServiceExtensionTestBase(bool is_managed)
: is_managed_(is_managed),
......
......@@ -20,7 +20,8 @@
#include "base/values.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/google/google_brand.h"
#include "chrome/browser/profile_resetter/brandcoded_default_settings.h"
#include "chrome/browser/profile_resetter/profile_reset_global_error.h"
......@@ -161,14 +162,14 @@ void ServicePendingBrancodedConfigFetch(net::TestURLFetcher* fetcher,
// ExtensionServiceTestBase sets up a TestingProfile with the ExtensionService,
// we then add the TemplateURLService, so the ProfileResetter can be exercised.
class AutomaticProfileResetterDelegateTest
: public ExtensionServiceTestBase,
: public extensions::ExtensionServiceTestBase,
public TemplateURLServiceTestUtilBase {
protected:
AutomaticProfileResetterDelegateTest() {}
virtual ~AutomaticProfileResetterDelegateTest() {}
virtual void SetUp() OVERRIDE {
ExtensionServiceTestBase::SetUp();
extensions::ExtensionServiceTestBase::SetUp();
ExtensionServiceInitParams params = CreateDefaultInitParams();
params.pref_file.clear(); // Prescribes a TestingPrefService to be created.
InitializeExtensionService(params);
......@@ -179,7 +180,7 @@ class AutomaticProfileResetterDelegateTest
virtual void TearDown() OVERRIDE {
resetter_delegate_.reset();
ExtensionServiceTestBase::TearDown();
extensions::ExtensionServiceTestBase::TearDown();
}
scoped_ptr<TemplateURL> CreateTestTemplateURL() {
......
......@@ -9,7 +9,8 @@
#include "base/strings/utf_string_conversions.h"
#include "base/test/scoped_path_override.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
#include "chrome/browser/notifications/desktop_notification_service_factory.h"
......@@ -94,7 +95,7 @@ using extensions::Manifest;
// ProfileResetterTest --------------------------------------------------------
// ProfileResetterTest sets up the extension, WebData and TemplateURL services.
class ProfileResetterTest : public ExtensionServiceTestBase,
class ProfileResetterTest : public extensions::ExtensionServiceTestBase,
public ProfileResetterTestBase {
public:
ProfileResetterTest();
......@@ -131,7 +132,7 @@ ProfileResetterTest::~ProfileResetterTest() {
}
void ProfileResetterTest::SetUp() {
ExtensionServiceTestBase::SetUp();
extensions::ExtensionServiceTestBase::SetUp();
InitializeEmptyExtensionService();
profile()->CreateWebDataService();
......
......@@ -7,7 +7,8 @@
#include "base/file_util.h"
#include "base/path_service.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/managed_mode/managed_user_service.h"
#include "chrome/browser/managed_mode/managed_user_service_factory.h"
......@@ -27,7 +28,7 @@ using extensions::ExtensionRegistry;
namespace theme_service_internal {
class ThemeServiceTest : public ExtensionServiceTestBase {
class ThemeServiceTest : public extensions::ExtensionServiceTestBase {
public:
ThemeServiceTest() : is_managed_(false),
registry_(NULL) {}
......@@ -82,8 +83,8 @@ class ThemeServiceTest : public ExtensionServiceTestBase {
}
virtual void SetUp() {
ExtensionServiceTestBase::SetUp();
ExtensionServiceTestBase::ExtensionServiceInitParams params =
extensions::ExtensionServiceTestBase::SetUp();
extensions::ExtensionServiceTestBase::ExtensionServiceInitParams params =
CreateDefaultInitParams();
params.profile_is_managed = is_managed_;
InitializeExtensionService(params);
......
......@@ -5,6 +5,7 @@
#include "chrome/browser/ui/app_list/app_list_test_util.h"
#include "base/files/file_path.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/common/chrome_constants.h"
#include "extensions/common/extension_set.h"
......@@ -20,7 +21,7 @@ AppListTestBase::AppListTestBase() {}
AppListTestBase::~AppListTestBase() {}
void AppListTestBase::SetUp() {
ExtensionServiceTestBase::SetUp();
extensions::ExtensionServiceTestBase::SetUp();
// Load "app_list" extensions test profile.
// The test profile has 5 extensions:
......@@ -28,9 +29,8 @@ void AppListTestBase::SetUp() {
// - 2 packaged extension apps
// - 1 hosted extension app
// - 1 ephemeral app (which should not be visible in the launcher)
base::FilePath source_install_dir = data_dir_
.AppendASCII("app_list")
.AppendASCII("Extensions");
base::FilePath source_install_dir =
data_dir().AppendASCII("app_list").AppendASCII("Extensions");
base::FilePath pref_path = source_install_dir
.DirName()
.Append(chrome::kPreferencesFilename);
......
......@@ -5,10 +5,10 @@
#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_TEST_UTIL_H_
#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_TEST_UTIL_H_
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
// Base class for app list unit tests that use the "app_list" test profile.
class AppListTestBase : public ExtensionServiceTestBase {
class AppListTestBase : public extensions::ExtensionServiceTestBase {
public:
static const char kHostedAppId[];
static const char kPackagedApp1Id[];
......
......@@ -12,6 +12,7 @@
#include "base/run_loop.h"
#include "base/values.h"
#include "chrome/browser/extensions/extension_function_test_utils.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/install_tracker.h"
#include "chrome/browser/extensions/install_tracker_factory.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate_impl.h"
......
......@@ -8,6 +8,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/ui/app_list/app_list_test_util.h"
#include "chrome/browser/ui/app_list/search/app_search_provider.h"
#include "chrome/browser/ui/app_list/search/chrome_search_result.h"
......
......@@ -964,8 +964,9 @@
'browser/extensions/extension_message_bubble_controller_unittest.cc',
'browser/extensions/extension_prefs_unittest.cc',
'browser/extensions/extension_prefs_unittest.h',
'browser/extensions/extension_service_test_base.h',
'browser/extensions/extension_service_test_base.cc',
'browser/extensions/extension_service_unittest.cc',
'browser/extensions/extension_service_unittest.h',
'browser/extensions/extension_special_storage_policy_unittest.cc',
'browser/extensions/extension_sync_data_unittest.cc',
'browser/extensions/extension_test_message_listener_unittest.cc',
......
......@@ -28,7 +28,8 @@ specific_include_rules = {
"+chrome/browser/extensions/extension_api_unittest.h",
"+chrome/browser/extensions/extension_apitest.h",
"+chrome/browser/extensions/extension_function_test_utils.h",
"+chrome/browser/extensions/extension_service_unittest.h",
"+chrome/browser/extensions/extension_service.h",
"+chrome/browser/extensions/extension_service_test_base.h",
"+chrome/browser/extensions/test_extension_dir.h",
"+chrome/browser/extensions/test_extension_system.h",
"+chrome/browser/ui/browser.h",
......
......@@ -6,7 +6,8 @@
#include "base/bind.h"
#include "base/command_line.h"
#include "chrome/browser/extensions/extension_service_unittest.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/test_extension_system.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/test_browser_thread_bundle.h"
......@@ -43,7 +44,8 @@ class TestProcessManager : public ProcessManager {
// Derives from ExtensionServiceTestBase because ExtensionService is difficult
// to initialize alone.
class LazyBackgroundTaskQueueTest : public ExtensionServiceTestBase {
class LazyBackgroundTaskQueueTest
: public extensions::ExtensionServiceTestBase {
public:
LazyBackgroundTaskQueueTest() : task_run_count_(0) {}
virtual ~LazyBackgroundTaskQueueTest() {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment