Chromium Code Reviews| Index: content/browser/service_worker/service_worker_version.cc |
| diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc |
| index d6468fda7154264c99632e318529d5820c923f16..8774a99c45b440d80461e99ffe2dfed83aedf8ff 100644 |
| --- a/content/browser/service_worker/service_worker_version.cc |
| +++ b/content/browser/service_worker/service_worker_version.cc |
| @@ -269,15 +269,6 @@ void OpenWindowOnUI( |
| base::Bind(&DidOpenURL, callback)); |
| } |
| -void KillEmbeddedWorkerProcess(int process_id, ResultCode code) { |
| - DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| - |
| - RenderProcessHost* render_process_host = |
| - RenderProcessHost::FromID(process_id); |
| - if (render_process_host->GetHandle() != base::kNullProcessHandle) |
| - render_process_host->ReceivedBadMessage(); |
| -} |
| - |
| } // namespace |
| ServiceWorkerVersion::ServiceWorkerVersion( |
| @@ -1151,18 +1142,6 @@ void ServiceWorkerVersion::OnOpenWindow(int request_id, const GURL& url) { |
| if (!context_) |
| return; |
| - if (url.GetOrigin() != script_url_.GetOrigin()) { |
| - // There should be a same origin check by Blink, if the request is still not |
| - // same origin, the process might be compromised and should be eliminated. |
| - DVLOG(1) << "Received a cross origin openWindow() request from a service " |
| - "worker. Killing associated process."; |
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| - base::Bind(&KillEmbeddedWorkerProcess, |
| - embedded_worker_->process_id(), |
| - RESULT_CODE_KILLED_BAD_MESSAGE)); |
| - return; |
| - } |
| - |
| BrowserThread::PostTask( |
| BrowserThread::UI, FROM_HERE, |
| base::Bind(&OpenWindowOnUI, |
| @@ -1172,10 +1151,12 @@ void ServiceWorkerVersion::OnOpenWindow(int request_id, const GURL& url) { |
| make_scoped_refptr(context_->wrapper()), |
| base::Bind(&ServiceWorkerVersion::DidOpenWindow, |
| weak_factory_.GetWeakPtr(), |
| - request_id))); |
| + request_id, |
| + url))); |
|
jsbell
2015/03/06 16:59:36
I agree this matches the spec, but it's a little w
jungkees
2015/03/09 05:53:01
Filed: https://github.com/slightlyoff/ServiceWorke
|
| } |
| void ServiceWorkerVersion::DidOpenWindow(int request_id, |
| + const GURL& url, |
| int render_process_id, |
| int render_frame_id) { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| @@ -1199,17 +1180,18 @@ void ServiceWorkerVersion::DidOpenWindow(int request_id, |
| // it.second is the client_id associated with the provider_host. |
| provider_host->GetClientInfo( |
| base::Bind(&ServiceWorkerVersion::OnOpenWindowFinished, |
| - weak_factory_.GetWeakPtr(), request_id, it.second)); |
| + weak_factory_.GetWeakPtr(), request_id, url, it.second)); |
| return; |
| } |
| // If here, it means that no provider_host was found, in which case, the |
| // renderer should still be informed that the window was opened. |
| - OnOpenWindowFinished(request_id, 0, ServiceWorkerClientInfo()); |
| + OnOpenWindowFinished(request_id, url, 0, ServiceWorkerClientInfo()); |
| } |
| void ServiceWorkerVersion::OnOpenWindowFinished( |
| int request_id, |
| + const GURL& url, |
| int client_id, |
| const ServiceWorkerClientInfo& client_info) { |
| DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| @@ -1226,7 +1208,7 @@ void ServiceWorkerVersion::OnOpenWindowFinished( |
| client.client_id = client_id; |
| embedded_worker_->SendMessage(ServiceWorkerMsg_OpenWindowResponse( |
| - request_id, client)); |
| + request_id, url, client)); |
| } |
| void ServiceWorkerVersion::OnSetCachedMetadata(const GURL& url, |