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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1191293002: Don't create ServiceWorkerProviderHost for sandboxed frames without allow-same-origin flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated kinuko's comment Created 5 years, 6 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
« no previous file with comments | « content/common/service_worker/service_worker_types.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 2041 matching lines...) Expand 10 before | Expand all | Expand 10 after
2052 blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider( 2052 blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider(
2053 blink::WebLocalFrame* frame) { 2053 blink::WebLocalFrame* frame) {
2054 DCHECK(!frame_ || frame_ == frame); 2054 DCHECK(!frame_ || frame_ == frame);
2055 // At this point we should have non-null data source. 2055 // At this point we should have non-null data source.
2056 DCHECK(frame->dataSource()); 2056 DCHECK(frame->dataSource());
2057 if (!ChildThreadImpl::current()) 2057 if (!ChildThreadImpl::current())
2058 return NULL; // May be null in some tests. 2058 return NULL; // May be null in some tests.
2059 ServiceWorkerNetworkProvider* provider = 2059 ServiceWorkerNetworkProvider* provider =
2060 ServiceWorkerNetworkProvider::FromDocumentState( 2060 ServiceWorkerNetworkProvider::FromDocumentState(
2061 DocumentState::FromDataSource(frame->dataSource())); 2061 DocumentState::FromDataSource(frame->dataSource()));
2062 DCHECK(provider);
2062 return new WebServiceWorkerProviderImpl( 2063 return new WebServiceWorkerProviderImpl(
2063 ChildThreadImpl::current()->thread_safe_sender(), 2064 ChildThreadImpl::current()->thread_safe_sender(),
2064 provider ? provider->context() : NULL); 2065 provider->context());
2065 } 2066 }
2066 2067
2067 void RenderFrameImpl::didAccessInitialDocument(blink::WebLocalFrame* frame) { 2068 void RenderFrameImpl::didAccessInitialDocument(blink::WebLocalFrame* frame) {
2068 DCHECK(!frame_ || frame_ == frame); 2069 DCHECK(!frame_ || frame_ == frame);
2069 // If the request hasn't yet committed, notify the browser process that it is 2070 // If the request hasn't yet committed, notify the browser process that it is
2070 // no longer safe to show the pending URL of the main frame, since a URL spoof 2071 // no longer safe to show the pending URL of the main frame, since a URL spoof
2071 // is now possible. (If the request has committed, the browser already knows.) 2072 // is now possible. (If the request has committed, the browser already knows.)
2072 if (!frame->parent()) { 2073 if (!frame->parent()) {
2073 DocumentState* document_state = 2074 DocumentState* document_state =
2074 DocumentState::FromDataSource(frame->dataSource()); 2075 DocumentState::FromDataSource(frame->dataSource());
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
2453 default: 2454 default:
2454 NOTREACHED(); 2455 NOTREACHED();
2455 } 2456 }
2456 } 2457 }
2457 2458
2458 // Create the serviceworker's per-document network observing object if it 2459 // Create the serviceworker's per-document network observing object if it
2459 // does not exist (When navigation happens within a page, the provider already 2460 // does not exist (When navigation happens within a page, the provider already
2460 // exists). 2461 // exists).
2461 if (!ServiceWorkerNetworkProvider::FromDocumentState( 2462 if (!ServiceWorkerNetworkProvider::FromDocumentState(
2462 DocumentState::FromDataSource(datasource))) { 2463 DocumentState::FromDataSource(datasource))) {
2464 ServiceWorkerProviderType provider_type =
2465 SERVICE_WORKER_PROVIDER_FOR_WINDOW;
2466 if ((frame->effectiveSandboxFlags() & blink::WebSandboxFlags::Origin) ==
2467 blink::WebSandboxFlags::Origin) {
2468 provider_type = SERVICE_WORKER_PROVIDER_FOR_SANDBOXED_FRAME;
2469 }
2463 scoped_ptr<ServiceWorkerNetworkProvider> network_provider( 2470 scoped_ptr<ServiceWorkerNetworkProvider> network_provider(
2464 new ServiceWorkerNetworkProvider(routing_id_, 2471 new ServiceWorkerNetworkProvider(routing_id_, provider_type));
2465 SERVICE_WORKER_PROVIDER_FOR_WINDOW));
2466 ServiceWorkerNetworkProvider::AttachToDocumentState( 2472 ServiceWorkerNetworkProvider::AttachToDocumentState(
2467 DocumentState::FromDataSource(datasource), 2473 DocumentState::FromDataSource(datasource),
2468 network_provider.Pass()); 2474 network_provider.Pass());
2469 } 2475 }
2470 } 2476 }
2471 2477
2472 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame, 2478 void RenderFrameImpl::didStartProvisionalLoad(blink::WebLocalFrame* frame,
2473 double triggering_event_time) { 2479 double triggering_event_time) {
2474 DCHECK(!frame_ || frame_ == frame); 2480 DCHECK(!frame_ || frame_ == frame);
2475 WebDataSource* ds = frame->provisionalDataSource(); 2481 WebDataSource* ds = frame->provisionalDataSource();
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after
3662 RenderFrameImpl::webScreenOrientationClient() { 3668 RenderFrameImpl::webScreenOrientationClient() {
3663 if (!screen_orientation_dispatcher_) 3669 if (!screen_orientation_dispatcher_)
3664 screen_orientation_dispatcher_ = new ScreenOrientationDispatcher(this); 3670 screen_orientation_dispatcher_ = new ScreenOrientationDispatcher(this);
3665 return screen_orientation_dispatcher_; 3671 return screen_orientation_dispatcher_;
3666 } 3672 }
3667 3673
3668 bool RenderFrameImpl::isControlledByServiceWorker(WebDataSource& data_source) { 3674 bool RenderFrameImpl::isControlledByServiceWorker(WebDataSource& data_source) {
3669 ServiceWorkerNetworkProvider* provider = 3675 ServiceWorkerNetworkProvider* provider =
3670 ServiceWorkerNetworkProvider::FromDocumentState( 3676 ServiceWorkerNetworkProvider::FromDocumentState(
3671 DocumentState::FromDataSource(&data_source)); 3677 DocumentState::FromDataSource(&data_source));
3678 if (!provider->context())
3679 return false;
3672 return provider->context()->controller_handle_id() != 3680 return provider->context()->controller_handle_id() !=
3673 kInvalidServiceWorkerHandleId; 3681 kInvalidServiceWorkerHandleId;
3674 } 3682 }
3675 3683
3676 int64_t RenderFrameImpl::serviceWorkerID(WebDataSource& data_source) { 3684 int64_t RenderFrameImpl::serviceWorkerID(WebDataSource& data_source) {
3677 ServiceWorkerNetworkProvider* provider = 3685 ServiceWorkerNetworkProvider* provider =
3678 ServiceWorkerNetworkProvider::FromDocumentState( 3686 ServiceWorkerNetworkProvider::FromDocumentState(
3679 DocumentState::FromDataSource(&data_source)); 3687 DocumentState::FromDataSource(&data_source));
3680 3688 if (provider->context() && provider->context()->controller())
3681 if (provider->context()->controller())
3682 return provider->context()->controller()->version_id(); 3689 return provider->context()->controller()->version_id();
3683 return kInvalidServiceWorkerVersionId; 3690 return kInvalidServiceWorkerVersionId;
3684 } 3691 }
3685 3692
3686 void RenderFrameImpl::postAccessibilityEvent(const blink::WebAXObject& obj, 3693 void RenderFrameImpl::postAccessibilityEvent(const blink::WebAXObject& obj,
3687 blink::WebAXEvent event) { 3694 blink::WebAXEvent event) {
3688 HandleWebAccessibilityEvent(obj, event); 3695 HandleWebAccessibilityEvent(obj, event);
3689 } 3696 }
3690 3697
3691 void RenderFrameImpl::handleAccessibilityFindInPageResult( 3698 void RenderFrameImpl::handleAccessibilityFindInPageResult(
(...skipping 1269 matching lines...) Expand 10 before | Expand all | Expand 10 after
4961 #elif defined(ENABLE_BROWSER_CDMS) 4968 #elif defined(ENABLE_BROWSER_CDMS)
4962 cdm_manager_, 4969 cdm_manager_,
4963 #endif 4970 #endif
4964 this); 4971 this);
4965 } 4972 }
4966 4973
4967 return cdm_factory_; 4974 return cdm_factory_;
4968 } 4975 }
4969 4976
4970 } // namespace content 4977 } // namespace content
OLDNEW
« no previous file with comments | « content/common/service_worker/service_worker_types.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698