Chromium Code Reviews| Index: content/browser/service_worker/service_worker_provider_host.cc |
| diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc |
| index 12512a122eda99d33d3713f994ada6064a231219..9e6a169d68572fe3a6d1930870d999432b793e69 100644 |
| --- a/content/browser/service_worker/service_worker_provider_host.cc |
| +++ b/content/browser/service_worker/service_worker_provider_host.cc |
| @@ -5,6 +5,7 @@ |
| #include "content/browser/service_worker/service_worker_provider_host.h" |
| #include "base/stl_util.h" |
| +#include "content/browser/frame_host/render_frame_host_impl.h" |
| #include "content/browser/message_port_message_filter.h" |
| #include "content/browser/service_worker/service_worker_context_core.h" |
| #include "content/browser/service_worker/service_worker_context_request_handler.h" |
| @@ -43,6 +44,25 @@ void FocusOnUIThread(int render_process_id, |
| base::Bind(callback, result)); |
| } |
| +void GetClientInfoOnUIThread( |
| + int render_process_id, |
| + int render_frame_id, |
| + const ServiceWorkerProviderHost::GetClientInfoCallback& callback) { |
| + RenderFrameHostImpl* render_frame_host = static_cast<RenderFrameHostImpl*>( |
| + RenderFrameHost::FromID(render_process_id, render_frame_id)); |
| + DCHECK(render_frame_host); |
|
michaeln
2015/01/26 22:09:46
Its hard to be sure this is guaranteed to hold tru
mlamouri (slow - plz ping)
2015/01/27 15:03:08
An empty ServiceWorkerClientInfo should do.
|
| + |
| + ServiceWorkerClientInfo client_info( |
| + render_frame_host->GetVisibilityState(), |
| + render_frame_host->IsFocused(), |
| + render_frame_host->GetLastCommittedURL(), |
|
michaeln
2015/01/26 22:09:46
There's a chance frame can contain a different doc
mlamouri (slow - plz ping)
2015/01/27 15:03:08
I'm not sure what you are suggesting I do here. Kn
|
| + render_frame_host->GetParent() ? REQUEST_CONTEXT_FRAME_TYPE_NESTED |
| + : REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL); |
| + |
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| + base::Bind(callback, client_info)); |
| +} |
| + |
| } // anonymous namespace |
| ServiceWorkerProviderHost::ServiceWorkerProviderHost( |
| @@ -258,10 +278,12 @@ void ServiceWorkerProviderHost::Focus(const FocusCallback& callback) { |
| } |
| void ServiceWorkerProviderHost::GetClientInfo( |
| - int embedded_worker_id, |
| - int request_id) { |
| - dispatcher_host_->Send(new ServiceWorkerMsg_GetClientInfo( |
| - kDocumentMainThreadId, embedded_worker_id, request_id, provider_id())); |
| + const GetClientInfoCallback& callback) { |
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| + base::Bind(&GetClientInfoOnUIThread, |
| + render_process_id_, |
| + render_frame_id_, |
| + callback)); |
| } |
| void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( |