| 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 30 matching lines...) Expand all Loading... |
| 41 #include "content/common/clipboard_messages.h" | 41 #include "content/common/clipboard_messages.h" |
| 42 #include "content/common/frame_messages.h" | 42 #include "content/common/frame_messages.h" |
| 43 #include "content/common/frame_replication_state.h" | 43 #include "content/common/frame_replication_state.h" |
| 44 #include "content/common/input_messages.h" | 44 #include "content/common/input_messages.h" |
| 45 #include "content/common/mojo/service_registry_for_route.h" | 45 #include "content/common/mojo/service_registry_for_route.h" |
| 46 #include "content/common/mojo/service_registry_impl.h" | 46 #include "content/common/mojo/service_registry_impl.h" |
| 47 #include "content/common/navigation_params.h" | 47 #include "content/common/navigation_params.h" |
| 48 #include "content/common/savable_subframe.h" | 48 #include "content/common/savable_subframe.h" |
| 49 #include "content/common/service_worker/service_worker_types.h" | 49 #include "content/common/service_worker/service_worker_types.h" |
| 50 #include "content/common/site_isolation_policy.h" | 50 #include "content/common/site_isolation_policy.h" |
| 51 #include "content/common/ssl_status_serialization.h" |
| 51 #include "content/common/swapped_out_messages.h" | 52 #include "content/common/swapped_out_messages.h" |
| 52 #include "content/common/view_messages.h" | 53 #include "content/common/view_messages.h" |
| 53 #include "content/public/common/bindings_policy.h" | 54 #include "content/public/common/bindings_policy.h" |
| 54 #include "content/public/common/content_constants.h" | 55 #include "content/public/common/content_constants.h" |
| 55 #include "content/public/common/content_switches.h" | 56 #include "content/public/common/content_switches.h" |
| 56 #include "content/public/common/context_menu_params.h" | 57 #include "content/public/common/context_menu_params.h" |
| 57 #include "content/public/common/isolated_world_ids.h" | 58 #include "content/public/common/isolated_world_ids.h" |
| 58 #include "content/public/common/page_state.h" | 59 #include "content/public/common/page_state.h" |
| 59 #include "content/public/common/resource_response.h" | 60 #include "content/public/common/resource_response.h" |
| 60 #include "content/public/common/service_registry.h" | 61 #include "content/public/common/service_registry.h" |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 568 | 569 |
| 569 void OnGotContentHandlerID(uint32_t content_handler_id) {} | 570 void OnGotContentHandlerID(uint32_t content_handler_id) {} |
| 570 | 571 |
| 571 WebString ConvertRelativePathToHtmlAttribute(const base::FilePath& path) { | 572 WebString ConvertRelativePathToHtmlAttribute(const base::FilePath& path) { |
| 572 DCHECK(!path.IsAbsolute()); | 573 DCHECK(!path.IsAbsolute()); |
| 573 return WebString::fromUTF8( | 574 return WebString::fromUTF8( |
| 574 std::string("./") + | 575 std::string("./") + |
| 575 path.NormalizePathSeparatorsTo(FILE_PATH_LITERAL('/')).AsUTF8Unsafe()); | 576 path.NormalizePathSeparatorsTo(FILE_PATH_LITERAL('/')).AsUTF8Unsafe()); |
| 576 } | 577 } |
| 577 | 578 |
| 579 bool IsContentWithCertificateErrorsRelevantToUI( |
| 580 const blink::WebURL& url, |
| 581 const blink::WebCString& security_info, |
| 582 const blink::WebURL& main_resource_url, |
| 583 const blink::WebCString& main_resource_security_info) { |
| 584 content::SSLStatus ssl_status; |
| 585 content::SSLStatus main_resource_ssl_status; |
| 586 CHECK(DeserializeSecurityInfo(security_info, &ssl_status)); |
| 587 CHECK(DeserializeSecurityInfo(main_resource_security_info, |
| 588 &main_resource_ssl_status)); |
| 589 |
| 590 if (!GURL(main_resource_url).SchemeIsCryptographic()) |
| 591 return false; |
| 592 |
| 593 // Do not handle subresource certificate errors if they are the same |
| 594 // as errors that occured during the main page load. This compares |
| 595 // most, but not all, fields of SSLStatus. For example, this check |
| 596 // does not compare |content_status| because the navigation entry |
| 597 // might have mixed content but also have the exact same SSL |
| 598 // connection properties as the subresource, thereby making the |
| 599 // subresource errors duplicative. |
| 600 return (!url::Origin(GURL(url)) |
| 601 .IsSameOriginWith(url::Origin(GURL(main_resource_url))) || |
| 602 main_resource_ssl_status.security_style != |
| 603 ssl_status.security_style || |
| 604 main_resource_ssl_status.cert_id != ssl_status.cert_id || |
| 605 main_resource_ssl_status.cert_status != ssl_status.cert_status || |
| 606 main_resource_ssl_status.security_bits != ssl_status.security_bits || |
| 607 main_resource_ssl_status.connection_status != |
| 608 ssl_status.connection_status); |
| 609 } |
| 610 |
| 578 } // namespace | 611 } // namespace |
| 579 | 612 |
| 580 // static | 613 // static |
| 581 RenderFrameImpl* RenderFrameImpl::Create(RenderViewImpl* render_view, | 614 RenderFrameImpl* RenderFrameImpl::Create(RenderViewImpl* render_view, |
| 582 int32 routing_id) { | 615 int32 routing_id) { |
| 583 DCHECK(routing_id != MSG_ROUTING_NONE); | 616 DCHECK(routing_id != MSG_ROUTING_NONE); |
| 584 CreateParams params(render_view, routing_id); | 617 CreateParams params(render_view, routing_id); |
| 585 | 618 |
| 586 if (g_create_render_frame_impl) | 619 if (g_create_render_frame_impl) |
| 587 return g_create_render_frame_impl(params); | 620 return g_create_render_frame_impl(params); |
| (...skipping 3091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3679 } | 3712 } |
| 3680 | 3713 |
| 3681 void RenderFrameImpl::didDisplayInsecureContent() { | 3714 void RenderFrameImpl::didDisplayInsecureContent() { |
| 3682 Send(new FrameHostMsg_DidDisplayInsecureContent(routing_id_)); | 3715 Send(new FrameHostMsg_DidDisplayInsecureContent(routing_id_)); |
| 3683 } | 3716 } |
| 3684 | 3717 |
| 3685 void RenderFrameImpl::didRunInsecureContent( | 3718 void RenderFrameImpl::didRunInsecureContent( |
| 3686 const blink::WebSecurityOrigin& origin, | 3719 const blink::WebSecurityOrigin& origin, |
| 3687 const blink::WebURL& target) { | 3720 const blink::WebURL& target) { |
| 3688 Send(new FrameHostMsg_DidRunInsecureContent( | 3721 Send(new FrameHostMsg_DidRunInsecureContent( |
| 3689 routing_id_, origin.toString().utf8(), target)); | 3722 routing_id_, GURL(origin.toString().utf8()), target)); |
| 3690 GetContentClient()->renderer()->RecordRapporURL( | 3723 GetContentClient()->renderer()->RecordRapporURL( |
| 3691 "ContentSettings.MixedScript.RanMixedScript", | 3724 "ContentSettings.MixedScript.RanMixedScript", |
| 3692 GURL(origin.toString().utf8())); | 3725 GURL(origin.toString().utf8())); |
| 3693 } | 3726 } |
| 3694 | 3727 |
| 3728 void RenderFrameImpl::didDisplayContentWithCertificateErrors( |
| 3729 const blink::WebURL& url, |
| 3730 const blink::WebCString& security_info, |
| 3731 const blink::WebURL& main_resource_url, |
| 3732 const blink::WebCString& main_resource_security_info) { |
| 3733 if (!IsContentWithCertificateErrorsRelevantToUI( |
| 3734 url, security_info, main_resource_url, main_resource_security_info)) { |
| 3735 return; |
| 3736 } |
| 3737 Send(new FrameHostMsg_DidDisplayContentWithCertificateErrors(routing_id_, url, |
| 3738 security_info)); |
| 3739 } |
| 3740 |
| 3741 void RenderFrameImpl::didRunContentWithCertificateErrors( |
| 3742 const blink::WebURL& url, |
| 3743 const blink::WebCString& security_info, |
| 3744 const blink::WebURL& main_resource_url, |
| 3745 const blink::WebCString& main_resource_security_info) { |
| 3746 if (!IsContentWithCertificateErrorsRelevantToUI( |
| 3747 url, security_info, main_resource_url, main_resource_security_info)) { |
| 3748 return; |
| 3749 } |
| 3750 Send(new FrameHostMsg_DidRunContentWithCertificateErrors( |
| 3751 routing_id_, GURL(main_resource_url).GetOrigin(), url, security_info)); |
| 3752 } |
| 3753 |
| 3695 void RenderFrameImpl::didChangePerformanceTiming() { | 3754 void RenderFrameImpl::didChangePerformanceTiming() { |
| 3696 FOR_EACH_OBSERVER(RenderFrameObserver, | 3755 FOR_EACH_OBSERVER(RenderFrameObserver, |
| 3697 observers_, | 3756 observers_, |
| 3698 DidChangePerformanceTiming()); | 3757 DidChangePerformanceTiming()); |
| 3699 } | 3758 } |
| 3700 | 3759 |
| 3701 void RenderFrameImpl::didCreateScriptContext(blink::WebLocalFrame* frame, | 3760 void RenderFrameImpl::didCreateScriptContext(blink::WebLocalFrame* frame, |
| 3702 v8::Local<v8::Context> context, | 3761 v8::Local<v8::Context> context, |
| 3703 int extension_group, | 3762 int extension_group, |
| 3704 int world_id) { | 3763 int world_id) { |
| (...skipping 1758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5463 media::ConvertToSwitchOutputDeviceCB(web_callbacks); | 5522 media::ConvertToSwitchOutputDeviceCB(web_callbacks); |
| 5464 scoped_refptr<media::AudioOutputDevice> device = | 5523 scoped_refptr<media::AudioOutputDevice> device = |
| 5465 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), | 5524 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), |
| 5466 security_origin); | 5525 security_origin); |
| 5467 media::OutputDeviceStatus status = device->GetDeviceStatus(); | 5526 media::OutputDeviceStatus status = device->GetDeviceStatus(); |
| 5468 device->Stop(); | 5527 device->Stop(); |
| 5469 callback.Run(status); | 5528 callback.Run(status); |
| 5470 } | 5529 } |
| 5471 | 5530 |
| 5472 } // namespace content | 5531 } // namespace content |
| OLD | NEW |