| OLD | NEW |
| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "cc/blink/web_layer_impl.h" | 9 #include "cc/blink/web_layer_impl.h" |
| 10 #include "cc/layers/layer_settings.h" | |
| 11 #include "cc/layers/picture_image_layer.h" | 10 #include "cc/layers/picture_image_layer.h" |
| 12 #include "cc/layers/solid_color_layer.h" | 11 #include "cc/layers/solid_color_layer.h" |
| 13 #include "cc/layers/surface_layer.h" | 12 #include "cc/layers/surface_layer.h" |
| 14 #include "cc/output/context_provider.h" | 13 #include "cc/output/context_provider.h" |
| 15 #include "cc/output/copy_output_request.h" | 14 #include "cc/output/copy_output_request.h" |
| 16 #include "cc/output/copy_output_result.h" | 15 #include "cc/output/copy_output_result.h" |
| 17 #include "cc/resources/single_release_callback.h" | 16 #include "cc/resources/single_release_callback.h" |
| 18 #include "content/child/thread_safe_sender.h" | 17 #include "content/child/thread_safe_sender.h" |
| 19 #include "content/common/browser_plugin/browser_plugin_messages.h" | 18 #include "content/common/browser_plugin/browser_plugin_messages.h" |
| 20 #include "content/common/content_switches_internal.h" | 19 #include "content/common/content_switches_internal.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 layer->SetBounds(device_scale_adjusted_size); | 111 layer->SetBounds(device_scale_adjusted_size); |
| 113 } | 112 } |
| 114 } | 113 } |
| 115 | 114 |
| 116 void ChildFrameCompositingHelper::OnContainerDestroy() { | 115 void ChildFrameCompositingHelper::OnContainerDestroy() { |
| 117 UpdateWebLayer(nullptr); | 116 UpdateWebLayer(nullptr); |
| 118 } | 117 } |
| 119 | 118 |
| 120 void ChildFrameCompositingHelper::ChildFrameGone() { | 119 void ChildFrameCompositingHelper::ChildFrameGone() { |
| 121 scoped_refptr<cc::SolidColorLayer> crashed_layer = | 120 scoped_refptr<cc::SolidColorLayer> crashed_layer = |
| 122 cc::SolidColorLayer::Create(cc::LayerSettings()); | 121 cc::SolidColorLayer::Create(); |
| 123 crashed_layer->SetMasksToBounds(true); | 122 crashed_layer->SetMasksToBounds(true); |
| 124 crashed_layer->SetBackgroundColor(SK_ColorBLACK); | 123 crashed_layer->SetBackgroundColor(SK_ColorBLACK); |
| 125 | 124 |
| 126 if (web_layer_) { | 125 if (web_layer_) { |
| 127 SkBitmap* sad_bitmap = | 126 SkBitmap* sad_bitmap = |
| 128 GetContentClient()->renderer()->GetSadWebViewBitmap(); | 127 GetContentClient()->renderer()->GetSadWebViewBitmap(); |
| 129 if (sad_bitmap && web_layer_->bounds().width > sad_bitmap->width() && | 128 if (sad_bitmap && web_layer_->bounds().width > sad_bitmap->width() && |
| 130 web_layer_->bounds().height > sad_bitmap->height()) { | 129 web_layer_->bounds().height > sad_bitmap->height()) { |
| 131 scoped_refptr<cc::PictureImageLayer> sad_layer = | 130 scoped_refptr<cc::PictureImageLayer> sad_layer = |
| 132 cc::PictureImageLayer::Create(cc::LayerSettings()); | 131 cc::PictureImageLayer::Create(); |
| 133 skia::RefPtr<SkImage> image = | 132 skia::RefPtr<SkImage> image = |
| 134 skia::AdoptRef(SkImage::NewFromBitmap(*sad_bitmap)); | 133 skia::AdoptRef(SkImage::NewFromBitmap(*sad_bitmap)); |
| 135 sad_layer->SetImage(image); | 134 sad_layer->SetImage(image); |
| 136 sad_layer->SetBounds( | 135 sad_layer->SetBounds( |
| 137 gfx::Size(sad_bitmap->width(), sad_bitmap->height())); | 136 gfx::Size(sad_bitmap->width(), sad_bitmap->height())); |
| 138 sad_layer->SetPosition(gfx::PointF( | 137 sad_layer->SetPosition(gfx::PointF( |
| 139 (web_layer_->bounds().width - sad_bitmap->width()) / 2, | 138 (web_layer_->bounds().width - sad_bitmap->width()) / 2, |
| 140 (web_layer_->bounds().height - sad_bitmap->height()) / 2)); | 139 (web_layer_->bounds().height - sad_bitmap->height()) / 2)); |
| 141 sad_layer->SetIsDrawable(true); | 140 sad_layer->SetIsDrawable(true); |
| 142 | 141 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 browser_plugin_->browser_plugin_instance_id()); | 205 browser_plugin_->browser_plugin_instance_id()); |
| 207 cc::SurfaceLayer::RequireCallback require_callback = | 206 cc::SurfaceLayer::RequireCallback require_callback = |
| 208 render_frame_proxy_ | 207 render_frame_proxy_ |
| 209 ? base::Bind(&ChildFrameCompositingHelper::RequireCallback, sender, | 208 ? base::Bind(&ChildFrameCompositingHelper::RequireCallback, sender, |
| 210 host_routing_id_) | 209 host_routing_id_) |
| 211 : base::Bind( | 210 : base::Bind( |
| 212 &ChildFrameCompositingHelper::RequireCallbackBrowserPlugin, | 211 &ChildFrameCompositingHelper::RequireCallbackBrowserPlugin, |
| 213 sender, host_routing_id_, | 212 sender, host_routing_id_, |
| 214 browser_plugin_->browser_plugin_instance_id()); | 213 browser_plugin_->browser_plugin_instance_id()); |
| 215 scoped_refptr<cc::SurfaceLayer> surface_layer = | 214 scoped_refptr<cc::SurfaceLayer> surface_layer = |
| 216 cc::SurfaceLayer::Create(cc::LayerSettings(), | 215 cc::SurfaceLayer::Create(satisfy_callback, require_callback); |
| 217 satisfy_callback, require_callback); | |
| 218 // TODO(oshima): This is a stopgap fix so that the compositor does not | 216 // TODO(oshima): This is a stopgap fix so that the compositor does not |
| 219 // scaledown the content when 2x frame data is added to 1x parent frame data. | 217 // scaledown the content when 2x frame data is added to 1x parent frame data. |
| 220 // Fix this in cc/. | 218 // Fix this in cc/. |
| 221 if (IsUseZoomForDSFEnabled()) | 219 if (IsUseZoomForDSFEnabled()) |
| 222 scale_factor = 1.0f; | 220 scale_factor = 1.0f; |
| 223 | 221 |
| 224 surface_layer->SetSurfaceId(surface_id, scale_factor, frame_size); | 222 surface_layer->SetSurfaceId(surface_id, scale_factor, frame_size); |
| 225 surface_layer->SetMasksToBounds(true); | 223 surface_layer->SetMasksToBounds(true); |
| 226 blink::WebLayer* layer = new cc_blink::WebLayerImpl(surface_layer); | 224 blink::WebLayer* layer = new cc_blink::WebLayerImpl(surface_layer); |
| 227 UpdateWebLayer(layer); | 225 UpdateWebLayer(layer); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 243 frame_size, scale_factor, | 241 frame_size, scale_factor, |
| 244 static_cast<cc_blink::WebLayerImpl*>(web_layer_.get())->layer()); | 242 static_cast<cc_blink::WebLayerImpl*>(web_layer_.get())->layer()); |
| 245 } | 243 } |
| 246 | 244 |
| 247 void ChildFrameCompositingHelper::UpdateVisibility(bool visible) { | 245 void ChildFrameCompositingHelper::UpdateVisibility(bool visible) { |
| 248 if (web_layer_) | 246 if (web_layer_) |
| 249 web_layer_->setDrawsContent(visible); | 247 web_layer_->setDrawsContent(visible); |
| 250 } | 248 } |
| 251 | 249 |
| 252 } // namespace content | 250 } // namespace content |
| OLD | NEW |