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 2926c75032d6893c2f084cb24acb59d0cd3bd7b3..4a62e5fee3be3c56e75ef2a252cb924af107c672 100644 |
--- a/content/browser/service_worker/service_worker_provider_host.cc |
+++ b/content/browser/service_worker/service_worker_provider_host.cc |
@@ -30,46 +30,35 @@ namespace content { |
namespace { |
-void GetClientInfoOnUIThread( |
+ServiceWorkerClientInfo GetClientInfoOnUIThread( |
int render_process_id, |
- int render_frame_id, |
- const ServiceWorkerProviderHost::GetClientInfoCallback& callback) { |
+ int render_frame_id) { |
RenderFrameHostImpl* render_frame_host = |
RenderFrameHostImpl::FromID(render_process_id, render_frame_id); |
- if (!render_frame_host) { |
- BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
- base::Bind(callback, ServiceWorkerClientInfo())); |
- return; |
- } |
+ if (!render_frame_host) |
+ return ServiceWorkerClientInfo(); |
// TODO(mlamouri,michaeln): it is possible to end up collecting information |
// for a frame that is actually being navigated and isn't exactly what we are |
// expecting. |
- ServiceWorkerClientInfo client_info( |
+ return ServiceWorkerClientInfo( |
render_frame_host->GetVisibilityState(), |
render_frame_host->IsFocused(), |
render_frame_host->GetLastCommittedURL(), |
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)); |
} |
-void FocusOnUIThread( |
+ServiceWorkerClientInfo FocusOnUIThread( |
int render_process_id, |
- int render_frame_id, |
- const ServiceWorkerProviderHost::GetClientInfoCallback& callback) { |
+ int render_frame_id) { |
RenderFrameHostImpl* render_frame_host = |
RenderFrameHostImpl::FromID(render_process_id, render_frame_id); |
WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( |
WebContents::FromRenderFrameHost(render_frame_host)); |
- if (!render_frame_host || !web_contents) { |
- BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
- base::Bind(callback, ServiceWorkerClientInfo())); |
- return; |
- } |
+ if (!render_frame_host || !web_contents) |
+ return ServiceWorkerClientInfo(); |
FrameTreeNode* frame_tree_node = render_frame_host->frame_tree_node(); |
@@ -82,7 +71,7 @@ void FocusOnUIThread( |
// Move the web contents to the foreground. |
web_contents->Activate(); |
- GetClientInfoOnUIThread(render_process_id, render_frame_id, callback); |
+ return GetClientInfoOnUIThread(render_process_id, render_frame_id); |
} |
} // anonymous namespace |
@@ -301,21 +290,22 @@ void ServiceWorkerProviderHost::PostMessage( |
} |
void ServiceWorkerProviderHost::Focus(const GetClientInfoCallback& callback) { |
- BrowserThread::PostTask( |
+ BrowserThread::PostTaskAndReplyWithResult( |
BrowserThread::UI, FROM_HERE, |
base::Bind(&FocusOnUIThread, |
render_process_id_, |
- render_frame_id_, |
- callback)); |
+ render_frame_id_), |
+ callback); |
} |
void ServiceWorkerProviderHost::GetClientInfo( |
const GetClientInfoCallback& callback) const { |
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
- base::Bind(&GetClientInfoOnUIThread, |
- render_process_id_, |
- render_frame_id_, |
- callback)); |
+ BrowserThread::PostTaskAndReplyWithResult( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&GetClientInfoOnUIThread, |
+ render_process_id_, |
+ render_frame_id_), |
+ callback); |
} |
void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( |