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/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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |