Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_TEST_BASE_TESTING_PROFILE_H_ | 5 #ifndef CHROME_TEST_BASE_TESTING_PROFILE_H_ |
| 6 #define CHROME_TEST_BASE_TESTING_PROFILE_H_ | 6 #define CHROME_TEST_BASE_TESTING_PROFILE_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
| 11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 14 #include "components/browser_context_keyed_service/browser_context_keyed_service _factory.h" | |
| 14 | 15 |
| 15 namespace content { | 16 namespace content { |
| 16 class MockResourceContext; | 17 class MockResourceContext; |
| 17 } | 18 } |
| 18 | 19 |
| 19 namespace extensions { | 20 namespace extensions { |
| 20 class ExtensionPrefs; | 21 class ExtensionPrefs; |
| 21 } | 22 } |
| 22 | 23 |
| 23 namespace history { | 24 namespace history { |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 52 // platforms but must be different on ChromeOS because a logged-in user cannot | 53 // platforms but must be different on ChromeOS because a logged-in user cannot |
| 53 // use "Default" as profile directory. | 54 // use "Default" as profile directory. |
| 54 // Browser- and UI tests should always use this to get to the user's profile | 55 // Browser- and UI tests should always use this to get to the user's profile |
| 55 // directory. Unit-tests, though, should use |kInitialProfile|, which is | 56 // directory. Unit-tests, though, should use |kInitialProfile|, which is |
| 56 // always "Default", because they are runnining without logged-in user. | 57 // always "Default", because they are runnining without logged-in user. |
| 57 static const char kTestUserProfileDir[]; | 58 static const char kTestUserProfileDir[]; |
| 58 | 59 |
| 59 // Default constructor that cannot be used with multi-profiles. | 60 // Default constructor that cannot be used with multi-profiles. |
| 60 TestingProfile(); | 61 TestingProfile(); |
| 61 | 62 |
| 63 typedef std::vector<std::pair< | |
| 64 BrowserContextKeyedServiceFactory*, | |
| 65 BrowserContextKeyedServiceFactory::FactoryFunction> > TestingFactories; | |
| 66 | |
| 62 // Helper class for building an instance of TestingProfile (allows injecting | 67 // Helper class for building an instance of TestingProfile (allows injecting |
| 63 // mocks for various services prior to profile initialization). | 68 // mocks for various services prior to profile initialization). |
| 64 // TODO(atwilson): Remove non-default constructors and various setters in | 69 // TODO(atwilson): Remove non-default constructors and various setters in |
| 65 // favor of using the Builder API. | 70 // favor of using the Builder API. |
| 66 class Builder { | 71 class Builder { |
| 67 public: | 72 public: |
| 68 Builder(); | 73 Builder(); |
| 69 ~Builder(); | 74 ~Builder(); |
| 70 | 75 |
| 71 // Sets a Delegate to be called back when the Profile is fully initialized. | 76 // Sets a Delegate to be called back during profile init. This causes the |
| 72 // This causes the final initialization to be performed via a task so the | 77 // final initialization to be performed via a task so the caller must run |
| 73 // caller must run a MessageLoop. Caller maintains ownership of the Delegate | 78 // a MessageLoop. Caller maintains ownership of the Delegate |
| 74 // and must manage its lifetime so it continues to exist until profile | 79 // and must manage its lifetime so it continues to exist until profile |
| 75 // initialization is complete. | 80 // initialization is complete. |
| 76 void SetDelegate(Delegate* delegate); | 81 void SetDelegate(Delegate* delegate); |
| 77 | 82 |
| 83 // Adds a testing factory to the TestingProfile. These testing factories | |
| 84 // are applied before the ProfileKeyedServices are created. | |
| 85 void AddTestingFactory( | |
| 86 BrowserContextKeyedServiceFactory* service_factory, | |
| 87 BrowserContextKeyedServiceFactory::FactoryFunction callback); | |
|
Elliot Glaysher
2013/08/16 18:07:59
I'm fine with you adding this part of the change,
Andrew T Wilson (Slow)
2013/08/19 12:15:56
So I don't actually like SetGlobalTestingFactory()
Elliot Glaysher
2013/08/19 18:04:30
Yeah, I'm fine with AddTestingFactory() as long as
| |
| 88 | |
| 78 // Sets the ExtensionSpecialStoragePolicy to be returned by | 89 // Sets the ExtensionSpecialStoragePolicy to be returned by |
| 79 // GetExtensionSpecialStoragePolicy(). | 90 // GetExtensionSpecialStoragePolicy(). |
| 80 void SetExtensionSpecialStoragePolicy( | 91 void SetExtensionSpecialStoragePolicy( |
| 81 scoped_refptr<ExtensionSpecialStoragePolicy> policy); | 92 scoped_refptr<ExtensionSpecialStoragePolicy> policy); |
| 82 | 93 |
| 83 // Sets the path to the directory to be used to hold profile data. | 94 // Sets the path to the directory to be used to hold profile data. |
| 84 void SetPath(const base::FilePath& path); | 95 void SetPath(const base::FilePath& path); |
| 85 | 96 |
| 86 // Sets the PrefService to be used by this profile. | 97 // Sets the PrefService to be used by this profile. |
| 87 void SetPrefService(scoped_ptr<PrefServiceSyncable> prefs); | 98 void SetPrefService(scoped_ptr<PrefServiceSyncable> prefs); |
| 88 | 99 |
| 100 // Makes the Profile being built an incognito profile. | |
| 101 void SetIncognito(); | |
| 102 | |
| 89 // Creates the TestingProfile using previously-set settings. | 103 // Creates the TestingProfile using previously-set settings. |
| 90 scoped_ptr<TestingProfile> Build(); | 104 scoped_ptr<TestingProfile> Build(); |
| 91 | 105 |
| 92 private: | 106 private: |
| 93 // If true, Build() has already been called. | 107 // If true, Build() has already been called. |
| 94 bool build_called_; | 108 bool build_called_; |
| 95 | 109 |
| 96 // Various staging variables where values are held until Build() is invoked. | 110 // Various staging variables where values are held until Build() is invoked. |
| 97 scoped_ptr<PrefServiceSyncable> pref_service_; | 111 scoped_ptr<PrefServiceSyncable> pref_service_; |
| 98 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy_; | 112 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy_; |
| 99 base::FilePath path_; | 113 base::FilePath path_; |
| 100 Delegate* delegate_; | 114 Delegate* delegate_; |
| 115 bool incognito_; | |
| 116 TestingFactories testing_factories_; | |
| 101 | 117 |
| 102 DISALLOW_COPY_AND_ASSIGN(Builder); | 118 DISALLOW_COPY_AND_ASSIGN(Builder); |
| 103 }; | 119 }; |
| 104 | 120 |
| 105 // Multi-profile aware constructor that takes the path to a directory managed | 121 // Multi-profile aware constructor that takes the path to a directory managed |
| 106 // for this profile. This constructor is meant to be used by | 122 // for this profile. This constructor is meant to be used by |
| 107 // TestingProfileManager::CreateTestingProfile. If you need to create multi- | 123 // TestingProfileManager::CreateTestingProfile. If you need to create multi- |
| 108 // profile profiles, use that factory method instead of this directly. | 124 // profile profiles, use that factory method instead of this directly. |
| 109 // Exception: if you need to create multi-profile profiles for testing the | 125 // Exception: if you need to create multi-profile profiles for testing the |
| 110 // ProfileManager, then use the constructor below instead. | 126 // ProfileManager, then use the constructor below instead. |
| 111 explicit TestingProfile(const base::FilePath& path); | 127 explicit TestingProfile(const base::FilePath& path); |
| 112 | 128 |
| 113 // Multi-profile aware constructor that takes the path to a directory managed | 129 // Multi-profile aware constructor that takes the path to a directory managed |
| 114 // for this profile and a delegate. This constructor is meant to be used | 130 // for this profile and a delegate. This constructor is meant to be used |
| 115 // for unittesting the ProfileManager. | 131 // for unittesting the ProfileManager. |
| 116 TestingProfile(const base::FilePath& path, Delegate* delegate); | 132 TestingProfile(const base::FilePath& path, Delegate* delegate); |
| 117 | 133 |
| 118 // Full constructor allowing the setting of all possible instance data. | 134 // Full constructor allowing the setting of all possible instance data. |
| 119 // Callers should use Builder::Build() instead of invoking this constructor. | 135 // Callers should use Builder::Build() instead of invoking this constructor. |
| 120 TestingProfile(const base::FilePath& path, | 136 TestingProfile(const base::FilePath& path, |
| 121 Delegate* delegate, | 137 Delegate* delegate, |
| 122 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, | 138 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, |
| 123 scoped_ptr<PrefServiceSyncable> prefs); | 139 scoped_ptr<PrefServiceSyncable> prefs, |
| 140 bool incognito, | |
| 141 const TestingFactories& factories); | |
| 124 | 142 |
| 125 virtual ~TestingProfile(); | 143 virtual ~TestingProfile(); |
| 126 | 144 |
| 127 // Creates the favicon service. Consequent calls would recreate the service. | 145 // Creates the favicon service. Consequent calls would recreate the service. |
| 128 void CreateFaviconService(); | 146 void CreateFaviconService(); |
| 129 | 147 |
| 130 // Creates the history service. If |delete_file| is true, the history file is | 148 // Creates the history service. If |delete_file| is true, the history file is |
| 131 // deleted first, then the HistoryService is created. As TestingProfile | 149 // deleted first, then the HistoryService is created. As TestingProfile |
| 132 // deletes the directory containing the files used by HistoryService, this | 150 // deletes the directory containing the files used by HistoryService, this |
| 133 // only matters if you're recreating the HistoryService. If |no_db| is true, | 151 // only matters if you're recreating the HistoryService. If |no_db| is true, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 179 content::ProtocolHandlerMap* protocol_handlers) OVERRIDE; | 197 content::ProtocolHandlerMap* protocol_handlers) OVERRIDE; |
| 180 virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess( | 198 virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess( |
| 181 int renderer_child_id) OVERRIDE; | 199 int renderer_child_id) OVERRIDE; |
| 182 virtual content::ResourceContext* GetResourceContext() OVERRIDE; | 200 virtual content::ResourceContext* GetResourceContext() OVERRIDE; |
| 183 virtual content::GeolocationPermissionContext* | 201 virtual content::GeolocationPermissionContext* |
| 184 GetGeolocationPermissionContext() OVERRIDE; | 202 GetGeolocationPermissionContext() OVERRIDE; |
| 185 virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; | 203 virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; |
| 186 | 204 |
| 187 virtual TestingProfile* AsTestingProfile() OVERRIDE; | 205 virtual TestingProfile* AsTestingProfile() OVERRIDE; |
| 188 virtual std::string GetProfileName() OVERRIDE; | 206 virtual std::string GetProfileName() OVERRIDE; |
| 189 void set_incognito(bool incognito) { incognito_ = incognito; } | 207 |
| 208 // DEPRECATED. | |
| 209 // Changes a profile's to/from incognito mode temporarily - profile will be | |
| 210 // returned to non-incognito before destruction to allow services to | |
| 211 // properly shutdown. This is only supported for legacy tests - new tests | |
| 212 // should create a true incognito profile using Builder::SetIncognito() or | |
| 213 // by using the TestingProfile constructor that allows setting the incognito | |
| 214 // flag. | |
| 215 void ForceIncognito(bool force_incognito) { | |
| 216 force_incognito_ = force_incognito; | |
| 217 } | |
| 218 | |
| 190 // Assumes ownership. | 219 // Assumes ownership. |
| 191 virtual void SetOffTheRecordProfile(Profile* profile); | 220 virtual void SetOffTheRecordProfile(scoped_ptr<Profile> profile); |
| 192 virtual void SetOriginalProfile(Profile* profile); | 221 virtual void SetOriginalProfile(Profile* profile); |
| 193 virtual Profile* GetOffTheRecordProfile() OVERRIDE; | 222 virtual Profile* GetOffTheRecordProfile() OVERRIDE; |
| 194 virtual void DestroyOffTheRecordProfile() OVERRIDE {} | 223 virtual void DestroyOffTheRecordProfile() OVERRIDE {} |
| 195 virtual bool HasOffTheRecordProfile() OVERRIDE; | 224 virtual bool HasOffTheRecordProfile() OVERRIDE; |
| 196 virtual Profile* GetOriginalProfile() OVERRIDE; | 225 virtual Profile* GetOriginalProfile() OVERRIDE; |
| 197 virtual bool IsManaged() OVERRIDE; | 226 virtual bool IsManaged() OVERRIDE; |
| 198 virtual ExtensionService* GetExtensionService() OVERRIDE; | 227 virtual ExtensionService* GetExtensionService() OVERRIDE; |
| 199 void SetExtensionSpecialStoragePolicy( | 228 void SetExtensionSpecialStoragePolicy( |
| 200 ExtensionSpecialStoragePolicy* extension_special_storage_policy); | 229 ExtensionSpecialStoragePolicy* extension_special_storage_policy); |
| 201 virtual ExtensionSpecialStoragePolicy* | 230 virtual ExtensionSpecialStoragePolicy* |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 299 // maps to this profile. | 328 // maps to this profile. |
| 300 void CreateProfilePolicyConnector(); | 329 void CreateProfilePolicyConnector(); |
| 301 | 330 |
| 302 // Internally, this is a TestURLRequestContextGetter that creates a dummy | 331 // Internally, this is a TestURLRequestContextGetter that creates a dummy |
| 303 // request context. Currently, only the CookieMonster is hooked up. | 332 // request context. Currently, only the CookieMonster is hooked up. |
| 304 scoped_refptr<net::URLRequestContextGetter> extensions_request_context_; | 333 scoped_refptr<net::URLRequestContextGetter> extensions_request_context_; |
| 305 | 334 |
| 306 std::wstring id_; | 335 std::wstring id_; |
| 307 | 336 |
| 308 bool incognito_; | 337 bool incognito_; |
| 338 bool force_incognito_; | |
| 309 scoped_ptr<Profile> incognito_profile_; | 339 scoped_ptr<Profile> incognito_profile_; |
| 310 Profile* original_profile_; | 340 Profile* original_profile_; |
| 311 | 341 |
| 312 // Did the last session exit cleanly? Default is true. | 342 // Did the last session exit cleanly? Default is true. |
| 313 bool last_session_exited_cleanly_; | 343 bool last_session_exited_cleanly_; |
| 314 | 344 |
| 315 scoped_refptr<HostContentSettingsMap> host_content_settings_map_; | 345 scoped_refptr<HostContentSettingsMap> host_content_settings_map_; |
| 316 | 346 |
| 317 base::FilePath last_selected_directory_; | 347 base::FilePath last_selected_directory_; |
| 318 scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. | 348 scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 340 // scoped_ptr<>. | 370 // scoped_ptr<>. |
| 341 content::MockResourceContext* resource_context_; | 371 content::MockResourceContext* resource_context_; |
| 342 | 372 |
| 343 scoped_ptr<policy::ProfilePolicyConnector> profile_policy_connector_; | 373 scoped_ptr<policy::ProfilePolicyConnector> profile_policy_connector_; |
| 344 | 374 |
| 345 // Weak pointer to a delegate for indicating that a profile was created. | 375 // Weak pointer to a delegate for indicating that a profile was created. |
| 346 Delegate* delegate_; | 376 Delegate* delegate_; |
| 347 }; | 377 }; |
| 348 | 378 |
| 349 #endif // CHROME_TEST_BASE_TESTING_PROFILE_H_ | 379 #endif // CHROME_TEST_BASE_TESTING_PROFILE_H_ |
| OLD | NEW |