| 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 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 // TODO(kenrb): Observing shouldn't be necessary when we sort out | 618 // TODO(kenrb): Observing shouldn't be necessary when we sort out |
| 619 // WasShown and WasHidden, separating page-level visibility from | 619 // WasShown and WasHidden, separating page-level visibility from |
| 620 // frame-level visibility. | 620 // frame-level visibility. |
| 621 render_frame->render_widget_->RegisterRenderFrame(render_frame); | 621 render_frame->render_widget_->RegisterRenderFrame(render_frame); |
| 622 } | 622 } |
| 623 | 623 |
| 624 render_frame->Initialize(); | 624 render_frame->Initialize(); |
| 625 } | 625 } |
| 626 | 626 |
| 627 // static | 627 // static |
| 628 const RenderFrame* RenderFrame::FromWebFrame(const blink::WebFrame* web_frame) { |
| 629 return RenderFrameImpl::FromWebFrame(web_frame); |
| 630 } |
| 631 |
| 632 // static |
| 628 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { | 633 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { |
| 629 return RenderFrameImpl::FromWebFrame(web_frame); | 634 return const_cast<RenderFrame*>(RenderFrame::FromWebFrame( |
| 635 static_cast<const blink::WebFrame*>(web_frame))); |
| 630 } | 636 } |
| 631 | 637 |
| 632 // static | 638 // static |
| 633 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) { | 639 const RenderFrameImpl* RenderFrameImpl::FromWebFrame( |
| 634 FrameMap::iterator iter = g_frame_map.Get().find(web_frame); | 640 const blink::WebFrame* web_frame) { |
| 641 const auto& const_frame_map = const_cast<const FrameMap&>(g_frame_map.Get()); |
| 642 FrameMap::const_iterator iter = |
| 643 const_frame_map.find(const_cast<blink::WebFrame*>(web_frame)); |
| 635 if (iter != g_frame_map.Get().end()) | 644 if (iter != g_frame_map.Get().end()) |
| 636 return iter->second; | 645 return iter->second; |
| 637 return NULL; | 646 return NULL; |
| 638 } | 647 } |
| 639 | 648 |
| 640 // static | 649 // static |
| 650 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) { |
| 651 return const_cast<RenderFrameImpl*>(RenderFrameImpl::FromWebFrame( |
| 652 static_cast<const blink::WebFrame*>(web_frame))); |
| 653 } |
| 654 |
| 655 // static |
| 641 void RenderFrameImpl::InstallCreateHook( | 656 void RenderFrameImpl::InstallCreateHook( |
| 642 CreateRenderFrameImplFunction create_render_frame_impl) { | 657 CreateRenderFrameImplFunction create_render_frame_impl) { |
| 643 CHECK(!g_create_render_frame_impl); | 658 CHECK(!g_create_render_frame_impl); |
| 644 g_create_render_frame_impl = create_render_frame_impl; | 659 g_create_render_frame_impl = create_render_frame_impl; |
| 645 } | 660 } |
| 646 | 661 |
| 647 // static | 662 // static |
| 648 blink::WebFrame* RenderFrameImpl::ResolveOpener(int opener_frame_routing_id, | 663 blink::WebFrame* RenderFrameImpl::ResolveOpener(int opener_frame_routing_id, |
| 649 int* opener_view_routing_id) { | 664 int* opener_view_routing_id) { |
| 650 if (opener_view_routing_id) | 665 if (opener_view_routing_id) |
| (...skipping 1214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1865 if (BrowserPluginManager::Get()) | 1880 if (BrowserPluginManager::Get()) |
| 1866 BrowserPluginManager::Get()->DidCommitCompositorFrame(GetRoutingID()); | 1881 BrowserPluginManager::Get()->DidCommitCompositorFrame(GetRoutingID()); |
| 1867 FOR_EACH_OBSERVER( | 1882 FOR_EACH_OBSERVER( |
| 1868 RenderFrameObserver, observers_, DidCommitCompositorFrame()); | 1883 RenderFrameObserver, observers_, DidCommitCompositorFrame()); |
| 1869 } | 1884 } |
| 1870 | 1885 |
| 1871 RenderView* RenderFrameImpl::GetRenderView() { | 1886 RenderView* RenderFrameImpl::GetRenderView() { |
| 1872 return render_view_.get(); | 1887 return render_view_.get(); |
| 1873 } | 1888 } |
| 1874 | 1889 |
| 1875 int RenderFrameImpl::GetRoutingID() { | 1890 int RenderFrameImpl::GetRoutingID() const { |
| 1876 return routing_id_; | 1891 return routing_id_; |
| 1877 } | 1892 } |
| 1878 | 1893 |
| 1879 blink::WebLocalFrame* RenderFrameImpl::GetWebFrame() { | 1894 blink::WebLocalFrame* RenderFrameImpl::GetWebFrame() { |
| 1880 DCHECK(frame_); | 1895 DCHECK(frame_); |
| 1881 return frame_; | 1896 return frame_; |
| 1882 } | 1897 } |
| 1883 | 1898 |
| 1884 WebElement RenderFrameImpl::GetFocusedElement() const { | 1899 WebElement RenderFrameImpl::GetFocusedElement() const { |
| 1885 WebDocument doc = frame_->document(); | 1900 WebDocument doc = frame_->document(); |
| (...skipping 2007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3893 | 3908 |
| 3894 void RenderFrameImpl::DidPause(WebMediaPlayer* player) { | 3909 void RenderFrameImpl::DidPause(WebMediaPlayer* player) { |
| 3895 Send(new FrameHostMsg_MediaPausedNotification( | 3910 Send(new FrameHostMsg_MediaPausedNotification( |
| 3896 routing_id_, reinterpret_cast<int64>(player))); | 3911 routing_id_, reinterpret_cast<int64>(player))); |
| 3897 } | 3912 } |
| 3898 | 3913 |
| 3899 void RenderFrameImpl::PlayerGone(WebMediaPlayer* player) { | 3914 void RenderFrameImpl::PlayerGone(WebMediaPlayer* player) { |
| 3900 DidPause(player); | 3915 DidPause(player); |
| 3901 } | 3916 } |
| 3902 | 3917 |
| 3903 void RenderFrameImpl::didSerializeDataForFrame( | 3918 void RenderFrameImpl::writeHtmlFragment(const WebCString& data) { |
| 3904 const WebURL& frame_url, | 3919 Send(new FrameHostMsg_SerializedHtmlFragment(routing_id_, data)); |
| 3905 const WebCString& data, | 3920 } |
| 3906 WebPageSerializerClient::PageSerializationStatus status) { | 3921 |
| 3907 Send(new FrameHostMsg_SerializedHtmlWithLocalLinksResponse( | 3922 void RenderFrameImpl::writeLocalPathForSubFrame(const WebFrame& subframe) { |
| 3908 routing_id_, frame_url, data.data(), static_cast<int32>(status))); | 3923 int subframe_routing_id; |
| 3924 if (subframe.isWebRemoteFrame()) { |
| 3925 subframe_routing_id = |
| 3926 RenderFrameProxy::FromWebFrame(&subframe)->routing_id(); |
| 3927 } else { |
| 3928 DCHECK(subframe.isWebLocalFrame()); |
| 3929 subframe_routing_id = RenderFrame::FromWebFrame(&subframe)->GetRoutingID(); |
| 3930 } |
| 3931 |
| 3932 Send(new FrameHostMsg_SerializedLocalPathForSubFrame(routing_id_, |
| 3933 subframe_routing_id)); |
| 3934 } |
| 3935 |
| 3936 void RenderFrameImpl::writeLocalPathForSavableResource( |
| 3937 const WebURL& savable_resource_url) { |
| 3938 Send(new FrameHostMsg_SerializedLocalPathForSavableResource( |
| 3939 routing_id_, savable_resource_url)); |
| 3940 } |
| 3941 |
| 3942 void RenderFrameImpl::endOfFrame() { |
| 3943 Send(new FrameHostMsg_SerializedEndOfFrame(routing_id_)); |
| 3909 } | 3944 } |
| 3910 | 3945 |
| 3911 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { | 3946 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { |
| 3912 observers_.AddObserver(observer); | 3947 observers_.AddObserver(observer); |
| 3913 } | 3948 } |
| 3914 | 3949 |
| 3915 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { | 3950 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { |
| 3916 observer->RenderFrameGone(); | 3951 observer->RenderFrameGone(); |
| 3917 observers_.RemoveObserver(observer); | 3952 observers_.RemoveObserver(observer); |
| 3918 } | 3953 } |
| (...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4448 CHECK_EQ(referrer_urls_list.size(), referrer_policies_list.size()); | 4483 CHECK_EQ(referrer_urls_list.size(), referrer_policies_list.size()); |
| 4449 for (unsigned i = 0; i < referrer_urls_list.size(); ++i) { | 4484 for (unsigned i = 0; i < referrer_urls_list.size(); ++i) { |
| 4450 referrers_list.push_back( | 4485 referrers_list.push_back( |
| 4451 Referrer(referrer_urls_list[i], referrer_policies_list[i])); | 4486 Referrer(referrer_urls_list[i], referrer_policies_list[i])); |
| 4452 } | 4487 } |
| 4453 | 4488 |
| 4454 Send(new FrameHostMsg_SavableResourceLinksResponse( | 4489 Send(new FrameHostMsg_SavableResourceLinksResponse( |
| 4455 routing_id_, frame_->document().url(), resources_list, referrers_list)); | 4490 routing_id_, frame_->document().url(), resources_list, referrers_list)); |
| 4456 } | 4491 } |
| 4457 | 4492 |
| 4458 void RenderFrameImpl::OnGetSerializedHtmlWithLocalLinks( | 4493 void RenderFrameImpl::OnGetSerializedHtmlWithLocalLinks() { |
| 4459 std::vector<GURL> original_urls, | |
| 4460 std::vector<base::FilePath> equivalent_local_paths, | |
| 4461 base::FilePath local_directory_path) { | |
| 4462 // Only DCHECK, since the message comes from the trusted browser process. | |
| 4463 DCHECK(original_urls.size() == equivalent_local_paths.size()); | |
| 4464 | |
| 4465 // Convert std::vector of GURLs to WebVector<WebURL> | |
| 4466 WebVector<WebURL> weburl_links(original_urls); | |
| 4467 | |
| 4468 // Convert std::vector of base::FilePath to WebVector<WebString> | |
| 4469 WebVector<WebString> webstring_paths(equivalent_local_paths.size()); | |
| 4470 for (size_t i = 0; i < equivalent_local_paths.size(); i++) | |
| 4471 webstring_paths[i] = equivalent_local_paths[i].AsUTF16Unsafe(); | |
| 4472 | |
| 4473 // Serialize the frame (without recursing into subframes). | |
| 4474 WebPageSerializer::serialize(GetWebFrame(), | 4494 WebPageSerializer::serialize(GetWebFrame(), |
| 4475 this, // WebPageSerializerClient. | 4495 this); // WebPageSerializerClient. |
| 4476 weburl_links, webstring_paths, | |
| 4477 local_directory_path.AsUTF16Unsafe()); | |
| 4478 } | 4496 } |
| 4479 | 4497 |
| 4480 void RenderFrameImpl::OpenURL(WebFrame* frame, | 4498 void RenderFrameImpl::OpenURL(WebFrame* frame, |
| 4481 const GURL& url, | 4499 const GURL& url, |
| 4482 const Referrer& referrer, | 4500 const Referrer& referrer, |
| 4483 WebNavigationPolicy policy) { | 4501 WebNavigationPolicy policy) { |
| 4484 DCHECK_EQ(frame_, frame); | 4502 DCHECK_EQ(frame_, frame); |
| 4485 | 4503 |
| 4486 FrameHostMsg_OpenURL_Params params; | 4504 FrameHostMsg_OpenURL_Params params; |
| 4487 params.url = url; | 4505 params.url = url; |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5168 mojo::ServiceProviderPtr service_provider; | 5186 mojo::ServiceProviderPtr service_provider; |
| 5169 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5187 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 5170 request->url = mojo::String::From(url); | 5188 request->url = mojo::String::From(url); |
| 5171 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5189 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
| 5172 nullptr, nullptr, | 5190 nullptr, nullptr, |
| 5173 base::Bind(&OnGotContentHandlerID)); | 5191 base::Bind(&OnGotContentHandlerID)); |
| 5174 return service_provider.Pass(); | 5192 return service_provider.Pass(); |
| 5175 } | 5193 } |
| 5176 | 5194 |
| 5177 } // namespace content | 5195 } // namespace content |
| OLD | NEW |