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