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

Unified Diff: chrome/test/base/testing_profile.cc

Issue 23068005: Convert UserPolicySigninService to use OAuth2TokenService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with ToT Created 7 years, 4 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
« no previous file with comments | « chrome/test/base/testing_profile.h ('k') | chrome/test/base/testing_profile_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/base/testing_profile.cc
diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc
index e37adf472464612d81b15893b2b91612387b4f68..4f9733e95e08d24873bcc057abcdf474348486c6 100644
--- a/chrome/test/base/testing_profile.cc
+++ b/chrome/test/base/testing_profile.cc
@@ -167,6 +167,7 @@ TestingProfile::TestingProfile()
: start_time_(Time::Now()),
testing_prefs_(NULL),
incognito_(false),
+ force_incognito_(false),
original_profile_(NULL),
last_session_exited_cleanly_(true),
browser_context_dependency_manager_(
@@ -184,6 +185,7 @@ TestingProfile::TestingProfile(const base::FilePath& path)
: start_time_(Time::Now()),
testing_prefs_(NULL),
incognito_(false),
+ force_incognito_(false),
original_profile_(NULL),
last_session_exited_cleanly_(true),
profile_path_(path),
@@ -200,6 +202,7 @@ TestingProfile::TestingProfile(const base::FilePath& path,
: start_time_(Time::Now()),
testing_prefs_(NULL),
incognito_(false),
+ force_incognito_(false),
original_profile_(NULL),
last_session_exited_cleanly_(true),
profile_path_(path),
@@ -221,11 +224,14 @@ TestingProfile::TestingProfile(
const base::FilePath& path,
Delegate* delegate,
scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy,
- scoped_ptr<PrefServiceSyncable> prefs)
+ scoped_ptr<PrefServiceSyncable> prefs,
+ bool incognito,
+ const TestingFactories& factories)
: start_time_(Time::Now()),
prefs_(prefs.release()),
testing_prefs_(NULL),
- incognito_(false),
+ incognito_(incognito),
+ force_incognito_(false),
original_profile_(NULL),
last_session_exited_cleanly_(true),
extension_special_storage_policy_(extension_policy),
@@ -241,6 +247,12 @@ TestingProfile::TestingProfile(
profile_path_ = temp_dir_.path();
}
+ // Set any testing factories prior to initializing the services.
+ for (TestingFactories::const_iterator it = factories.begin();
+ it != factories.end(); ++it) {
+ it->first->SetTestingFactory(this, it->second);
+ }
+
Init();
// If caller supplied a delegate, delay the FinishInit invocation until other
// tasks have run.
@@ -309,7 +321,11 @@ void TestingProfile::Init() {
extensions::ExtensionSystemFactory::GetInstance()->SetTestingFactory(
this, extensions::TestExtensionSystem::Build);
- browser_context_dependency_manager_->CreateBrowserContextServices(this, true);
+ // If there is no separate original profile specified for this profile, then
+ // force preferences to be registered - this allows tests to create a
+ // standalone incognito profile while still having prefs registered.
+ browser_context_dependency_manager_->CreateBrowserContextServicesForTest(
+ this, !original_profile_);
#if defined(ENABLE_NOTIFICATIONS)
// Install profile keyed service factory hooks for dummy/test services
@@ -330,6 +346,9 @@ void TestingProfile::FinishInit() {
}
TestingProfile::~TestingProfile() {
+ // Revert to non-incognito mode before shutdown.
+ force_incognito_ = false;
+
// Any objects holding live URLFetchers should be deleted before teardown.
TemplateURLFetcherFactory::ShutdownForProfile(this);
@@ -526,18 +545,22 @@ std::string TestingProfile::GetProfileName() {
}
bool TestingProfile::IsOffTheRecord() const {
- return incognito_;
+ return force_incognito_ || incognito_;
}
-void TestingProfile::SetOffTheRecordProfile(Profile* profile) {
- incognito_profile_.reset(profile);
+void TestingProfile::SetOffTheRecordProfile(scoped_ptr<Profile> profile) {
+ DCHECK(!IsOffTheRecord());
+ incognito_profile_ = profile.Pass();
}
void TestingProfile::SetOriginalProfile(Profile* profile) {
+ DCHECK(IsOffTheRecord());
original_profile_ = profile;
}
Profile* TestingProfile::GetOffTheRecordProfile() {
+ if (IsOffTheRecord())
+ return this;
return incognito_profile_.get();
}
@@ -796,7 +819,8 @@ Profile::ExitType TestingProfile::GetLastSessionExitType() {
TestingProfile::Builder::Builder()
: build_called_(false),
- delegate_(NULL) {
+ delegate_(NULL),
+ incognito_(false) {
}
TestingProfile::Builder::~Builder() {
@@ -820,6 +844,16 @@ void TestingProfile::Builder::SetPrefService(
pref_service_ = prefs.Pass();
}
+void TestingProfile::Builder::SetIncognito() {
+ incognito_ = true;
+}
+
+void TestingProfile::Builder::AddTestingFactory(
+ BrowserContextKeyedServiceFactory* service_factory,
+ BrowserContextKeyedServiceFactory::FactoryFunction callback) {
+ testing_factories_.push_back(std::make_pair(service_factory, callback));
+}
+
scoped_ptr<TestingProfile> TestingProfile::Builder::Build() {
DCHECK(!build_called_);
build_called_ = true;
@@ -827,5 +861,7 @@ scoped_ptr<TestingProfile> TestingProfile::Builder::Build() {
path_,
delegate_,
extension_policy_,
- pref_service_.Pass()));
+ pref_service_.Pass(),
+ incognito_,
+ testing_factories_));
}
« no previous file with comments | « chrome/test/base/testing_profile.h ('k') | chrome/test/base/testing_profile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698