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

Unified Diff: content/browser/service_worker/service_worker_browsertest.cc

Issue 321613002: ServiceWorker browser test fix (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d07d19683c5d582b33b62827e41539a74b4245f9..97ff8f007f3b7eb957a5bfb00ad1d2e8ccb87aa6 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -39,6 +39,7 @@ struct FetchResult {
ServiceWorkerStatusCode status;
ServiceWorkerFetchEventResult result;
ServiceWorkerResponse response;
+ scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle;
};
void RunAndQuit(const base::Closure& closure,
@@ -76,6 +77,7 @@ void RunOnIOThread(
// to pass to DispatchFetchEvent.
void ReceiveFetchResult(BrowserThread::ID run_quit_thread,
const base::Closure& quit,
+ ChromeBlobStorageContext* blob_context,
FetchResult* out_result,
ServiceWorkerStatusCode actual_status,
ServiceWorkerFetchEventResult actual_result,
@@ -83,6 +85,11 @@ void ReceiveFetchResult(BrowserThread::ID run_quit_thread,
out_result->status = actual_status;
out_result->result = actual_result;
out_result->response = actual_response;
+ if (!actual_response.blob_uuid.empty()) {
+ out_result->blob_data_handle =
+ blob_context->context()->GetBlobDataFromUUID(
+ actual_response.blob_uuid);
+ }
if (!quit.is_null())
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, quit);
}
@@ -90,15 +97,16 @@ void ReceiveFetchResult(BrowserThread::ID run_quit_thread,
ServiceWorkerVersion::FetchCallback CreateResponseReceiver(
BrowserThread::ID run_quit_thread,
const base::Closure& quit,
+ ChromeBlobStorageContext* blob_context,
FetchResult* result) {
- return base::Bind(&ReceiveFetchResult, run_quit_thread, quit, result);
+ return base::Bind(&ReceiveFetchResult, run_quit_thread, quit,
+ make_scoped_refptr<ChromeBlobStorageContext>(blob_context),
+ result);
}
void ReadResponseBody(std::string* body,
- scoped_refptr<ChromeBlobStorageContext> context,
- std::string blob_uuid) {
- scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle =
- context->context()->GetBlobDataFromUUID(blob_uuid);
+ webkit_blob::BlobDataHandle* blob_data_handle) {
+ ASSERT_TRUE(blob_data_handle);
ASSERT_EQ(1U, blob_data_handle->data()->items().size());
*body = std::string(blob_data_handle->data()->items()[0].bytes(),
blob_data_handle->data()->items()[0].length());
@@ -300,8 +308,12 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
ASSERT_EQ(expected_status, status);
}
- void FetchOnRegisteredWorker(ServiceWorkerFetchEventResult* result,
- ServiceWorkerResponse* response) {
+ void FetchOnRegisteredWorker(
+ ServiceWorkerFetchEventResult* result,
+ ServiceWorkerResponse* response,
+ scoped_ptr<webkit_blob::BlobDataHandle>* blob_data_handle) {
+ blob_context_ = ChromeBlobStorageContext::GetFor(
+ shell()->web_contents()->GetBrowserContext());
FetchResult fetch_result;
fetch_result.status = SERVICE_WORKER_ERROR_FAILED;
base::RunLoop fetch_run_loop;
@@ -314,16 +326,18 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
fetch_run_loop.Run();
*result = fetch_result.result;
*response = fetch_result.response;
+ *blob_data_handle = fetch_result.blob_data_handle.Pass();
ASSERT_EQ(SERVICE_WORKER_OK, fetch_result.status);
}
- void FetchTestHelper(const std::string& worker_url,
- ServiceWorkerFetchEventResult* result,
- ServiceWorkerResponse* response) {
+ void FetchTestHelper(
+ const std::string& worker_url,
+ ServiceWorkerFetchEventResult* result,
+ ServiceWorkerResponse* response,
+ scoped_ptr<webkit_blob::BlobDataHandle>* blob_data_handle) {
RunOnIOThread(
base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url));
-
- FetchOnRegisteredWorker(result, response);
+ FetchOnRegisteredWorker(result, response, blob_data_handle);
}
void SetUpRegistrationOnIOThread(const std::string& worker_url) {
@@ -368,7 +382,8 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
std::map<std::string, std::string>());
version_->SetStatus(ServiceWorkerVersion::ACTIVE);
version_->DispatchFetchEvent(
- request, CreateResponseReceiver(BrowserThread::UI, done, result));
+ request, CreateResponseReceiver(BrowserThread::UI, done,
+ blob_context_, result));
}
void StopOnIOThread(const base::Closure& done,
@@ -388,6 +403,7 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
protected:
scoped_refptr<ServiceWorkerRegistration> registration_;
scoped_refptr<ServiceWorkerVersion> version_;
+ scoped_refptr<ChromeBlobStorageContext> blob_context_;
};
IN_PROC_BROWSER_TEST_F(EmbeddedWorkerBrowserTest, StartAndStop) {
@@ -480,7 +496,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) {
ServiceWorkerFetchEventResult result;
ServiceWorkerResponse response;
- FetchTestHelper("/service_worker/fetch_event.js", &result, &response);
+ scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle;
+ FetchTestHelper("/service_worker/fetch_event.js",
+ &result, &response, &blob_data_handle);
ASSERT_EQ(SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, result);
EXPECT_EQ(301, response.status_code);
EXPECT_EQ("Moved Permanently", response.status_text);
@@ -489,12 +507,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, FetchEvent_Response) {
expected_headers["Content-Type"] = "text/html; charset=UTF-8";
EXPECT_EQ(expected_headers, response.headers);
- scoped_refptr<ChromeBlobStorageContext> context =
- ChromeBlobStorageContext::GetFor(
- shell()->web_contents()->GetBrowserContext());
std::string body;
RunOnIOThread(
- base::Bind(&ReadResponseBody, &body, context, response.blob_uuid));
+ base::Bind(&ReadResponseBody,
+ &body, base::Owned(blob_data_handle.release())));
EXPECT_EQ("This resource is gone. Gone, gone, gone.", body);
}
@@ -524,9 +540,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, SyncEventHandled) {
&self::SetUpRegistrationOnIOThread, this, "/service_worker/sync.js"));
ServiceWorkerFetchEventResult result;
ServiceWorkerResponse response;
-
+ scoped_ptr<webkit_blob::BlobDataHandle> blob_data_handle;
// Should 404 before sync event.
- FetchOnRegisteredWorker(&result, &response);
+ FetchOnRegisteredWorker(&result, &response, &blob_data_handle);
EXPECT_EQ(404, response.status_code);
// Run the sync event.
@@ -542,7 +558,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, SyncEventHandled) {
ASSERT_EQ(SERVICE_WORKER_OK, status);
// Should 200 after sync event.
- FetchOnRegisteredWorker(&result, &response);
+ FetchOnRegisteredWorker(&result, &response, &blob_data_handle);
EXPECT_EQ(200, response.status_code);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698