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

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

Issue 345823002: Move ownership of ChildFrameCompositingHelper from frame to proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/child_frame_compositing_helper.h" 5 #include "content/renderer/child_frame_compositing_helper.h"
6 6
7 #include "cc/layers/delegated_frame_provider.h" 7 #include "cc/layers/delegated_frame_provider.h"
8 #include "cc/layers/delegated_frame_resource_collection.h" 8 #include "cc/layers/delegated_frame_resource_collection.h"
9 #include "cc/layers/delegated_renderer_layer.h" 9 #include "cc/layers/delegated_renderer_layer.h"
10 #include "cc/layers/solid_color_layer.h" 10 #include "cc/layers/solid_color_layer.h"
11 #include "cc/layers/texture_layer.h" 11 #include "cc/layers/texture_layer.h"
12 #include "cc/output/context_provider.h" 12 #include "cc/output/context_provider.h"
13 #include "cc/output/copy_output_request.h" 13 #include "cc/output/copy_output_request.h"
14 #include "cc/output/copy_output_result.h" 14 #include "cc/output/copy_output_result.h"
15 #include "cc/resources/single_release_callback.h" 15 #include "cc/resources/single_release_callback.h"
16 #include "content/common/browser_plugin/browser_plugin_messages.h" 16 #include "content/common/browser_plugin/browser_plugin_messages.h"
17 #include "content/common/frame_messages.h" 17 #include "content/common/frame_messages.h"
18 #include "content/common/gpu/client/context_provider_command_buffer.h" 18 #include "content/common/gpu/client/context_provider_command_buffer.h"
19 #include "content/renderer/browser_plugin/browser_plugin.h" 19 #include "content/renderer/browser_plugin/browser_plugin.h"
20 #include "content/renderer/browser_plugin/browser_plugin_manager.h" 20 #include "content/renderer/browser_plugin/browser_plugin_manager.h"
21 #include "content/renderer/compositor_bindings/web_layer_impl.h" 21 #include "content/renderer/compositor_bindings/web_layer_impl.h"
22 #include "content/renderer/render_frame_impl.h" 22 #include "content/renderer/render_frame_impl.h"
23 #include "content/renderer/render_frame_proxy.h"
23 #include "content/renderer/render_thread_impl.h" 24 #include "content/renderer/render_thread_impl.h"
24 #include "skia/ext/image_operations.h" 25 #include "skia/ext/image_operations.h"
25 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" 26 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
26 #include "third_party/WebKit/public/web/WebFrame.h" 27 #include "third_party/WebKit/public/web/WebFrame.h"
27 #include "third_party/WebKit/public/web/WebPluginContainer.h" 28 #include "third_party/WebKit/public/web/WebPluginContainer.h"
28 #include "third_party/khronos/GLES2/gl2.h" 29 #include "third_party/khronos/GLES2/gl2.h"
29 #include "ui/gfx/size_conversions.h" 30 #include "ui/gfx/size_conversions.h"
30 #include "ui/gfx/skia_util.h" 31 #include "ui/gfx/skia_util.h"
31 32
32 namespace content { 33 namespace content {
33 34
34 ChildFrameCompositingHelper::SwapBuffersInfo::SwapBuffersInfo() 35 ChildFrameCompositingHelper::SwapBuffersInfo::SwapBuffersInfo()
35 : route_id(0), 36 : route_id(0),
36 output_surface_id(0), 37 output_surface_id(0),
37 host_id(0), 38 host_id(0),
38 software_frame_id(0), 39 software_frame_id(0),
39 shared_memory(NULL) {} 40 shared_memory(NULL) {}
40 41
41 ChildFrameCompositingHelper* 42 ChildFrameCompositingHelper*
42 ChildFrameCompositingHelper::CreateCompositingHelperForBrowserPlugin( 43 ChildFrameCompositingHelper::CreateCompositingHelperForBrowserPlugin(
43 const base::WeakPtr<BrowserPlugin>& browser_plugin) { 44 const base::WeakPtr<BrowserPlugin>& browser_plugin) {
44 return new ChildFrameCompositingHelper( 45 return new ChildFrameCompositingHelper(
45 browser_plugin, NULL, NULL, browser_plugin->render_view_routing_id()); 46 browser_plugin, NULL, NULL, browser_plugin->render_view_routing_id());
46 } 47 }
47 48
48 ChildFrameCompositingHelper* 49 ChildFrameCompositingHelper*
49 ChildFrameCompositingHelper::CreateCompositingHelperForRenderFrame( 50 ChildFrameCompositingHelper::CreateCompositingHelperForRenderFrame(
50 blink::WebFrame* frame, 51 blink::WebFrame* frame,
51 RenderFrameImpl* render_frame, 52 RenderFrameProxy* render_frame_proxy,
52 int host_routing_id) { 53 int host_routing_id) {
53 return new ChildFrameCompositingHelper( 54 return new ChildFrameCompositingHelper(
54 base::WeakPtr<BrowserPlugin>(), frame, render_frame, host_routing_id); 55 base::WeakPtr<BrowserPlugin>(), frame, render_frame_proxy,
56 host_routing_id);
55 } 57 }
56 58
57 ChildFrameCompositingHelper::ChildFrameCompositingHelper( 59 ChildFrameCompositingHelper::ChildFrameCompositingHelper(
58 const base::WeakPtr<BrowserPlugin>& browser_plugin, 60 const base::WeakPtr<BrowserPlugin>& browser_plugin,
59 blink::WebFrame* frame, 61 blink::WebFrame* frame,
60 RenderFrameImpl* render_frame, 62 RenderFrameProxy* render_frame_proxy,
61 int host_routing_id) 63 int host_routing_id)
62 : host_routing_id_(host_routing_id), 64 : host_routing_id_(host_routing_id),
63 last_route_id_(0), 65 last_route_id_(0),
64 last_output_surface_id_(0), 66 last_output_surface_id_(0),
65 last_host_id_(0), 67 last_host_id_(0),
66 last_mailbox_valid_(false), 68 last_mailbox_valid_(false),
67 ack_pending_(true), 69 ack_pending_(true),
68 software_ack_pending_(false), 70 software_ack_pending_(false),
69 opaque_(true), 71 opaque_(true),
70 browser_plugin_(browser_plugin), 72 browser_plugin_(browser_plugin),
71 render_frame_(render_frame), 73 render_frame_proxy_(render_frame_proxy),
72 frame_(frame) {} 74 frame_(frame) {}
73 75
74 ChildFrameCompositingHelper::~ChildFrameCompositingHelper() {} 76 ChildFrameCompositingHelper::~ChildFrameCompositingHelper() {}
75 77
76 BrowserPluginManager* ChildFrameCompositingHelper::GetBrowserPluginManager() { 78 BrowserPluginManager* ChildFrameCompositingHelper::GetBrowserPluginManager() {
77 if (!browser_plugin_) 79 if (!browser_plugin_)
78 return NULL; 80 return NULL;
79 81
80 return browser_plugin_->browser_plugin_manager(); 82 return browser_plugin_->browser_plugin_manager();
81 } 83 }
(...skipping 13 matching lines...) Expand all
95 } 97 }
96 98
97 void ChildFrameCompositingHelper::SendCompositorFrameSwappedACKToBrowser( 99 void ChildFrameCompositingHelper::SendCompositorFrameSwappedACKToBrowser(
98 FrameHostMsg_CompositorFrameSwappedACK_Params& params) { 100 FrameHostMsg_CompositorFrameSwappedACK_Params& params) {
99 // This function will be removed when BrowserPluginManager is removed and 101 // This function will be removed when BrowserPluginManager is removed and
100 // BrowserPlugin is modified to use a RenderFrame. 102 // BrowserPlugin is modified to use a RenderFrame.
101 if (GetBrowserPluginManager()) { 103 if (GetBrowserPluginManager()) {
102 GetBrowserPluginManager()->Send( 104 GetBrowserPluginManager()->Send(
103 new BrowserPluginHostMsg_CompositorFrameSwappedACK( 105 new BrowserPluginHostMsg_CompositorFrameSwappedACK(
104 host_routing_id_, GetInstanceID(), params)); 106 host_routing_id_, GetInstanceID(), params));
105 } else if (render_frame_) { 107 } else if (render_frame_proxy_) {
106 render_frame_->Send( 108 render_frame_proxy_->Send(
107 new FrameHostMsg_CompositorFrameSwappedACK(host_routing_id_, params)); 109 new FrameHostMsg_CompositorFrameSwappedACK(host_routing_id_, params));
108 } 110 }
109 } 111 }
110 112
111 void ChildFrameCompositingHelper::SendBuffersSwappedACKToBrowser( 113 void ChildFrameCompositingHelper::SendBuffersSwappedACKToBrowser(
112 FrameHostMsg_BuffersSwappedACK_Params& params) { 114 FrameHostMsg_BuffersSwappedACK_Params& params) {
113 // This function will be removed when BrowserPluginManager is removed and 115 // This function will be removed when BrowserPluginManager is removed and
114 // BrowserPlugin is modified to use a RenderFrame. 116 // BrowserPlugin is modified to use a RenderFrame.
115 if (GetBrowserPluginManager()) { 117 if (GetBrowserPluginManager()) {
116 GetBrowserPluginManager()->Send(new BrowserPluginHostMsg_BuffersSwappedACK( 118 GetBrowserPluginManager()->Send(new BrowserPluginHostMsg_BuffersSwappedACK(
117 host_routing_id_, params)); 119 host_routing_id_, params));
118 } else if (render_frame_) { 120 } else if (render_frame_proxy_) {
119 render_frame_->Send( 121 render_frame_proxy_->Send(
120 new FrameHostMsg_BuffersSwappedACK(host_routing_id_, params)); 122 new FrameHostMsg_BuffersSwappedACK(host_routing_id_, params));
121 } 123 }
122 } 124 }
123 125
124 void ChildFrameCompositingHelper::SendReclaimCompositorResourcesToBrowser( 126 void ChildFrameCompositingHelper::SendReclaimCompositorResourcesToBrowser(
125 FrameHostMsg_ReclaimCompositorResources_Params& params) { 127 FrameHostMsg_ReclaimCompositorResources_Params& params) {
126 // This function will be removed when BrowserPluginManager is removed and 128 // This function will be removed when BrowserPluginManager is removed and
127 // BrowserPlugin is modified to use a RenderFrame. 129 // BrowserPlugin is modified to use a RenderFrame.
128 if (GetBrowserPluginManager()) { 130 if (GetBrowserPluginManager()) {
129 GetBrowserPluginManager()->Send( 131 GetBrowserPluginManager()->Send(
130 new BrowserPluginHostMsg_ReclaimCompositorResources( 132 new BrowserPluginHostMsg_ReclaimCompositorResources(
131 host_routing_id_, GetInstanceID(), params)); 133 host_routing_id_, GetInstanceID(), params));
132 } else if (render_frame_) { 134 } else if (render_frame_proxy_) {
133 render_frame_->Send( 135 render_frame_proxy_->Send(
134 new FrameHostMsg_ReclaimCompositorResources(host_routing_id_, params)); 136 new FrameHostMsg_ReclaimCompositorResources(host_routing_id_, params));
135 } 137 }
136 } 138 }
137 139
138 void ChildFrameCompositingHelper::CopyFromCompositingSurface( 140 void ChildFrameCompositingHelper::CopyFromCompositingSurface(
139 int request_id, 141 int request_id,
140 gfx::Rect source_rect, 142 gfx::Rect source_rect,
141 gfx::Size dest_size) { 143 gfx::Size dest_size) {
142 CHECK(background_layer_); 144 CHECK(background_layer_);
143 scoped_ptr<cc::CopyOutputRequest> request = 145 scoped_ptr<cc::CopyOutputRequest> request =
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 SendCompositorFrameSwappedACKToBrowser(params); 180 SendCompositorFrameSwappedACKToBrowser(params);
179 181
180 ack_pending_ = false; 182 ack_pending_ = false;
181 } 183 }
182 184
183 void ChildFrameCompositingHelper::EnableCompositing(bool enable) { 185 void ChildFrameCompositingHelper::EnableCompositing(bool enable) {
184 if (enable && !background_layer_.get()) { 186 if (enable && !background_layer_.get()) {
185 background_layer_ = cc::SolidColorLayer::Create(); 187 background_layer_ = cc::SolidColorLayer::Create();
186 background_layer_->SetMasksToBounds(true); 188 background_layer_->SetMasksToBounds(true);
187 background_layer_->SetBackgroundColor( 189 background_layer_->SetBackgroundColor(
188 SkColorSetARGBInline(255, 255, 255, 255)); 190 SkColorSetARGBInline(255, 255, 255, 0));
kenrb 2014/06/20 14:28:19 Was this just for testing?
nasko 2014/06/20 17:01:34 Yes.
189 web_layer_.reset(new WebLayerImpl(background_layer_)); 191 web_layer_.reset(new WebLayerImpl(background_layer_));
190 } 192 }
191 193
192 if (GetContainer()) { 194 if (GetContainer()) {
193 GetContainer()->setWebLayer(enable ? web_layer_.get() : NULL); 195 GetContainer()->setWebLayer(enable ? web_layer_.get() : NULL);
194 } else if (frame_) { 196 } else if (frame_) {
195 frame_->setRemoteWebLayer(enable ? web_layer_.get() : NULL); 197 frame_->setRemoteWebLayer(enable ? web_layer_.get() : NULL);
196 } 198 }
197 } 199 }
198 200
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 dest_size.height()); 559 dest_size.height());
558 } 560 }
559 if (GetBrowserPluginManager()) { 561 if (GetBrowserPluginManager()) {
560 GetBrowserPluginManager()->Send( 562 GetBrowserPluginManager()->Send(
561 new BrowserPluginHostMsg_CopyFromCompositingSurfaceAck( 563 new BrowserPluginHostMsg_CopyFromCompositingSurfaceAck(
562 host_routing_id_, GetInstanceID(), request_id, resized_bitmap)); 564 host_routing_id_, GetInstanceID(), request_id, resized_bitmap));
563 } 565 }
564 } 566 }
565 567
566 } // namespace content 568 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698