Commit aef4fefe authored by xiang.long@intel.com's avatar xiang.long@intel.com

ServiceWorker: Resubmit worker script MIME type fix.

This is a re-submission of https://codereview.chromium.org/446323002/.
Fixed the new browsertest which intercept worker script request but returns
response without corret worker content type.

BUG=400604
TEST=https://codereview.chromium.org/448063002/

Review URL: https://codereview.chromium.org/460943002

Cr-Commit-Position: refs/heads/master@{#289238}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@289238 0039d316-1c4b-4281-b951-d872f2087c98
parent cada1e16
......@@ -49,6 +49,8 @@ static void ExpectResultAndRun(bool expected,
IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest,
CanShutDownWithRegisteredServiceWorker) {
WriteFile(FILE_PATH_LITERAL("service_worker.js"), "");
WriteFile(FILE_PATH_LITERAL("service_worker.js.mock-http-headers"),
"HTTP/1.1 200 OK\nContent-Type: text/javascript");
embedded_test_server()->ServeFilesFromDirectory(service_worker_dir_.path());
ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
......
......@@ -192,6 +192,7 @@ class LongLivedResourceInterceptor : public net::URLRequestInterceptor {
net::NetworkDelegate* network_delegate) const OVERRIDE {
const char kHeaders[] =
"HTTP/1.1 200 OK\0"
"Content-Type: text/javascript\0"
"Expires: Thu, 1 Jan 2100 20:00:00 GMT\0"
"\0";
std::string headers(kHeaders, arraysize(kHeaders));
......
......@@ -301,6 +301,18 @@ void ServiceWorkerWriteToCacheJob::OnResponseStarted(
// response to our consumer, just don't cache it?
return;
}
// To prevent most user-uploaded content from being used as a serviceworker.
if (version_->script_url() == url_) {
std::string mime_type;
request->GetMimeType(&mime_type);
if (mime_type != "application/x-javascript" &&
mime_type != "text/javascript" &&
mime_type != "application/javascript") {
AsyncNotifyDoneHelper(net::URLRequestStatus(
net::URLRequestStatus::FAILED, net::ERR_FAILED));
return;
}
}
WriteHeadersToCache();
}
......
HTTP/1.1 200 OK
Content-Type: text/javascript
HTTP/1.1 200 OK
Content-Type: text/javascript
HTTP/1.1 200 OK
Content-Type: text/javascript
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment