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

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

Issue 10399087: Converting BookmarkModel and HistoryService to ProfileKeyedServices. This just performs the initial… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 6 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') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/base/testing_profile.cc
===================================================================
--- chrome/test/base/testing_profile.cc (revision 141067)
+++ chrome/test/base/testing_profile.cc (working copy)
@@ -14,6 +14,7 @@
#include "base/string_number_conversions.h"
#include "chrome/browser/autocomplete/autocomplete_classifier.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
+#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
@@ -26,6 +27,7 @@
#include "chrome/browser/geolocation/chrome_geolocation_permission_context.h"
#include "chrome/browser/history/history.h"
#include "chrome/browser/history/history_backend.h"
+#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/history/top_sites.h"
#include "chrome/browser/net/proxy_service_factory.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
@@ -245,8 +247,6 @@
host_content_settings_map_->ShutdownOnUIThread();
DestroyTopSites();
- DestroyHistoryService();
- // FaviconService depends on HistoryServce so destroying it later.
DestroyFaviconService();
if (pref_proxy_config_tracker_.get())
@@ -257,6 +257,11 @@
favicon_service_.reset(new FaviconService(this));
}
+static scoped_refptr<RefcountedProfileKeyedService> BuildHistoryService(
+ Profile* profile) {
+ return new HistoryService(profile);
+}
+
void TestingProfile::CreateHistoryService(bool delete_file, bool no_db) {
DestroyHistoryService();
if (delete_file) {
@@ -264,18 +269,28 @@
path = path.Append(chrome::kHistoryFilename);
file_util::Delete(path, false);
}
- history_service_ = new HistoryService(this);
- history_service_->Init(GetPath(), bookmark_bar_model_.get(), no_db);
+ // This will create and init the history service.
+ HistoryService* history_service = static_cast<HistoryService*>(
+ HistoryServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+ this, BuildHistoryService).get());
+ if (!history_service->Init(this->GetPath(),
+ reinterpret_cast<BookmarkService*>(
+ BookmarkModelFactory::GetForProfile(this)),
+ no_db)) {
+ HistoryServiceFactory::GetInstance()->SetTestingFactoryAndUse(this, NULL);
+ }
}
void TestingProfile::DestroyHistoryService() {
- if (!history_service_.get())
+ scoped_refptr<HistoryService> history_service =
+ HistoryServiceFactory::GetForProfileIfExists(this);
+ if (!history_service.get())
return;
- history_service_->NotifyRenderProcessHostDestruction(0);
- history_service_->SetOnBackendDestroyTask(MessageLoop::QuitClosure());
- history_service_->Cleanup();
- history_service_ = NULL;
+ history_service->NotifyRenderProcessHostDestruction(0);
+ history_service->SetOnBackendDestroyTask(MessageLoop::QuitClosure());
+ history_service->Cleanup();
+ HistoryServiceFactory::ShutdownForProfile(this);
// Wait for the backend class to terminate before deleting the files and
// moving to the next test. Note: if this never terminates, somebody is
@@ -312,23 +327,34 @@
favicon_service_.reset();
}
+static ProfileKeyedService* BuildBookmarkModel(Profile* profile) {
+ BookmarkModel* bookmark_model = new BookmarkModel(profile);
+ bookmark_model->Load();
+ return bookmark_model;
+}
+
+
void TestingProfile::CreateBookmarkModel(bool delete_file) {
- // Nuke the model first, that way we're sure it's done writing to disk.
- bookmark_bar_model_.reset(NULL);
if (delete_file) {
FilePath path = GetPath();
path = path.Append(chrome::kBookmarksFileName);
file_util::Delete(path, false);
}
- bookmark_bar_model_.reset(new BookmarkModel(this));
- if (history_service_.get()) {
- history_service_->history_backend_->bookmark_service_ =
- bookmark_bar_model_.get();
- history_service_->history_backend_->expirer_.bookmark_service_ =
- bookmark_bar_model_.get();
+ // This will create a bookmark model.
+ BookmarkModel* bookmark_service =
+ static_cast<BookmarkModel*>(
+ BookmarkModelFactory::GetInstance()->SetTestingFactoryAndUse(
+ this, BuildBookmarkModel));
+
+ HistoryService* history_service =
+ HistoryServiceFactory::GetForProfileIfExists(this).get();
+ if (history_service) {
+ history_service->history_backend_->bookmark_service_ =
+ bookmark_service;
+ history_service->history_backend_->expirer_.bookmark_service_ =
+ bookmark_service;
}
- bookmark_bar_model_->Load();
}
void TestingProfile::CreateAutocompleteClassifier() {
@@ -354,14 +380,14 @@
}
void TestingProfile::BlockUntilBookmarkModelLoaded() {
- DCHECK(bookmark_bar_model_.get());
- if (bookmark_bar_model_->IsLoaded())
+ DCHECK(GetBookmarkModel());
+ if (GetBookmarkModel()->IsLoaded())
return;
BookmarkLoadObserver observer;
- bookmark_bar_model_->AddObserver(&observer);
+ GetBookmarkModel()->AddObserver(&observer);
MessageLoop::current()->Run();
- bookmark_bar_model_->RemoveObserver(&observer);
- DCHECK(bookmark_bar_model_->IsLoaded());
+ GetBookmarkModel()->RemoveObserver(&observer);
+ DCHECK(GetBookmarkModel()->IsLoaded());
}
// TODO(phajdan.jr): Doesn't this hang if Top Sites are already loaded?
@@ -476,11 +502,11 @@
}
HistoryService* TestingProfile::GetHistoryService(ServiceAccessType access) {
- return history_service_.get();
+ return HistoryServiceFactory::GetForProfileIfExists(this);
}
HistoryService* TestingProfile::GetHistoryServiceWithoutCreating() {
- return history_service_.get();
+ return HistoryServiceFactory::GetForProfileIfExists(this);
}
net::CookieMonster* TestingProfile::GetCookieMonster() {
@@ -652,7 +678,7 @@
}
BookmarkModel* TestingProfile::GetBookmarkModel() {
- return bookmark_bar_model_.get();
+ return BookmarkModelFactory::GetForProfileIfExists(this);
}
bool TestingProfile::IsSameProfile(Profile *p) {
@@ -684,11 +710,13 @@
}
void TestingProfile::BlockUntilHistoryProcessesPendingRequests() {
- DCHECK(history_service_.get());
+ scoped_refptr<HistoryService> history_service =
+ HistoryServiceFactory::GetForProfileIfExists(this);
+ DCHECK(history_service.get());
DCHECK(MessageLoop::current());
CancelableRequestConsumer consumer;
- history_service_->ScheduleDBTask(new QuittingHistoryDBTask(), &consumer);
+ history_service->ScheduleDBTask(new QuittingHistoryDBTask(), &consumer);
MessageLoop::current()->Run();
}
« no previous file with comments | « chrome/test/base/testing_profile.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698