Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5971)

Unified Diff: chrome/browser/extensions/extension_service_test_base.h

Issue 318863008: Move ExtensionServiceTestBase into it's own header/cc file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix merge conflict Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_service_test_base.h
diff --git a/chrome/browser/extensions/extension_service_test_base.h b/chrome/browser/extensions/extension_service_test_base.h
new file mode 100644
index 0000000000000000000000000000000000000000..66fd953555aa0ae19cb95d9b1b13fb87bf5ac56b
--- /dev/null
+++ b/chrome/browser/extensions/extension_service_test_base.h
@@ -0,0 +1,145 @@
+// 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_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/scoped_ptr.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "content/public/test/test_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/login/users/user_manager.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
+#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; // 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();
+
+ // testing::Test implementation.
+ virtual void SetUp() OVERRIDE;
+ static void SetUpTestCase(); // faux-verride (static override).
+
+ // 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);
+
+ // 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();
+
+ // Initialize an ExtensionService with autoupdate enabled.
+ void InitializeExtensionServiceWithUpdater();
+
+ // Initialize the associated ProcessManager.
+ void InitializeProcessManager();
+
+ // 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.
+
+ 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_; }
+
+ // 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.
+
+ // The associated testing profile.
+ scoped_ptr<TestingProfile> profile_;
+
+ // The ExtensionService, whose lifetime is managed by |profile|'s
+ // ExtensionSystem.
+ ExtensionService* service_;
+
+ 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_;
+
+ // The directory into which extensions are installed.
+ base::FilePath extensions_install_dir_;
+
+ // chrome/test/data/extensions/
+ base::FilePath data_dir_;
+
+ content::InProcessUtilityThreadHelper in_process_utility_thread_helper_;
+
+ // The associated ExtensionRegistry, for convenience.
+ extensions::ExtensionRegistry* registry_;
+
+#if defined OS_CHROMEOS
+ chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
+ chromeos::ScopedTestCrosSettings test_cros_settings_;
+ chromeos::ScopedTestUserManager test_user_manager_;
+#endif
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_TEST_BASE_H_

Powered by Google App Engine
This is Rietveld 408576698