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

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

Issue 1169983006: Convert BrowserPlugin to render using cc::Surfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restore guest resize pathway. Created 5 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
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/blink/web_layer_impl.h" 7 #include "cc/blink/web_layer_impl.h"
8 #include "cc/layers/delegated_frame_provider.h" 8 #include "cc/layers/delegated_frame_provider.h"
9 #include "cc/layers/delegated_frame_resource_collection.h" 9 #include "cc/layers/delegated_frame_resource_collection.h"
10 #include "cc/layers/delegated_renderer_layer.h" 10 #include "cc/layers/delegated_renderer_layer.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 // static 281 // static
282 void ChildFrameCompositingHelper::RequireCallback( 282 void ChildFrameCompositingHelper::RequireCallback(
283 scoped_refptr<ThreadSafeSender> sender, 283 scoped_refptr<ThreadSafeSender> sender,
284 int host_routing_id, 284 int host_routing_id,
285 cc::SurfaceId id, 285 cc::SurfaceId id,
286 cc::SurfaceSequence sequence) { 286 cc::SurfaceSequence sequence) {
287 // This may be called on either the main or impl thread. 287 // This may be called on either the main or impl thread.
288 sender->Send(new FrameHostMsg_RequireSequence(host_routing_id, id, sequence)); 288 sender->Send(new FrameHostMsg_RequireSequence(host_routing_id, id, sequence));
289 } 289 }
290 290
291 void ChildFrameCompositingHelper::RequireCallbackBrowserPlugin(
292 scoped_refptr<ThreadSafeSender> sender,
293 int host_routing_id,
294 int browser_plugin_instance_id,
295 cc::SurfaceId id,
296 cc::SurfaceSequence sequence) {
297 // This may be called on either the main or impl thread.
298 sender->Send(new BrowserPluginHostMsg_RequireSequence(
299 host_routing_id, browser_plugin_instance_id, id, sequence));
300 }
301
291 void ChildFrameCompositingHelper::OnSetSurface( 302 void ChildFrameCompositingHelper::OnSetSurface(
292 const cc::SurfaceId& surface_id, 303 const cc::SurfaceId& surface_id,
293 const gfx::Size& frame_size, 304 const gfx::Size& frame_size,
294 float scale_factor, 305 float scale_factor,
295 const cc::SurfaceSequence& sequence) { 306 const cc::SurfaceSequence& sequence) {
296 // Surface IDs and compositor frames should never be received 307 // Surface IDs and compositor frames should never be received
297 // interchangably. 308 // interchangably.
298 DCHECK(!delegated_layer_.get()); 309 DCHECK(!delegated_layer_.get());
299 310
300 // Do nothing if we are getting destroyed. 311 // Do nothing if we are getting destroyed.
301 if (!background_layer_.get()) 312 if (!background_layer_.get())
302 return; 313 return;
303 314
304 if (!surface_layer_.get()) { 315 if (!surface_layer_.get()) {
305 scoped_refptr<ThreadSafeSender> sender( 316 scoped_refptr<ThreadSafeSender> sender(
306 RenderThreadImpl::current()->thread_safe_sender()); 317 RenderThreadImpl::current()->thread_safe_sender());
307 cc::SurfaceLayer::SatisfyCallback satisfy_callback = 318 cc::SurfaceLayer::SatisfyCallback satisfy_callback =
308 base::Bind(&ChildFrameCompositingHelper::SatisfyCallback, sender, 319 base::Bind(&ChildFrameCompositingHelper::SatisfyCallback, sender,
309 host_routing_id_); 320 host_routing_id_);
310 cc::SurfaceLayer::RequireCallback require_callback = 321 cc::SurfaceLayer::RequireCallback require_callback =
311 base::Bind(&ChildFrameCompositingHelper::RequireCallback, sender, 322 render_frame_proxy_
312 host_routing_id_); 323 ? base::Bind(&ChildFrameCompositingHelper::RequireCallback, sender,
324 host_routing_id_)
325 : base::Bind(
326 &ChildFrameCompositingHelper::RequireCallbackBrowserPlugin,
327 sender, host_routing_id_,
328 browser_plugin_->browser_plugin_instance_id());
313 surface_layer_ = 329 surface_layer_ =
314 cc::SurfaceLayer::Create(cc_blink::WebLayerImpl::LayerSettings(), 330 cc::SurfaceLayer::Create(cc_blink::WebLayerImpl::LayerSettings(),
315 satisfy_callback, require_callback); 331 satisfy_callback, require_callback);
316 } 332 }
317 surface_layer_->SetSurfaceId(surface_id, scale_factor, frame_size); 333 surface_layer_->SetSurfaceId(surface_id, scale_factor, frame_size);
318 UpdateVisibility(true); 334 UpdateVisibility(true);
319 SetContentsOpaque(opaque_); 335 SetContentsOpaque(opaque_);
320 background_layer_->AddChild(surface_layer_); 336 background_layer_->AddChild(surface_layer_);
321 337
322 // The RWHV creates a destruction dependency on the surface that needs to be 338 // The RWHV creates a destruction dependency on the surface that needs to be
323 // satisfied. 339 // satisfied. Note: render_frame_proxy_ is null in the case our client is a
324 render_frame_proxy_->Send( 340 // BrowserPlugin; in this case the BrowserPlugin sends its own SatisfySequence
325 new FrameHostMsg_SatisfySequence(host_routing_id_, sequence)); 341 // message.
kenrb 2015/06/10 20:43:39 This is okay, but is there a reason it is done by
wjmaclean 2015/06/10 21:05:02 I considered adding a new function in the BrowserP
342 if (render_frame_proxy_) {
343 render_frame_proxy_->Send(
344 new FrameHostMsg_SatisfySequence(host_routing_id_, sequence));
345 }
326 346
327 CheckSizeAndAdjustLayerProperties(frame_size, scale_factor, 347 CheckSizeAndAdjustLayerProperties(frame_size, scale_factor,
328 surface_layer_.get()); 348 surface_layer_.get());
329 } 349 }
330 350
331 void ChildFrameCompositingHelper::UpdateVisibility(bool visible) { 351 void ChildFrameCompositingHelper::UpdateVisibility(bool visible) {
332 if (delegated_layer_.get()) 352 if (delegated_layer_.get())
333 delegated_layer_->SetIsDrawable(visible); 353 delegated_layer_->SetIsDrawable(visible);
334 if (surface_layer_.get()) 354 if (surface_layer_.get())
335 surface_layer_->SetIsDrawable(visible); 355 surface_layer_->SetIsDrawable(visible);
(...skipping 21 matching lines...) Expand all
357 377
358 void ChildFrameCompositingHelper::SetContentsOpaque(bool opaque) { 378 void ChildFrameCompositingHelper::SetContentsOpaque(bool opaque) {
359 opaque_ = opaque; 379 opaque_ = opaque;
360 if (delegated_layer_.get()) 380 if (delegated_layer_.get())
361 delegated_layer_->SetContentsOpaque(opaque_); 381 delegated_layer_->SetContentsOpaque(opaque_);
362 if (surface_layer_.get()) 382 if (surface_layer_.get())
363 surface_layer_->SetContentsOpaque(opaque_); 383 surface_layer_->SetContentsOpaque(opaque_);
364 } 384 }
365 385
366 } // namespace content 386 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698