| Index: chrome/browser/safe_browsing/safe_browsing_test.cc
|
| diff --git a/chrome/browser/safe_browsing/safe_browsing_test.cc b/chrome/browser/safe_browsing/safe_browsing_test.cc
|
| index 55f3bb8f1ef24eccc67025782de6a24883be1d65..ccec75c38f06a36148e760a5c6bd26a508b810dc 100644
|
| --- a/chrome/browser/safe_browsing/safe_browsing_test.cc
|
| +++ b/chrome/browser/safe_browsing/safe_browsing_test.cc
|
| @@ -33,6 +33,7 @@
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/safe_browsing/protocol_manager.h"
|
| #include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
| +#include "chrome/common/chrome_notification_types.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| @@ -227,6 +228,17 @@ class SafeBrowsingServiceTest : public InProcessBrowserTest {
|
| }
|
|
|
| void ForceUpdate() {
|
| + content::WindowedNotificationObserver observer(
|
| + chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE,
|
| + content::Source<SafeBrowsingService>(safe_browsing_service_));
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&SafeBrowsingServiceTest::ForceUpdateOnIOThread,
|
| + this));
|
| + observer.Wait();
|
| + }
|
| +
|
| + void ForceUpdateOnIOThread() {
|
| + EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| ASSERT_TRUE(safe_browsing_service_);
|
| safe_browsing_service_->protocol_manager_->ForceScheduleNextUpdate(0);
|
| }
|
| @@ -378,25 +390,6 @@ class SafeBrowsingServiceTestHelper
|
| NOTREACHED() << "Not implemented.";
|
| }
|
|
|
| - // Functions and callbacks to start the safebrowsing database update.
|
| - void ForceUpdate() {
|
| - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&SafeBrowsingServiceTestHelper::ForceUpdateInIOThread,
|
| - this));
|
| - // Will continue after OnForceUpdateDone().
|
| - content::RunMessageLoop();
|
| - }
|
| - void ForceUpdateInIOThread() {
|
| - EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - safe_browsing_test_->ForceUpdate();
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&SafeBrowsingServiceTestHelper::OnForceUpdateDone,
|
| - this));
|
| - }
|
| - void OnForceUpdateDone() {
|
| - StopUILoop();
|
| - }
|
| -
|
| // Functions and callbacks related to CheckUrl. These are used to verify
|
| // phishing URLs.
|
| void CheckUrl(const GURL& url) {
|
| @@ -444,14 +437,13 @@ class SafeBrowsingServiceTestHelper
|
| StopUILoop();
|
| }
|
|
|
| - // Wait for a given period to get safebrowsing status updated.
|
| - void WaitForStatusUpdate(base::TimeDelta wait_time) {
|
| - BrowserThread::PostDelayedTask(
|
| + // Update safebrowsing status.
|
| + void UpdateStatus() {
|
| + BrowserThread::PostTask(
|
| BrowserThread::IO,
|
| FROM_HERE,
|
| base::Bind(&SafeBrowsingServiceTestHelper::CheckStatusOnIOThread,
|
| - this),
|
| - wait_time);
|
| + this));
|
| // Will continue after OnWaitForStatusUpdateDone().
|
| content::RunMessageLoop();
|
| }
|
| @@ -570,7 +562,7 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest,
|
| // The wait will stop once OnWaitForStatusUpdateDone in
|
| // safe_browsing_helper is called and status from safe_browsing_service_
|
| // is checked.
|
| - safe_browsing_helper->WaitForStatusUpdate(base::TimeDelta());
|
| + safe_browsing_helper->UpdateStatus();
|
| EXPECT_TRUE(is_database_ready());
|
| EXPECT_FALSE(is_update_scheduled());
|
| EXPECT_TRUE(last_update().is_null());
|
| @@ -585,20 +577,15 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest,
|
| EXPECT_FALSE(is_update_scheduled());
|
|
|
| // Starts safebrowsing update on IO thread. Waits till scheduled
|
| - // update finishes. Stops waiting after kMaxWaitSecPerStep if the update
|
| - // could not finish.
|
| + // update finishes.
|
| base::Time now = base::Time::Now();
|
| SetTestStep(step);
|
| - safe_browsing_helper->ForceUpdate();
|
| -
|
| - // TODO(mattm): use NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE instead.
|
| - do {
|
| - // Periodically pull the status.
|
| - safe_browsing_helper->WaitForStatusUpdate(
|
| - TestTimeouts::tiny_timeout());
|
| - } while (is_update_scheduled() || !is_database_ready());
|
| -
|
| + ForceUpdate();
|
|
|
| + safe_browsing_helper->UpdateStatus();
|
| + EXPECT_TRUE(is_database_ready());
|
| + EXPECT_FALSE(is_update_scheduled());
|
| + EXPECT_FALSE(last_update().is_null());
|
| if (last_update() < now) {
|
| // This means no data available anymore.
|
| break;
|
|
|