| 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_
|
|
|