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

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

Issue 1439333002: Service Worker: Add Clients.get(id) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary condition Created 4 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 <utility> 7 #include <utility>
8 8
9 #include "base/guid.h" 9 #include "base/guid.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 18 matching lines...) Expand all
29 #include "content/public/browser/render_widget_host_view.h" 29 #include "content/public/browser/render_widget_host_view.h"
30 #include "content/public/browser/web_contents.h" 30 #include "content/public/browser/web_contents.h"
31 #include "content/public/common/browser_side_navigation_policy.h" 31 #include "content/public/common/browser_side_navigation_policy.h"
32 #include "content/public/common/child_process_host.h" 32 #include "content/public/common/child_process_host.h"
33 33
34 namespace content { 34 namespace content {
35 35
36 namespace { 36 namespace {
37 37
38 ServiceWorkerClientInfo FocusOnUIThread(int render_process_id, 38 ServiceWorkerClientInfo FocusOnUIThread(int render_process_id,
39 int render_frame_id) { 39 int render_frame_id,
40 const std::string& client_uuid) {
40 RenderFrameHostImpl* render_frame_host = 41 RenderFrameHostImpl* render_frame_host =
41 RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 42 RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
42 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 43 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>(
43 WebContents::FromRenderFrameHost(render_frame_host)); 44 WebContents::FromRenderFrameHost(render_frame_host));
44 45
45 if (!render_frame_host || !web_contents) 46 if (!render_frame_host || !web_contents)
46 return ServiceWorkerClientInfo(); 47 return ServiceWorkerClientInfo();
47 48
48 FrameTreeNode* frame_tree_node = render_frame_host->frame_tree_node(); 49 FrameTreeNode* frame_tree_node = render_frame_host->frame_tree_node();
49 50
50 // Focus the frame in the frame tree node, in case it has changed. 51 // Focus the frame in the frame tree node, in case it has changed.
51 frame_tree_node->frame_tree()->SetFocusedFrame( 52 frame_tree_node->frame_tree()->SetFocusedFrame(
52 frame_tree_node, render_frame_host->GetSiteInstance()); 53 frame_tree_node, render_frame_host->GetSiteInstance());
53 54
54 // Focus the frame's view to make sure the frame is now considered as focused. 55 // Focus the frame's view to make sure the frame is now considered as focused.
55 render_frame_host->GetView()->Focus(); 56 render_frame_host->GetView()->Focus();
56 57
57 // Move the web contents to the foreground. 58 // Move the web contents to the foreground.
58 web_contents->Activate(); 59 web_contents->Activate();
59 60
60 return ServiceWorkerProviderHost::GetWindowClientInfoOnUI(render_process_id, 61 return ServiceWorkerProviderHost::GetWindowClientInfoOnUI(
61 render_frame_id); 62 render_process_id, render_frame_id, client_uuid);
62 } 63 }
63 64
64 // PlzNavigate 65 // PlzNavigate
65 // Next ServiceWorkerProviderHost ID for navigations, starts at -2 and keeps 66 // Next ServiceWorkerProviderHost ID for navigations, starts at -2 and keeps
66 // going down. 67 // going down.
67 int g_next_navigation_provider_id = -2; 68 int g_next_navigation_provider_id = -2;
68 69
69 } // anonymous namespace 70 } // anonymous namespace
70 71
71 ServiceWorkerProviderHost::OneShotGetReadyCallback::OneShotGetReadyCallback( 72 ServiceWorkerProviderHost::OneShotGetReadyCallback::OneShotGetReadyCallback(
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 Send(new ServiceWorkerMsg_MessageToDocument(params)); 434 Send(new ServiceWorkerMsg_MessageToDocument(params));
434 } 435 }
435 436
436 void ServiceWorkerProviderHost::Focus(const GetClientInfoCallback& callback) { 437 void ServiceWorkerProviderHost::Focus(const GetClientInfoCallback& callback) {
437 if (provider_type_ != SERVICE_WORKER_PROVIDER_FOR_WINDOW) { 438 if (provider_type_ != SERVICE_WORKER_PROVIDER_FOR_WINDOW) {
438 callback.Run(ServiceWorkerClientInfo()); 439 callback.Run(ServiceWorkerClientInfo());
439 return; 440 return;
440 } 441 }
441 BrowserThread::PostTaskAndReplyWithResult( 442 BrowserThread::PostTaskAndReplyWithResult(
442 BrowserThread::UI, FROM_HERE, 443 BrowserThread::UI, FROM_HERE,
443 base::Bind(&FocusOnUIThread, render_process_id_, route_id_), callback); 444 base::Bind(&FocusOnUIThread, render_process_id_, route_id_, client_uuid_),
445 callback);
444 } 446 }
445 447
446 void ServiceWorkerProviderHost::GetWindowClientInfo( 448 void ServiceWorkerProviderHost::GetWindowClientInfo(
447 const GetClientInfoCallback& callback) const { 449 const GetClientInfoCallback& callback) const {
448 if (provider_type_ != SERVICE_WORKER_PROVIDER_FOR_WINDOW) { 450 if (provider_type_ != SERVICE_WORKER_PROVIDER_FOR_WINDOW) {
449 callback.Run(ServiceWorkerClientInfo()); 451 callback.Run(ServiceWorkerClientInfo());
450 return; 452 return;
451 } 453 }
452 BrowserThread::PostTaskAndReplyWithResult( 454 BrowserThread::PostTaskAndReplyWithResult(
453 BrowserThread::UI, FROM_HERE, 455 BrowserThread::UI, FROM_HERE,
454 base::Bind(&ServiceWorkerProviderHost::GetWindowClientInfoOnUI, 456 base::Bind(&ServiceWorkerProviderHost::GetWindowClientInfoOnUI,
455 render_process_id_, route_id_), 457 render_process_id_, route_id_, client_uuid_),
456 callback); 458 callback);
457 } 459 }
458 460
459 // static 461 // static
460 ServiceWorkerClientInfo ServiceWorkerProviderHost::GetWindowClientInfoOnUI( 462 ServiceWorkerClientInfo ServiceWorkerProviderHost::GetWindowClientInfoOnUI(
461 int render_process_id, 463 int render_process_id,
462 int render_frame_id) { 464 int render_frame_id,
465 const std::string& client_uuid) {
463 RenderFrameHostImpl* render_frame_host = 466 RenderFrameHostImpl* render_frame_host =
464 RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 467 RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
465 if (!render_frame_host) 468 if (!render_frame_host)
466 return ServiceWorkerClientInfo(); 469 return ServiceWorkerClientInfo();
467 470
468 // TODO(mlamouri,michaeln): it is possible to end up collecting information 471 // TODO(mlamouri,michaeln): it is possible to end up collecting information
469 // for a frame that is actually being navigated and isn't exactly what we are 472 // for a frame that is actually being navigated and isn't exactly what we are
470 // expecting. 473 // expecting.
471 return ServiceWorkerClientInfo( 474 return ServiceWorkerClientInfo(
472 render_frame_host->GetVisibilityState(), render_frame_host->IsFocused(), 475 client_uuid, render_frame_host->GetVisibilityState(),
473 render_frame_host->GetLastCommittedURL(), 476 render_frame_host->IsFocused(), render_frame_host->GetLastCommittedURL(),
474 render_frame_host->GetParent() ? REQUEST_CONTEXT_FRAME_TYPE_NESTED 477 render_frame_host->GetParent() ? REQUEST_CONTEXT_FRAME_TYPE_NESTED
475 : REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, 478 : REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL,
476 render_frame_host->frame_tree_node()->last_focus_time(), 479 render_frame_host->frame_tree_node()->last_focus_time(),
477 blink::WebServiceWorkerClientTypeWindow); 480 blink::WebServiceWorkerClientTypeWindow);
478 } 481 }
479 482
480 void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern( 483 void ServiceWorkerProviderHost::AddScopedProcessReferenceToPattern(
481 const GURL& pattern) { 484 const GURL& pattern) {
482 associated_patterns_.push_back(pattern); 485 associated_patterns_.push_back(pattern);
483 IncreaseProcessReference(pattern); 486 IncreaseProcessReference(pattern);
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 Send(new ServiceWorkerMsg_SetControllerServiceWorker( 730 Send(new ServiceWorkerMsg_SetControllerServiceWorker(
728 render_thread_id_, provider_id(), 731 render_thread_id_, provider_id(),
729 GetOrCreateServiceWorkerHandle( 732 GetOrCreateServiceWorkerHandle(
730 associated_registration_->active_version()), 733 associated_registration_->active_version()),
731 false /* shouldNotifyControllerChange */)); 734 false /* shouldNotifyControllerChange */));
732 } 735 }
733 } 736 }
734 } 737 }
735 738
736 } // namespace content 739 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_provider_host.h ('k') | content/browser/service_worker/service_worker_version.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698