Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: content/browser/service_worker/service_worker_provider_host.cc

Issue 871013003: Gather the ServiceWorker client information in the browser process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@rfh_getvisibilitystate
Patch Set: rebase Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
8 #include "content/browser/message_port_message_filter.h" 9 #include "content/browser/message_port_message_filter.h"
9 #include "content/browser/service_worker/service_worker_context_core.h" 10 #include "content/browser/service_worker/service_worker_context_core.h"
10 #include "content/browser/service_worker/service_worker_context_request_handler. h" 11 #include "content/browser/service_worker/service_worker_context_request_handler. h"
11 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h" 12 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h"
12 #include "content/browser/service_worker/service_worker_dispatcher_host.h" 13 #include "content/browser/service_worker/service_worker_dispatcher_host.h"
13 #include "content/browser/service_worker/service_worker_handle.h" 14 #include "content/browser/service_worker/service_worker_handle.h"
14 #include "content/browser/service_worker/service_worker_registration_handle.h" 15 #include "content/browser/service_worker/service_worker_registration_handle.h"
15 #include "content/browser/service_worker/service_worker_utils.h" 16 #include "content/browser/service_worker/service_worker_utils.h"
16 #include "content/browser/service_worker/service_worker_version.h" 17 #include "content/browser/service_worker/service_worker_version.h"
17 #include "content/common/resource_request_body.h" 18 #include "content/common/resource_request_body.h"
(...skipping 18 matching lines...) Expand all
36 37
37 if (web_contents && web_contents->GetDelegate()) { 38 if (web_contents && web_contents->GetDelegate()) {
38 result = true; 39 result = true;
39 web_contents->GetDelegate()->ActivateContents(web_contents); 40 web_contents->GetDelegate()->ActivateContents(web_contents);
40 } 41 }
41 42
42 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 43 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
43 base::Bind(callback, result)); 44 base::Bind(callback, result));
44 } 45 }
45 46
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 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.
54
55 ServiceWorkerClientInfo client_info(
56 render_frame_host->GetVisibilityState(),
57 render_frame_host->IsFocused(),
58 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
59 render_frame_host->GetParent() ? REQUEST_CONTEXT_FRAME_TYPE_NESTED
60 : REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL);
61
62 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
63 base::Bind(callback, client_info));
64 }
65
46 } // anonymous namespace 66 } // anonymous namespace
47 67
48 ServiceWorkerProviderHost::ServiceWorkerProviderHost( 68 ServiceWorkerProviderHost::ServiceWorkerProviderHost(
49 int render_process_id, int render_frame_id, int provider_id, 69 int render_process_id, int render_frame_id, int provider_id,
50 base::WeakPtr<ServiceWorkerContextCore> context, 70 base::WeakPtr<ServiceWorkerContextCore> context,
51 ServiceWorkerDispatcherHost* dispatcher_host) 71 ServiceWorkerDispatcherHost* dispatcher_host)
52 : render_process_id_(render_process_id), 72 : render_process_id_(render_process_id),
53 render_frame_id_(render_frame_id), 73 render_frame_id_(render_frame_id),
54 provider_id_(provider_id), 74 provider_id_(provider_id),
55 context_(context), 75 context_(context),
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 void ServiceWorkerProviderHost::Focus(const FocusCallback& callback) { 271 void ServiceWorkerProviderHost::Focus(const FocusCallback& callback) {
252 BrowserThread::PostTask( 272 BrowserThread::PostTask(
253 BrowserThread::UI, FROM_HERE, 273 BrowserThread::UI, FROM_HERE,
254 base::Bind(&FocusOnUIThread, 274 base::Bind(&FocusOnUIThread,
255 render_process_id_, 275 render_process_id_,
256 render_frame_id_, 276 render_frame_id_,
257 callback)); 277 callback));
258 } 278 }
259 279
260 void ServiceWorkerProviderHost::GetClientInfo( 280 void ServiceWorkerProviderHost::GetClientInfo(
261 int embedded_worker_id, 281 const GetClientInfoCallback& callback) {
262 int request_id) { 282 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
263 dispatcher_host_->Send(new ServiceWorkerMsg_GetClientInfo( 283 base::Bind(&GetClientInfoOnUIThread,
264 kDocumentMainThreadId, embedded_worker_id, request_id, provider_id())); 284 render_process_id_,
285 render_frame_id_,
286 callback));
265 } 287 }
266 288
267 void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( 289 void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern(
268 const GURL& pattern) { 290 const GURL& pattern) {
269 associated_patterns_.push_back(pattern); 291 associated_patterns_.push_back(pattern);
270 IncreaseProcessReference(pattern); 292 IncreaseProcessReference(pattern);
271 } 293 }
272 294
273 void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { 295 void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() {
274 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_); 296 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 context_->process_manager()->RemoveProcessReferenceFromPattern( 424 context_->process_manager()->RemoveProcessReferenceFromPattern(
403 pattern, render_process_id_); 425 pattern, render_process_id_);
404 } 426 }
405 } 427 }
406 428
407 bool ServiceWorkerProviderHost::IsContextAlive() { 429 bool ServiceWorkerProviderHost::IsContextAlive() {
408 return context_ != NULL; 430 return context_ != NULL;
409 } 431 }
410 432
411 } // namespace content 433 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698