OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/service_worker/service_worker_provider_host.h" | 5 #include "content/browser/service_worker/service_worker_provider_host.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "content/browser/frame_host/render_frame_host_impl.h" | |
9 #include "content/browser/message_port_message_filter.h" | 8 #include "content/browser/message_port_message_filter.h" |
10 #include "content/browser/service_worker/service_worker_context_core.h" | 9 #include "content/browser/service_worker/service_worker_context_core.h" |
11 #include "content/browser/service_worker/service_worker_context_request_handler.
h" | 10 #include "content/browser/service_worker/service_worker_context_request_handler.
h" |
12 #include "content/browser/service_worker/service_worker_controllee_request_handl
er.h" | 11 #include "content/browser/service_worker/service_worker_controllee_request_handl
er.h" |
13 #include "content/browser/service_worker/service_worker_dispatcher_host.h" | 12 #include "content/browser/service_worker/service_worker_dispatcher_host.h" |
14 #include "content/browser/service_worker/service_worker_handle.h" | 13 #include "content/browser/service_worker/service_worker_handle.h" |
15 #include "content/browser/service_worker/service_worker_registration_handle.h" | 14 #include "content/browser/service_worker/service_worker_registration_handle.h" |
16 #include "content/browser/service_worker/service_worker_utils.h" | 15 #include "content/browser/service_worker/service_worker_utils.h" |
17 #include "content/browser/service_worker/service_worker_version.h" | 16 #include "content/browser/service_worker/service_worker_version.h" |
18 #include "content/common/resource_request_body.h" | 17 #include "content/common/resource_request_body.h" |
(...skipping 18 matching lines...) Expand all Loading... |
37 | 36 |
38 if (web_contents && web_contents->GetDelegate()) { | 37 if (web_contents && web_contents->GetDelegate()) { |
39 result = true; | 38 result = true; |
40 web_contents->GetDelegate()->ActivateContents(web_contents); | 39 web_contents->GetDelegate()->ActivateContents(web_contents); |
41 } | 40 } |
42 | 41 |
43 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 42 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
44 base::Bind(callback, result)); | 43 base::Bind(callback, result)); |
45 } | 44 } |
46 | 45 |
47 void GetClientInfoOnUIThread( | |
48 int render_process_id, | |
49 int render_frame_id, | |
50 const ServiceWorkerProviderHost::GetClientInfoCallback& callback) { | |
51 RenderFrameHostImpl* render_frame_host = static_cast<RenderFrameHostImpl*>( | |
52 RenderFrameHost::FromID(render_process_id, render_frame_id)); | |
53 if (!render_frame_host) { | |
54 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | |
55 base::Bind(callback, ServiceWorkerClientInfo())); | |
56 } | |
57 | |
58 // TODO(mlamouri,michaeln): it is possible to end up collecting information | |
59 // for a frame that is actually being navigated and isn't exactly what we are | |
60 // expecting. | |
61 ServiceWorkerClientInfo client_info( | |
62 render_frame_host->GetVisibilityState(), | |
63 render_frame_host->IsFocused(), | |
64 render_frame_host->GetLastCommittedURL(), | |
65 render_frame_host->GetParent() ? REQUEST_CONTEXT_FRAME_TYPE_NESTED | |
66 : REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL); | |
67 | |
68 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | |
69 base::Bind(callback, client_info)); | |
70 } | |
71 | |
72 } // anonymous namespace | 46 } // anonymous namespace |
73 | 47 |
74 ServiceWorkerProviderHost::ServiceWorkerProviderHost( | 48 ServiceWorkerProviderHost::ServiceWorkerProviderHost( |
75 int render_process_id, | 49 int render_process_id, |
76 int render_frame_id, | 50 int render_frame_id, |
77 int provider_id, | 51 int provider_id, |
78 base::WeakPtr<ServiceWorkerContextCore> context, | 52 base::WeakPtr<ServiceWorkerContextCore> context, |
79 ServiceWorkerDispatcherHost* dispatcher_host) | 53 ServiceWorkerDispatcherHost* dispatcher_host) |
80 : render_process_id_(render_process_id), | 54 : render_process_id_(render_process_id), |
81 render_frame_id_(render_frame_id), | 55 render_frame_id_(render_frame_id), |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 void ServiceWorkerProviderHost::Focus(const FocusCallback& callback) { | 263 void ServiceWorkerProviderHost::Focus(const FocusCallback& callback) { |
290 BrowserThread::PostTask( | 264 BrowserThread::PostTask( |
291 BrowserThread::UI, FROM_HERE, | 265 BrowserThread::UI, FROM_HERE, |
292 base::Bind(&FocusOnUIThread, | 266 base::Bind(&FocusOnUIThread, |
293 render_process_id_, | 267 render_process_id_, |
294 render_frame_id_, | 268 render_frame_id_, |
295 callback)); | 269 callback)); |
296 } | 270 } |
297 | 271 |
298 void ServiceWorkerProviderHost::GetClientInfo( | 272 void ServiceWorkerProviderHost::GetClientInfo( |
299 const GetClientInfoCallback& callback) { | 273 int embedded_worker_id, |
300 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 274 int request_id) { |
301 base::Bind(&GetClientInfoOnUIThread, | 275 Send(new ServiceWorkerMsg_GetClientInfo( |
302 render_process_id_, | 276 kDocumentMainThreadId, embedded_worker_id, request_id, provider_id())); |
303 render_frame_id_, | |
304 callback)); | |
305 } | 277 } |
306 | 278 |
307 void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( | 279 void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( |
308 const GURL& pattern) { | 280 const GURL& pattern) { |
309 associated_patterns_.push_back(pattern); | 281 associated_patterns_.push_back(pattern); |
310 IncreaseProcessReference(pattern); | 282 IncreaseProcessReference(pattern); |
311 } | 283 } |
312 | 284 |
313 void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { | 285 void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { |
314 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_); | 286 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 return context_ != NULL; | 458 return context_ != NULL; |
487 } | 459 } |
488 | 460 |
489 void ServiceWorkerProviderHost::Send(IPC::Message* message) const { | 461 void ServiceWorkerProviderHost::Send(IPC::Message* message) const { |
490 DCHECK(dispatcher_host_); | 462 DCHECK(dispatcher_host_); |
491 DCHECK(IsReadyToSendMessages()); | 463 DCHECK(IsReadyToSendMessages()); |
492 dispatcher_host_->Send(message); | 464 dispatcher_host_->Send(message); |
493 } | 465 } |
494 | 466 |
495 } // namespace content | 467 } // namespace content |
OLD | NEW |