| Index: content/browser/service_worker/service_worker_browsertest.cc
|
| diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
|
| index 65afe8d82067baf9e1eaecf96e9aa97d66403edd..3a69a41d60e706634c0f4b817b939037908b8ec8 100644
|
| --- a/content/browser/service_worker/service_worker_browsertest.cc
|
| +++ b/content/browser/service_worker/service_worker_browsertest.cc
|
| @@ -259,12 +259,8 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
|
| ASSERT_EQ(SERVICE_WORKER_OK, status);
|
| }
|
|
|
| - void FetchTestHelper(const std::string& worker_url,
|
| - ServiceWorkerFetchEventResult* result,
|
| - ServiceWorkerResponse* response) {
|
| - RunOnIOThread(
|
| - base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url));
|
| -
|
| + void FetchOnRegisteredWorker(ServiceWorkerFetchEventResult* result,
|
| + ServiceWorkerResponse* response) {
|
| FetchResult fetch_result;
|
| fetch_result.status = SERVICE_WORKER_ERROR_FAILED;
|
| base::RunLoop fetch_run_loop;
|
| @@ -280,6 +276,15 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
|
| ASSERT_EQ(SERVICE_WORKER_OK, fetch_result.status);
|
| }
|
|
|
| + void FetchTestHelper(const std::string& worker_url,
|
| + ServiceWorkerFetchEventResult* result,
|
| + ServiceWorkerResponse* response) {
|
| + RunOnIOThread(
|
| + base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url));
|
| +
|
| + FetchOnRegisteredWorker(result, response);
|
| + }
|
| +
|
| void SetUpRegistrationOnIOThread(const std::string& worker_url) {
|
| const int64 version_id = 1L;
|
| registration_ = new ServiceWorkerRegistration(
|
| @@ -323,6 +328,13 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
|
| version_->StopWorker(CreateReceiver(BrowserThread::UI, done, result));
|
| }
|
|
|
| + void SyncEventOnIOThread(const base::Closure& done,
|
| + ServiceWorkerStatusCode* result) {
|
| + ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + version_->DispatchSyncEvent(
|
| + CreateReceiver(BrowserThread::UI, done, result));
|
| + }
|
| +
|
| protected:
|
| int64 next_registration_id_;
|
| scoped_refptr<ServiceWorkerRegistration> registration_;
|
| @@ -433,6 +445,31 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Rejected) {
|
| ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, result);
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, SyncEventHandled) {
|
| + RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, this,
|
| + "/service_worker/sync.js"));
|
| + ServiceWorkerFetchEventResult result;
|
| + ServiceWorkerResponse response;
|
| +
|
| + // Should 404 before sync event.
|
| + FetchOnRegisteredWorker(&result, &response);
|
| + EXPECT_EQ(404, response.status_code);
|
| +
|
| + // Run the sync event.
|
| + ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
|
| + base::RunLoop sync_run_loop;
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&self::SyncEventOnIOThread, this,
|
| + sync_run_loop.QuitClosure(),
|
| + &status));
|
| + sync_run_loop.Run();
|
| + ASSERT_EQ(SERVICE_WORKER_OK, status);
|
| +
|
| + // Should 200 after sync event.
|
| + FetchOnRegisteredWorker(&result, &response);
|
| + EXPECT_EQ(200, response.status_code);
|
| +}
|
| +
|
| class ServiceWorkerBlackBoxBrowserTest : public ServiceWorkerBrowserTest {
|
| public:
|
| typedef ServiceWorkerBlackBoxBrowserTest self;
|
|
|