OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_client_utils.h" | 5 #include "content/browser/service_worker/service_worker_client_utils.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <tuple> | 8 #include <tuple> |
9 | 9 |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 static_cast<RenderFrameHostImpl*>(web_contents->GetMainFrame()); | 173 static_cast<RenderFrameHostImpl*>(web_contents->GetMainFrame()); |
174 new OpenURLObserver(web_contents, | 174 new OpenURLObserver(web_contents, |
175 rfhi->frame_tree_node()->frame_tree_node_id(), callback); | 175 rfhi->frame_tree_node()->frame_tree_node_id(), callback); |
176 } | 176 } |
177 | 177 |
178 void OpenWindowOnUI( | 178 void OpenWindowOnUI( |
179 const GURL& url, | 179 const GURL& url, |
180 const GURL& script_url, | 180 const GURL& script_url, |
181 int worker_process_id, | 181 int worker_process_id, |
182 const scoped_refptr<ServiceWorkerContextWrapper>& context_wrapper, | 182 const scoped_refptr<ServiceWorkerContextWrapper>& context_wrapper, |
| 183 WindowOpenDisposition disposition, |
183 const OpenURLCallback& callback) { | 184 const OpenURLCallback& callback) { |
184 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 185 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
185 | 186 |
186 BrowserContext* browser_context = | 187 BrowserContext* browser_context = |
187 context_wrapper->storage_partition() | 188 context_wrapper->storage_partition() |
188 ? context_wrapper->storage_partition()->browser_context() | 189 ? context_wrapper->storage_partition()->browser_context() |
189 : nullptr; | 190 : nullptr; |
190 // We are shutting down. | 191 // We are shutting down. |
191 if (!browser_context) | 192 if (!browser_context) |
192 return; | 193 return; |
193 | 194 |
194 RenderProcessHost* render_process_host = | 195 RenderProcessHost* render_process_host = |
195 RenderProcessHost::FromID(worker_process_id); | 196 RenderProcessHost::FromID(worker_process_id); |
196 if (render_process_host->IsForGuestsOnly()) { | 197 if (render_process_host->IsForGuestsOnly()) { |
197 BrowserThread::PostTask( | 198 BrowserThread::PostTask( |
198 BrowserThread::IO, FROM_HERE, | 199 BrowserThread::IO, FROM_HERE, |
199 base::Bind(callback, ChildProcessHost::kInvalidUniqueID, | 200 base::Bind(callback, ChildProcessHost::kInvalidUniqueID, |
200 MSG_ROUTING_NONE)); | 201 MSG_ROUTING_NONE)); |
201 return; | 202 return; |
202 } | 203 } |
203 | 204 |
204 OpenURLParams params( | 205 OpenURLParams params( |
205 url, | 206 url, |
206 Referrer::SanitizeForRequest( | 207 Referrer::SanitizeForRequest( |
207 url, Referrer(script_url, blink::kWebReferrerPolicyDefault)), | 208 url, Referrer(script_url, blink::kWebReferrerPolicyDefault)), |
208 WindowOpenDisposition::NEW_FOREGROUND_TAB, | 209 disposition, ui::PAGE_TRANSITION_AUTO_TOPLEVEL, |
209 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, true /* is_renderer_initiated */); | 210 true /* is_renderer_initiated */); |
210 | 211 |
211 GetContentClient()->browser()->OpenURL(browser_context, params, | 212 GetContentClient()->browser()->OpenURL(browser_context, params, |
212 base::Bind(&DidOpenURLOnUI, callback)); | 213 base::Bind(&DidOpenURLOnUI, callback)); |
213 } | 214 } |
214 | 215 |
215 void NavigateClientOnUI(const GURL& url, | 216 void NavigateClientOnUI(const GURL& url, |
216 const GURL& script_url, | 217 const GURL& script_url, |
217 int process_id, | 218 int process_id, |
218 int frame_id, | 219 int frame_id, |
219 const OpenURLCallback& callback) { | 220 const OpenURLCallback& callback) { |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 BrowserThread::UI, FROM_HERE, | 432 BrowserThread::UI, FROM_HERE, |
432 base::Bind(&FocusOnUI, provider_host->process_id(), | 433 base::Bind(&FocusOnUI, provider_host->process_id(), |
433 provider_host->frame_id(), provider_host->client_uuid()), | 434 provider_host->frame_id(), provider_host->client_uuid()), |
434 callback); | 435 callback); |
435 } | 436 } |
436 | 437 |
437 void OpenWindow(const GURL& url, | 438 void OpenWindow(const GURL& url, |
438 const GURL& script_url, | 439 const GURL& script_url, |
439 int worker_process_id, | 440 int worker_process_id, |
440 const base::WeakPtr<ServiceWorkerContextCore>& context, | 441 const base::WeakPtr<ServiceWorkerContextCore>& context, |
| 442 WindowOpenDisposition disposition, |
441 const NavigationCallback& callback) { | 443 const NavigationCallback& callback) { |
442 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 444 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
443 BrowserThread::PostTask( | 445 BrowserThread::PostTask( |
444 BrowserThread::UI, FROM_HERE, | 446 BrowserThread::UI, FROM_HERE, |
445 base::Bind( | 447 base::Bind( |
446 &OpenWindowOnUI, url, script_url, worker_process_id, | 448 &OpenWindowOnUI, url, script_url, worker_process_id, |
447 make_scoped_refptr(context->wrapper()), | 449 make_scoped_refptr(context->wrapper()), disposition, |
448 base::Bind(&DidNavigate, context, script_url.GetOrigin(), callback))); | 450 base::Bind(&DidNavigate, context, script_url.GetOrigin(), callback))); |
449 } | 451 } |
450 | 452 |
451 void NavigateClient(const GURL& url, | 453 void NavigateClient(const GURL& url, |
452 const GURL& script_url, | 454 const GURL& script_url, |
453 int process_id, | 455 int process_id, |
454 int frame_id, | 456 int frame_id, |
455 const base::WeakPtr<ServiceWorkerContextCore>& context, | 457 const base::WeakPtr<ServiceWorkerContextCore>& context, |
456 const NavigationCallback& callback) { | 458 const NavigationCallback& callback) { |
457 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 459 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 GetWindowClients(controller, options, callback); | 509 GetWindowClients(controller, options, callback); |
508 return; | 510 return; |
509 } | 511 } |
510 | 512 |
511 GetNonWindowClients(controller, options, &clients); | 513 GetNonWindowClients(controller, options, &clients); |
512 DidGetClients(callback, &clients); | 514 DidGetClients(callback, &clients); |
513 } | 515 } |
514 | 516 |
515 } // namespace service_worker_client_utils | 517 } // namespace service_worker_client_utils |
516 } // namespace content | 518 } // namespace content |
OLD | NEW |