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

Unified Diff: chrome/browser/search_engines/template_url_service_test_util.cc

Issue 10185008: Taking over issue 10006037: Moved WebDataService to ProfileKeyedService (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 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
Index: chrome/browser/search_engines/template_url_service_test_util.cc
===================================================================
--- chrome/browser/search_engines/template_url_service_test_util.cc (revision 136024)
+++ chrome/browser/search_engines/template_url_service_test_util.cc (working copy)
@@ -8,10 +8,12 @@
#include "base/message_loop.h"
#include "base/path_service.h"
#include "base/scoped_temp_dir.h"
+#include "base/synchronization/waitable_event.h"
#include "base/threading/thread.h"
#include "chrome/browser/search_engines/search_terms_data.h"
#include "chrome/browser/search_engines/template_url_service.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
+#include "chrome/browser/webdata/web_data_service_factory.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/testing_pref_service.h"
@@ -62,9 +64,8 @@
io_thread_.StartIOThread();
}
- virtual WebDataService* GetWebDataService(ServiceAccessType access) {
- return service_.get();
- }
+ static scoped_refptr<RefcountedProfileKeyedService>
+ GetWebDataServiceForTemplateURLServiceTestingProfile(Profile* profile);
private:
scoped_refptr<WebDataService> service_;
@@ -73,6 +74,7 @@
content::TestBrowserThread io_thread_;
};
+
// Trivial subclass of TemplateURLService that records the last invocation of
// SetKeywordSearchTermsForURL.
class TestingTemplateURLService : public TemplateURLService {
@@ -128,15 +130,31 @@
io_thread_.Stop();
// Clean up the test directory.
- if (service_.get())
- service_->Shutdown();
+ if (service_.get()) {
+ service_->ShutdownOnUIThread();
+ service_ = NULL;
+ }
// Note that we must ensure the DB thread is stopped after WDS
// shutdown (so it can commit pending transactions) but before
// deleting the test profile directory, otherwise we may not be
// able to delete it due to an open transaction.
+ // Schedule another task on the DB thread to notify us that it's safe to
+ // carry on with the test.
+ base::WaitableEvent done(false, false);
+ BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
+ base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done)));
+ done.Wait();
db_thread_.Stop();
}
+scoped_refptr<RefcountedProfileKeyedService>
+TemplateURLServiceTestingProfile::
+ GetWebDataServiceForTemplateURLServiceTestingProfile(Profile* profile) {
+ TemplateURLServiceTestingProfile* test_profile =
+ reinterpret_cast<TemplateURLServiceTestingProfile*>(profile);
+ return test_profile->service_;
Peter Kasting 2012/05/11 22:29:32 Nit: Should we move the temp dir/service init from
rpetterson 2012/05/11 23:09:10 Yes, the way you describe makes more logical sense
+}
+
TemplateURLServiceTestUtil::TemplateURLServiceTestUtil()
: ui_thread_(BrowserThread::UI, &message_loop_),
changed_count_(0) {
@@ -147,6 +165,10 @@
void TemplateURLServiceTestUtil::SetUp() {
profile_.reset(new TemplateURLServiceTestingProfile());
+ WebDataServiceFactory::GetInstance()->SetTestingFactory(
+ profile_.get(), TemplateURLServiceTestingProfile::
+ GetWebDataServiceForTemplateURLServiceTestingProfile);
+
profile_->SetUp();
TemplateURLService* service = static_cast<TemplateURLService*>(
TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
@@ -197,7 +219,8 @@
model()->ChangeToLoadedState();
// Initialize the web data service so that the database gets updated with
// any changes made.
- model()->service_ = profile_->GetWebDataService(Profile::EXPLICIT_ACCESS);
+ model()->service_ = WebDataServiceFactory::GetForProfile(
+ profile_.get(), Profile::EXPLICIT_ACCESS);
}
void TemplateURLServiceTestUtil::ClearModel() {

Powered by Google App Engine
This is Rietveld 408576698