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

Unified Diff: ios/chrome/browser/browser_state/test_chrome_browser_state.h

Issue 1664823003: Upstream ChromeBrowserState sub-classes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 4 years, 10 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: ios/chrome/browser/browser_state/test_chrome_browser_state.h
diff --git a/ios/chrome/browser/browser_state/test_chrome_browser_state.h b/ios/chrome/browser/browser_state/test_chrome_browser_state.h
new file mode 100644
index 0000000000000000000000000000000000000000..93a4ad209953eaa4c12c00297a0b6ef43428e3f8
--- /dev/null
+++ b/ios/chrome/browser/browser_state/test_chrome_browser_state.h
@@ -0,0 +1,172 @@
+// Copyright 2013 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 IOS_CHROME_BROWSER_BROWSER_STATE_TEST_CHROME_BROWSER_STATE_H_
+#define IOS_CHROME_BROWSER_BROWSER_STATE_TEST_CHROME_BROWSER_STATE_H_
+
+#include "base/files/file_path.h"
+#include "base/files/scoped_temp_dir.h"
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
+#include "components/keyed_service/ios/refcounted_browser_state_keyed_service_factory.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/net/net_types.h"
+
+namespace syncable_prefs {
+class PrefServiceSyncable;
+class TestingPrefServiceSyncable;
+}
+
+// This class is the implementation of ChromeBrowserState used for testing.
+class TestChromeBrowserState : public ios::ChromeBrowserState {
+ public:
+ typedef std::vector<
+ std::pair<BrowserStateKeyedServiceFactory*,
+ BrowserStateKeyedServiceFactory::TestingFactoryFunction>>
+ TestingFactories;
+
+ typedef std::vector<std::pair<
+ RefcountedBrowserStateKeyedServiceFactory*,
+ RefcountedBrowserStateKeyedServiceFactory::TestingFactoryFunction>>
+ RefcountedTestingFactories;
+
+ ~TestChromeBrowserState() override;
+
+ // BrowserState:
+ bool IsOffTheRecord() const override;
+ base::FilePath GetStatePath() const override;
+
+ // ChromeBrowserState:
+ scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner() override;
+ ios::ChromeBrowserState* GetOriginalChromeBrowserState() override;
+ bool HasOffTheRecordChromeBrowserState() const override;
+ ios::ChromeBrowserState* GetOffTheRecordChromeBrowserState() override;
+ PrefProxyConfigTracker* GetProxyConfigTracker() override;
+ net::SSLConfigService* GetSSLConfigService() override;
+ PrefService* GetPrefs() override;
+ PrefService* GetOffTheRecordPrefs() override;
+ ChromeBrowserStateIOData* GetIOData() override;
+ void ClearNetworkingHistorySince(base::Time time,
+ const base::Closure& completion) override;
+ net::URLRequestContextGetter* CreateRequestContext(
+ ProtocolHandlerMap* protocol_handlers,
+ URLRequestInterceptorScopedVector request_interceptors) override;
+ net::URLRequestContextGetter* CreateIsolatedRequestContext(
+ const base::FilePath& partition_path) override;
+ TestChromeBrowserState* AsTestChromeBrowserState() override;
+
+ // This method is defined as empty following the paradigm of
+ // TestingProfile::DestroyOffTheRecordProfile().
+ void DestroyOffTheRecordChromeBrowserState() override {}
+
+ // Creates a WebDataService. If not invoked, the web data service is null.
+ void CreateWebDataService();
+
+ // Creates the BookmkarBarModel. If not invoked the bookmark bar model is
+ // NULL. If |delete_file| is true, the bookmarks file is deleted first, then
+ // the model is created. As TestChromeBrowserState deletes the directory
+ // containing the files used by HistoryService, the boolean only matters if
+ // you're recreating the BookmarkModel.
+ //
+ // NOTE: this does not block until the bookmarks are loaded.
+ // TODO(shreyasv): If needed, write a version that blocks.
+ void CreateBookmarkModel(bool delete_file);
+
+ // Creates the history service. If |delete_file| is true, the history file is
+ // deleted first, then the HistoryService is created. As
+ // TestChromeBrowserState deletes the directory containing the files used by
+ // HistoryService, this only matters if you're recreating the HistoryService.
+ bool CreateHistoryService(bool delete_file) WARN_UNUSED_RESULT;
+
+ // Shuts down and nulls out the reference to HistoryService.
+ void DestroyHistoryService();
+
+ // Returns the preferences as a TestingPrefServiceSyncable if possible or
+ // null. Returns null for off-the-record TestChromeBrowserState and also
+ // for TestChromeBrowserState initialized with a custom pref service.
+ syncable_prefs::TestingPrefServiceSyncable* GetTestingPrefService();
+
+ // Helper class that allows for parameterizing the building
+ // of TestChromeBrowserStates.
+ class Builder {
+ public:
+ Builder();
+ ~Builder();
+
+ // Adds a testing factory to the TestChromeBrowserState. These testing
+ // factories are installed before the ProfileKeyedServices are created.
+ void AddTestingFactory(
+ BrowserStateKeyedServiceFactory* service_factory,
+ BrowserStateKeyedServiceFactory::TestingFactoryFunction cb);
+ void AddTestingFactory(
+ RefcountedBrowserStateKeyedServiceFactory* service_factory,
+ RefcountedBrowserStateKeyedServiceFactory::TestingFactoryFunction cb);
+
+ // Sets the path to the directory to be used to hold ChromeBrowserState
+ // data.
+ void SetPath(const base::FilePath& path);
+
+ // Sets the PrefService to be used by the ChromeBrowserState.
+ void SetPrefService(scoped_ptr<syncable_prefs::PrefServiceSyncable> prefs);
+
+ // Creates the TestChromeBrowserState using previously-set settings.
+ scoped_ptr<TestChromeBrowserState> Build();
+
+ private:
+ // If true, Build() has been called.
+ bool build_called_;
+
+ // Various staging variables where values are held until Build() is invoked.
+ base::FilePath state_path_;
+ scoped_ptr<syncable_prefs::PrefServiceSyncable> pref_service_;
+
+ TestingFactories testing_factories_;
+ RefcountedTestingFactories refcounted_testing_factories_;
+
+ DISALLOW_COPY_AND_ASSIGN(Builder);
+ };
+
+ protected:
+ // Used to create the principal TestChromeBrowserState.
+ TestChromeBrowserState(
+ const base::FilePath& path,
+ scoped_ptr<syncable_prefs::PrefServiceSyncable> prefs,
+ const TestingFactories& testing_factories,
+ const RefcountedTestingFactories& refcounted_testing_factories);
+
+ private:
+ friend class Builder;
+
+ // Used to create the incognito TestChromeBrowserState.
+ explicit TestChromeBrowserState(
+ TestChromeBrowserState* original_browser_state);
+
+ // Initialization of the TestChromeBrowserState. This is a separate method
+ // as it needs to be called after the bi-directional link between original
+ // and off-the-record TestChromeBrowserState has been created.
+ void Init();
+
+ // We use a temporary directory to store testing browser state data.
+ // This must be declared before anything that may make use of the
+ // directory so as to ensure files are closed before cleanup.
+ base::ScopedTempDir temp_dir_;
+
+ // The path to this browser state.
+ base::FilePath state_path_;
+
+ // If non-null, |testing_prefs_| points to |prefs_|. It is there to avoid
+ // casting as |prefs_| may not be a TestingPrefServiceSyncable.
+ scoped_ptr<syncable_prefs::PrefServiceSyncable> prefs_;
+ syncable_prefs::TestingPrefServiceSyncable* testing_prefs_;
+
+ // The incognito ChromeBrowserState instance that is associated with this
+ // non-incognito ChromeBrowserState instance.
+ scoped_ptr<TestChromeBrowserState> otr_browser_state_;
+ TestChromeBrowserState* original_browser_state_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestChromeBrowserState);
+};
+
+#endif // IOS_CHROME_BROWSER_BROWSER_STATE_TEST_CHROME_BROWSER_STATE_H_

Powered by Google App Engine
This is Rietveld 408576698