| Index: chrome/browser/search_engines/template_url_service_test_util.cc
|
| diff --git a/chrome/browser/search_engines/template_url_service_test_util.cc b/chrome/browser/search_engines/template_url_service_test_util.cc
|
| index 244046e4848afb903065da334133e6f0e2a04cbc..fb03fd306c5466b7279ea4c360981ed9be85027f 100644
|
| --- a/chrome/browser/search_engines/template_url_service_test_util.cc
|
| +++ b/chrome/browser/search_engines/template_url_service_test_util.cc
|
| @@ -5,7 +5,6 @@
|
| #include "chrome/browser/search_engines/template_url_service_test_util.h"
|
|
|
| #include "base/bind.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| #include "base/message_loop.h"
|
| #include "base/path_service.h"
|
| #include "base/synchronization/waitable_event.h"
|
| @@ -53,35 +52,6 @@ static void WaitForThreadToProcessRequests(BrowserThread::ID identifier) {
|
|
|
| } // namespace
|
|
|
| -// Subclass the TestingProfile so that it can return a WebDataService.
|
| -class TemplateURLServiceTestingProfile : public TestingProfile {
|
| - public:
|
| - TemplateURLServiceTestingProfile()
|
| - : TestingProfile(),
|
| - db_thread_(BrowserThread::DB),
|
| - io_thread_(BrowserThread::IO) {
|
| - }
|
| -
|
| - void SetUp();
|
| - void TearDown();
|
| -
|
| - // Starts the I/O thread. This isn't done automatically because not every test
|
| - // needs this.
|
| - void StartIOThread() {
|
| - io_thread_.StartIOThread();
|
| - }
|
| -
|
| - static scoped_refptr<RefcountedProfileKeyedService>
|
| - GetWebDataServiceForTemplateURLServiceTestingProfile(Profile* profile);
|
| -
|
| - private:
|
| - scoped_refptr<WebDataService> service_;
|
| - base::ScopedTempDir temp_dir_;
|
| - content::TestBrowserThread db_thread_;
|
| - content::TestBrowserThread io_thread_;
|
| -};
|
| -
|
| -
|
| // Trivial subclass of TemplateURLService that records the last invocation of
|
| // SetKeywordSearchTermsForURL.
|
| class TestingTemplateURLService : public TemplateURLService {
|
| @@ -113,21 +83,40 @@ class TestingTemplateURLService : public TemplateURLService {
|
| DISALLOW_COPY_AND_ASSIGN(TestingTemplateURLService);
|
| };
|
|
|
| -void TemplateURLServiceTestingProfile::SetUp() {
|
| - db_thread_.Start();
|
| +TemplateURLServiceTestUtil::TemplateURLServiceTestUtil()
|
| + : ui_thread_(BrowserThread::UI, &message_loop_),
|
| + db_thread_(BrowserThread::DB),
|
| + io_thread_(BrowserThread::IO),
|
| + changed_count_(0) {
|
| +}
|
|
|
| +TemplateURLServiceTestUtil::~TemplateURLServiceTestUtil() {
|
| +}
|
| +
|
| +void TemplateURLServiceTestUtil::SetUp() {
|
| // Make unique temp directory.
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| + profile_.reset(new TestingProfile(temp_dir_.path()));
|
| + db_thread_.Start();
|
| + profile_->CreateWebDataService();
|
| +
|
| + TemplateURLService* service = static_cast<TemplateURLService*>(
|
| + TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
|
| + profile_.get(), TestingTemplateURLService::Build));
|
| + service->AddObserver(this);
|
|
|
| - base::FilePath path = temp_dir_.path().AppendASCII("TestDataService.db");
|
| - service_ = new WebDataService;
|
| - ASSERT_TRUE(service_->InitWithPath(path));
|
| +#if defined(OS_CHROMEOS)
|
| + google_util::chromeos::ClearBrandForCurrentSession();
|
| +#endif
|
| }
|
|
|
| -void TemplateURLServiceTestingProfile::TearDown() {
|
| - // Clear the request context so it will get deleted. This should be done
|
| - // before shutting down the I/O thread to avoid memory leaks.
|
| - ResetRequestContext();
|
| +void TemplateURLServiceTestUtil::TearDown() {
|
| + if (profile_.get()) {
|
| + // Clear the request context so it will get deleted. This should be done
|
| + // before shutting down the I/O thread to avoid memory leaks.
|
| + profile_->ResetRequestContext();
|
| + profile_.reset();
|
| + }
|
|
|
| // Wait for the delete of the request context to happen.
|
| if (io_thread_.IsRunning())
|
| @@ -136,11 +125,6 @@ void TemplateURLServiceTestingProfile::TearDown() {
|
| // The I/O thread must be shutdown before the DB thread.
|
| io_thread_.Stop();
|
|
|
| - // Clean up the test directory.
|
| - 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
|
| @@ -151,47 +135,10 @@ void TemplateURLServiceTestingProfile::TearDown() {
|
| BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
|
| base::Bind(&base::WaitableEvent::Signal, base::Unretained(&done)));
|
| done.Wait();
|
| + MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure());
|
| + MessageLoop::current()->Run();
|
| db_thread_.Stop();
|
| -}
|
| -
|
| -scoped_refptr<RefcountedProfileKeyedService>
|
| -TemplateURLServiceTestingProfile::
|
| - GetWebDataServiceForTemplateURLServiceTestingProfile(Profile* profile) {
|
| - TemplateURLServiceTestingProfile* test_profile =
|
| - reinterpret_cast<TemplateURLServiceTestingProfile*>(profile);
|
| - return test_profile->service_;
|
| -}
|
| -
|
| -TemplateURLServiceTestUtil::TemplateURLServiceTestUtil()
|
| - : ui_thread_(BrowserThread::UI, &message_loop_),
|
| - changed_count_(0) {
|
| -}
|
| -
|
| -TemplateURLServiceTestUtil::~TemplateURLServiceTestUtil() {
|
| -}
|
| -
|
| -void TemplateURLServiceTestUtil::SetUp() {
|
| - profile_.reset(new TemplateURLServiceTestingProfile());
|
| - WebDataServiceFactory::GetInstance()->SetTestingFactory(
|
| - profile_.get(), TemplateURLServiceTestingProfile::
|
| - GetWebDataServiceForTemplateURLServiceTestingProfile);
|
|
|
| - profile_->SetUp();
|
| - TemplateURLService* service = static_cast<TemplateURLService*>(
|
| - TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
|
| - profile_.get(), TestingTemplateURLService::Build));
|
| - service->AddObserver(this);
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| - google_util::chromeos::ClearBrandForCurrentSession();
|
| -#endif
|
| -}
|
| -
|
| -void TemplateURLServiceTestUtil::TearDown() {
|
| - if (profile_.get()) {
|
| - profile_->TearDown();
|
| - profile_.reset();
|
| - }
|
| UIThreadSearchTermsData::SetGoogleBaseURL(std::string());
|
|
|
| // Flush the message loop to make application verifiers happy.
|
| @@ -233,6 +180,7 @@ void TemplateURLServiceTestUtil::ChangeModelToLoadState() {
|
|
|
| model()->service_ = WebDataServiceFactory::GetForProfile(
|
| profile_.get(), Profile::EXPLICIT_ACCESS);
|
| + BlockTillServiceProcessesRequests();
|
| }
|
|
|
| void TemplateURLServiceTestUtil::ClearModel() {
|
| @@ -330,7 +278,7 @@ TestingProfile* TemplateURLServiceTestUtil::profile() const {
|
| }
|
|
|
| void TemplateURLServiceTestUtil::StartIOThread() {
|
| - profile_->StartIOThread();
|
| + io_thread_.StartIOThread();
|
| }
|
|
|
| void TemplateURLServiceTestUtil::PumpLoop() {
|
|
|