| 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 a23481be5409daf8ff2abb0edb940307dd9b4e52..84c68fdd95b3cf924cc46c77719dda6311a5f4b6 100644
|
| --- a/content/browser/service_worker/service_worker_browsertest.cc
|
| +++ b/content/browser/service_worker/service_worker_browsertest.cc
|
| @@ -45,6 +45,27 @@ void RunOnIOThread(const base::Closure& closure) {
|
| run_loop.Run();
|
| }
|
|
|
| +void ReceiveFetchResult(BrowserThread::ID run_quit_thread,
|
| + const base::Closure& quit,
|
| + ServiceWorkerStatusCode* out_status,
|
| + ServiceWorkerFetchResponse* out_response,
|
| + ServiceWorkerStatusCode actual_status,
|
| + const ServiceWorkerFetchResponse& actual_response) {
|
| + *out_status = actual_status;
|
| + *out_response = actual_response;
|
| + if (!quit.is_null())
|
| + BrowserThread::PostTask(run_quit_thread, FROM_HERE, quit);
|
| +}
|
| +
|
| +ServiceWorkerVersion::FetchCallback CreateFetchResponseReceiver(
|
| + BrowserThread::ID run_quit_thread,
|
| + const base::Closure& quit,
|
| + ServiceWorkerStatusCode* out_status,
|
| + ServiceWorkerFetchResponse* out_response) {
|
| + return base::Bind(
|
| + &ReceiveFetchResult, run_quit_thread, quit, out_status, out_response);
|
| +}
|
| +
|
| } // namespace
|
|
|
| class ServiceWorkerBrowserTest : public ContentBrowserTest {
|
| @@ -231,12 +252,26 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
|
| }
|
|
|
| void InstallOnIOThread(const base::Closure& done,
|
| - ServiceWorkerStatusCode* result) {
|
| + ServiceWorkerStatusCode* result) {
|
| ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| version_->DispatchInstallEvent(
|
| -1, CreateReceiver(BrowserThread::UI, done, result));
|
| }
|
|
|
| + void FetchOnIOThread(const base::Closure& done,
|
| + ServiceWorkerStatusCode* result,
|
| + ServiceWorkerFetchResponse* message) {
|
| + ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + ServiceWorkerFetchRequest request(
|
| + embedded_test_server()->GetURL("/service_worker/empty.html"),
|
| + "GET",
|
| + std::map<std::string, std::string>());
|
| + version_->DispatchFetchEvent(
|
| + request,
|
| + CreateFetchResponseReceiver(BrowserThread::UI, done, result, message));
|
| + }
|
| +
|
| +
|
| void StopOnIOThread(const base::Closure& done,
|
| ServiceWorkerStatusCode* result) {
|
| ASSERT_TRUE(version_);
|
| @@ -325,4 +360,24 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
|
| InstallTestHelper("/service_worker/worker_install_rejected.js");
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, Fetch) {
|
| + RunOnIOThread(base::Bind(&self::SetUpRegistrationOnIOThread, this,
|
| + "/service_worker/worker.js"));
|
| +
|
| + ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
|
| + ServiceWorkerFetchResponse response;
|
| + base::RunLoop fetch_run_loop;
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&self::FetchOnIOThread, this,
|
| + fetch_run_loop.QuitClosure(),
|
| + &status, &response));
|
| + fetch_run_loop.Run();
|
| + ASSERT_EQ(SERVICE_WORKER_OK, status);
|
| + ASSERT_EQ(200, response.status_code);
|
| + ASSERT_EQ("OK", response.status_text);
|
| + ASSERT_EQ("GET", response.method);
|
| + std::map<std::string, std::string> expected_headers;
|
| + ASSERT_EQ(expected_headers, response.headers);
|
| +}
|
| +
|
| } // namespace content
|
|
|