diff options
Diffstat (limited to 'chrome/test/testing_profile.cc')
-rw-r--r-- | chrome/test/testing_profile.cc | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/chrome/test/testing_profile.cc b/chrome/test/testing_profile.cc index 6fd04fc..359f64d 100644 --- a/chrome/test/testing_profile.cc +++ b/chrome/test/testing_profile.cc @@ -16,6 +16,7 @@ #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/chrome_thread.h" #include "chrome/browser/dom_ui/ntp_resource_cache.h" +#include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/favicon_service.h" #include "chrome/browser/find_bar_state.h" #include "chrome/browser/geolocation/geolocation_content_settings_map.h" @@ -166,6 +167,7 @@ class TestExtensionURLRequestContextGetter : public URLRequestContextGetter { TestingProfile::TestingProfile() : start_time_(Time::Now()), + testing_prefs_(NULL), created_theme_provider_(false), has_history_service_(false), off_the_record_(false), @@ -207,6 +209,10 @@ TestingProfile::~TestingProfile() { if (top_sites_.get()) top_sites_->ClearProfile(); history::TopSites::DeleteTopSites(top_sites_); + if (extensions_service_.get()) { + extensions_service_->DestroyingProfile(); + extensions_service_ = NULL; + } } void TestingProfile::CreateFaviconService() { @@ -315,13 +321,26 @@ void TestingProfile::UseThemeProvider(BrowserThemeProvider* theme_provider) { theme_provider_.reset(theme_provider); } +scoped_refptr<ExtensionsService> TestingProfile::CreateExtensionsService( + const CommandLine* command_line, + const FilePath& install_directory) { + extensions_service_ = new ExtensionsService(this, + command_line, + install_directory, + false); + return extensions_service_; +} + FilePath TestingProfile::GetPath() { DCHECK(temp_dir_.IsValid()); // TODO(phajdan.jr): do it better. return temp_dir_.path(); } TestingPrefService* TestingProfile::GetTestingPrefService() { - return static_cast<TestingPrefService*>(GetPrefs()); + if (!prefs_.get()) + CreateTestingPrefService(); + DCHECK(testing_prefs_); + return testing_prefs_; } webkit_database::DatabaseTracker* TestingProfile::GetDatabaseTracker() { @@ -330,6 +349,10 @@ webkit_database::DatabaseTracker* TestingProfile::GetDatabaseTracker() { return db_tracker_; } +ExtensionsService* TestingProfile::GetExtensionsService() { + return extensions_service_.get(); +} + net::CookieMonster* TestingProfile::GetCookieMonster() { if (!GetRequestContext()) return NULL; @@ -348,11 +371,22 @@ void TestingProfile::InitThemes() { } } +void TestingProfile::SetPrefService(PrefService* prefs) { + DCHECK(!prefs_.get()); + prefs_.reset(prefs); +} + +void TestingProfile::CreateTestingPrefService() { + DCHECK(!prefs_.get()); + testing_prefs_ = new TestingPrefService(); + prefs_.reset(testing_prefs_); + Profile::RegisterUserPrefs(prefs_.get()); + browser::RegisterAllPrefs(prefs_.get(), prefs_.get()); +} + PrefService* TestingProfile::GetPrefs() { if (!prefs_.get()) { - prefs_.reset(new TestingPrefService()); - Profile::RegisterUserPrefs(prefs_.get()); - browser::RegisterAllPrefs(prefs_.get(), prefs_.get()); + CreateTestingPrefService(); } return prefs_.get(); } |