| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "webkit/renderer/compositor_bindings/web_layer_impl.h" | 5 #include "content/renderer/compositor_bindings/web_layer_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/debug/trace_event_impl.h" | 8 #include "base/debug/trace_event_impl.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| 11 #include "base/threading/thread_checker.h" | 11 #include "base/threading/thread_checker.h" |
| 12 #include "cc/animation/animation.h" | 12 #include "cc/animation/animation.h" |
| 13 #include "cc/base/region.h" | 13 #include "cc/base/region.h" |
| 14 #include "cc/base/switches.h" | 14 #include "cc/base/switches.h" |
| 15 #include "cc/layers/layer.h" | 15 #include "cc/layers/layer.h" |
| 16 #include "cc/layers/layer_position_constraint.h" | 16 #include "cc/layers/layer_position_constraint.h" |
| 17 #include "cc/trees/layer_tree_host.h" | 17 #include "cc/trees/layer_tree_host.h" |
| 18 #include "content/renderer/compositor_bindings/web_animation_impl.h" |
| 19 #include "content/renderer/compositor_bindings/web_blend_mode.h" |
| 20 #include "content/renderer/compositor_bindings/web_filter_operations_impl.h" |
| 21 #include "content/renderer/compositor_bindings/web_to_cc_animation_delegate_adap
ter.h" |
| 18 #include "third_party/WebKit/public/platform/WebFloatPoint.h" | 22 #include "third_party/WebKit/public/platform/WebFloatPoint.h" |
| 19 #include "third_party/WebKit/public/platform/WebFloatRect.h" | 23 #include "third_party/WebKit/public/platform/WebFloatRect.h" |
| 20 #include "third_party/WebKit/public/platform/WebGraphicsLayerDebugInfo.h" | 24 #include "third_party/WebKit/public/platform/WebGraphicsLayerDebugInfo.h" |
| 21 #include "third_party/WebKit/public/platform/WebLayerClient.h" | 25 #include "third_party/WebKit/public/platform/WebLayerClient.h" |
| 22 #include "third_party/WebKit/public/platform/WebLayerPositionConstraint.h" | 26 #include "third_party/WebKit/public/platform/WebLayerPositionConstraint.h" |
| 23 #include "third_party/WebKit/public/platform/WebLayerScrollClient.h" | 27 #include "third_party/WebKit/public/platform/WebLayerScrollClient.h" |
| 24 #include "third_party/WebKit/public/platform/WebSize.h" | 28 #include "third_party/WebKit/public/platform/WebSize.h" |
| 25 #include "third_party/skia/include/utils/SkMatrix44.h" | 29 #include "third_party/skia/include/utils/SkMatrix44.h" |
| 26 #include "webkit/renderer/compositor_bindings/web_animation_impl.h" | |
| 27 #include "webkit/renderer/compositor_bindings/web_blend_mode.h" | |
| 28 #include "webkit/renderer/compositor_bindings/web_filter_operations_impl.h" | |
| 29 #include "webkit/renderer/compositor_bindings/web_to_cc_animation_delegate_adapt
er.h" | |
| 30 | 30 |
| 31 using cc::Animation; | 31 using cc::Animation; |
| 32 using cc::Layer; | 32 using cc::Layer; |
| 33 using blink::WebLayer; | 33 using blink::WebLayer; |
| 34 using blink::WebFloatPoint; | 34 using blink::WebFloatPoint; |
| 35 using blink::WebVector; | 35 using blink::WebVector; |
| 36 using blink::WebRect; | 36 using blink::WebRect; |
| 37 using blink::WebSize; | 37 using blink::WebSize; |
| 38 using blink::WebColor; | 38 using blink::WebColor; |
| 39 using blink::WebFilterOperations; | 39 using blink::WebFilterOperations; |
| 40 | 40 |
| 41 namespace webkit { | 41 namespace content { |
| 42 namespace { | 42 namespace { |
| 43 | 43 |
| 44 bool g_impl_side_painting_enabled = false; | 44 bool g_impl_side_painting_enabled = false; |
| 45 | 45 |
| 46 } // namespace | 46 } // namespace |
| 47 | 47 |
| 48 WebLayerImpl::WebLayerImpl() : layer_(Layer::Create()) { | 48 WebLayerImpl::WebLayerImpl() : layer_(Layer::Create()) { |
| 49 web_layer_client_ = NULL; | 49 web_layer_client_ = NULL; |
| 50 layer_->SetLayerClient(this); | 50 layer_->SetLayerClient(this); |
| 51 } | 51 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 64 // static | 64 // static |
| 65 bool WebLayerImpl::UsingPictureLayer() { | 65 bool WebLayerImpl::UsingPictureLayer() { |
| 66 return g_impl_side_painting_enabled; | 66 return g_impl_side_painting_enabled; |
| 67 } | 67 } |
| 68 | 68 |
| 69 // static | 69 // static |
| 70 void WebLayerImpl::SetImplSidePaintingEnabled(bool enabled) { | 70 void WebLayerImpl::SetImplSidePaintingEnabled(bool enabled) { |
| 71 g_impl_side_painting_enabled = enabled; | 71 g_impl_side_painting_enabled = enabled; |
| 72 } | 72 } |
| 73 | 73 |
| 74 int WebLayerImpl::id() const { return layer_->id(); } | 74 int WebLayerImpl::id() const { |
| 75 return layer_->id(); |
| 76 } |
| 75 | 77 |
| 76 void WebLayerImpl::invalidateRect(const blink::WebFloatRect& rect) { | 78 void WebLayerImpl::invalidateRect(const blink::WebFloatRect& rect) { |
| 77 layer_->SetNeedsDisplayRect(rect); | 79 layer_->SetNeedsDisplayRect(rect); |
| 78 } | 80 } |
| 79 | 81 |
| 80 void WebLayerImpl::invalidate() { layer_->SetNeedsDisplay(); } | 82 void WebLayerImpl::invalidate() { |
| 83 layer_->SetNeedsDisplay(); |
| 84 } |
| 81 | 85 |
| 82 void WebLayerImpl::addChild(WebLayer* child) { | 86 void WebLayerImpl::addChild(WebLayer* child) { |
| 83 layer_->AddChild(static_cast<WebLayerImpl*>(child)->layer()); | 87 layer_->AddChild(static_cast<WebLayerImpl*>(child)->layer()); |
| 84 } | 88 } |
| 85 | 89 |
| 86 void WebLayerImpl::insertChild(WebLayer* child, size_t index) { | 90 void WebLayerImpl::insertChild(WebLayer* child, size_t index) { |
| 87 layer_->InsertChild(static_cast<WebLayerImpl*>(child)->layer(), index); | 91 layer_->InsertChild(static_cast<WebLayerImpl*>(child)->layer(), index); |
| 88 } | 92 } |
| 89 | 93 |
| 90 void WebLayerImpl::replaceChild(WebLayer* reference, WebLayer* new_layer) { | 94 void WebLayerImpl::replaceChild(WebLayer* reference, WebLayer* new_layer) { |
| 91 layer_->ReplaceChild(static_cast<WebLayerImpl*>(reference)->layer(), | 95 layer_->ReplaceChild(static_cast<WebLayerImpl*>(reference)->layer(), |
| 92 static_cast<WebLayerImpl*>(new_layer)->layer()); | 96 static_cast<WebLayerImpl*>(new_layer)->layer()); |
| 93 } | 97 } |
| 94 | 98 |
| 95 void WebLayerImpl::removeFromParent() { layer_->RemoveFromParent(); } | 99 void WebLayerImpl::removeFromParent() { |
| 100 layer_->RemoveFromParent(); |
| 101 } |
| 96 | 102 |
| 97 void WebLayerImpl::removeAllChildren() { layer_->RemoveAllChildren(); } | 103 void WebLayerImpl::removeAllChildren() { |
| 104 layer_->RemoveAllChildren(); |
| 105 } |
| 98 | 106 |
| 99 void WebLayerImpl::setBounds(const WebSize& size) { layer_->SetBounds(size); } | 107 void WebLayerImpl::setBounds(const WebSize& size) { layer_->SetBounds(size); } |
| 100 | 108 |
| 101 WebSize WebLayerImpl::bounds() const { return layer_->bounds(); } | 109 WebSize WebLayerImpl::bounds() const { |
| 110 return layer_->bounds(); |
| 111 } |
| 102 | 112 |
| 103 void WebLayerImpl::setMasksToBounds(bool masks_to_bounds) { | 113 void WebLayerImpl::setMasksToBounds(bool masks_to_bounds) { |
| 104 layer_->SetMasksToBounds(masks_to_bounds); | 114 layer_->SetMasksToBounds(masks_to_bounds); |
| 105 } | 115 } |
| 106 | 116 |
| 107 bool WebLayerImpl::masksToBounds() const { return layer_->masks_to_bounds(); } | 117 bool WebLayerImpl::masksToBounds() const { |
| 118 return layer_->masks_to_bounds(); |
| 119 } |
| 108 | 120 |
| 109 void WebLayerImpl::setMaskLayer(WebLayer* maskLayer) { | 121 void WebLayerImpl::setMaskLayer(WebLayer* maskLayer) { |
| 110 layer_->SetMaskLayer( | 122 layer_->SetMaskLayer( |
| 111 maskLayer ? static_cast<WebLayerImpl*>(maskLayer)->layer() : 0); | 123 maskLayer ? static_cast<WebLayerImpl*>(maskLayer)->layer() : 0); |
| 112 } | 124 } |
| 113 | 125 |
| 114 void WebLayerImpl::setReplicaLayer(WebLayer* replica_layer) { | 126 void WebLayerImpl::setReplicaLayer(WebLayer* replica_layer) { |
| 115 layer_->SetReplicaLayer( | 127 layer_->SetReplicaLayer( |
| 116 replica_layer ? static_cast<WebLayerImpl*>(replica_layer)->layer() : 0); | 128 replica_layer ? static_cast<WebLayerImpl*>(replica_layer)->layer() : 0); |
| 117 } | 129 } |
| 118 | 130 |
| 119 void WebLayerImpl::setOpacity(float opacity) { layer_->SetOpacity(opacity); } | 131 void WebLayerImpl::setOpacity(float opacity) { |
| 132 layer_->SetOpacity(opacity); |
| 133 } |
| 120 | 134 |
| 121 float WebLayerImpl::opacity() const { return layer_->opacity(); } | 135 float WebLayerImpl::opacity() const { |
| 136 return layer_->opacity(); |
| 137 } |
| 122 | 138 |
| 123 void WebLayerImpl::setBlendMode(blink::WebBlendMode blend_mode) { | 139 void WebLayerImpl::setBlendMode(blink::WebBlendMode blend_mode) { |
| 124 layer_->SetBlendMode(BlendModeToSkia(blend_mode)); | 140 layer_->SetBlendMode(BlendModeToSkia(blend_mode)); |
| 125 } | 141 } |
| 126 | 142 |
| 127 blink::WebBlendMode WebLayerImpl::blendMode() const { | 143 blink::WebBlendMode WebLayerImpl::blendMode() const { |
| 128 return BlendModeFromSkia(layer_->blend_mode()); | 144 return BlendModeFromSkia(layer_->blend_mode()); |
| 129 } | 145 } |
| 130 | 146 |
| 131 void WebLayerImpl::setIsRootForIsolatedGroup(bool isolate) { | 147 void WebLayerImpl::setIsRootForIsolatedGroup(bool isolate) { |
| 132 layer_->SetIsRootForIsolatedGroup(isolate); | 148 layer_->SetIsRootForIsolatedGroup(isolate); |
| 133 } | 149 } |
| 134 | 150 |
| 135 bool WebLayerImpl::isRootForIsolatedGroup() { | 151 bool WebLayerImpl::isRootForIsolatedGroup() { |
| 136 return layer_->is_root_for_isolated_group(); | 152 return layer_->is_root_for_isolated_group(); |
| 137 } | 153 } |
| 138 | 154 |
| 139 void WebLayerImpl::setOpaque(bool opaque) { layer_->SetContentsOpaque(opaque); } | 155 void WebLayerImpl::setOpaque(bool opaque) { |
| 156 layer_->SetContentsOpaque(opaque); |
| 157 } |
| 140 | 158 |
| 141 bool WebLayerImpl::opaque() const { return layer_->contents_opaque(); } | 159 bool WebLayerImpl::opaque() const { |
| 160 return layer_->contents_opaque(); |
| 161 } |
| 142 | 162 |
| 143 void WebLayerImpl::setPosition(const WebFloatPoint& position) { | 163 void WebLayerImpl::setPosition(const WebFloatPoint& position) { |
| 144 layer_->SetPosition(position); | 164 layer_->SetPosition(position); |
| 145 } | 165 } |
| 146 | 166 |
| 147 WebFloatPoint WebLayerImpl::position() const { return layer_->position(); } | 167 WebFloatPoint WebLayerImpl::position() const { |
| 168 return layer_->position(); |
| 169 } |
| 148 | 170 |
| 149 void WebLayerImpl::setTransform(const SkMatrix44& matrix) { | 171 void WebLayerImpl::setTransform(const SkMatrix44& matrix) { |
| 150 gfx::Transform transform; | 172 gfx::Transform transform; |
| 151 transform.matrix() = matrix; | 173 transform.matrix() = matrix; |
| 152 layer_->SetTransform(transform); | 174 layer_->SetTransform(transform); |
| 153 } | 175 } |
| 154 | 176 |
| 155 void WebLayerImpl::setTransformOrigin(const blink::WebFloatPoint3D& point) { | 177 void WebLayerImpl::setTransformOrigin(const blink::WebFloatPoint3D& point) { |
| 156 gfx::Point3F gfx_point = point; | 178 gfx::Point3F gfx_point = point; |
| 157 layer_->SetTransformOrigin(gfx_point); | 179 layer_->SetTransformOrigin(gfx_point); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 174 }; | 196 }; |
| 175 | 197 |
| 176 SkMatrix44 WebLayerImpl::transform() const { | 198 SkMatrix44 WebLayerImpl::transform() const { |
| 177 return layer_->transform().matrix(); | 199 return layer_->transform().matrix(); |
| 178 } | 200 } |
| 179 | 201 |
| 180 void WebLayerImpl::setDrawsContent(bool draws_content) { | 202 void WebLayerImpl::setDrawsContent(bool draws_content) { |
| 181 layer_->SetIsDrawable(draws_content); | 203 layer_->SetIsDrawable(draws_content); |
| 182 } | 204 } |
| 183 | 205 |
| 184 bool WebLayerImpl::drawsContent() const { return layer_->DrawsContent(); } | 206 bool WebLayerImpl::drawsContent() const { |
| 207 return layer_->DrawsContent(); |
| 208 } |
| 185 | 209 |
| 186 void WebLayerImpl::setShouldFlattenTransform(bool flatten) { | 210 void WebLayerImpl::setShouldFlattenTransform(bool flatten) { |
| 187 layer_->SetShouldFlattenTransform(flatten); | 211 layer_->SetShouldFlattenTransform(flatten); |
| 188 } | 212 } |
| 189 | 213 |
| 190 void WebLayerImpl::setRenderingContext(int context) { | 214 void WebLayerImpl::setRenderingContext(int context) { |
| 191 layer_->SetIs3dSorted(context != 0); | 215 layer_->SetIs3dSorted(context != 0); |
| 192 } | 216 } |
| 193 | 217 |
| 194 void WebLayerImpl::setUseParentBackfaceVisibility( | 218 void WebLayerImpl::setUseParentBackfaceVisibility( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 209 static_cast<const WebFilterOperationsImpl&>(filters); | 233 static_cast<const WebFilterOperationsImpl&>(filters); |
| 210 layer_->SetFilters(filters_impl.AsFilterOperations()); | 234 layer_->SetFilters(filters_impl.AsFilterOperations()); |
| 211 } | 235 } |
| 212 | 236 |
| 213 void WebLayerImpl::setBackgroundFilters(const WebFilterOperations& filters) { | 237 void WebLayerImpl::setBackgroundFilters(const WebFilterOperations& filters) { |
| 214 const WebFilterOperationsImpl& filters_impl = | 238 const WebFilterOperationsImpl& filters_impl = |
| 215 static_cast<const WebFilterOperationsImpl&>(filters); | 239 static_cast<const WebFilterOperationsImpl&>(filters); |
| 216 layer_->SetBackgroundFilters(filters_impl.AsFilterOperations()); | 240 layer_->SetBackgroundFilters(filters_impl.AsFilterOperations()); |
| 217 } | 241 } |
| 218 | 242 |
| 219 void WebLayerImpl::setAnimationDelegate( | 243 void WebLayerImpl::setAnimationDelegate(blink::WebAnimationDelegate* delegate) { |
| 220 blink::WebAnimationDelegate* delegate) { | |
| 221 animation_delegate_adapter_.reset( | 244 animation_delegate_adapter_.reset( |
| 222 new WebToCCAnimationDelegateAdapter(delegate)); | 245 new WebToCCAnimationDelegateAdapter(delegate)); |
| 223 layer_->set_layer_animation_delegate(animation_delegate_adapter_.get()); | 246 layer_->set_layer_animation_delegate(animation_delegate_adapter_.get()); |
| 224 } | 247 } |
| 225 | 248 |
| 226 bool WebLayerImpl::addAnimation(blink::WebAnimation* animation) { | 249 bool WebLayerImpl::addAnimation(blink::WebAnimation* animation) { |
| 227 bool result = layer_->AddAnimation( | 250 bool result = layer_->AddAnimation( |
| 228 static_cast<WebAnimationImpl*>(animation)->PassAnimation()); | 251 static_cast<WebAnimationImpl*>(animation)->PassAnimation()); |
| 229 delete animation; | 252 delete animation; |
| 230 return result; | 253 return result; |
| 231 } | 254 } |
| 232 | 255 |
| 233 void WebLayerImpl::removeAnimation(int animation_id) { | 256 void WebLayerImpl::removeAnimation(int animation_id) { |
| 234 layer_->RemoveAnimation(animation_id); | 257 layer_->RemoveAnimation(animation_id); |
| 235 } | 258 } |
| 236 | 259 |
| 237 void WebLayerImpl::removeAnimation( | 260 void WebLayerImpl::removeAnimation( |
| 238 int animation_id, | 261 int animation_id, |
| 239 blink::WebAnimation::TargetProperty target_property) { | 262 blink::WebAnimation::TargetProperty target_property) { |
| 240 layer_->layer_animation_controller()->RemoveAnimation( | 263 layer_->layer_animation_controller()->RemoveAnimation( |
| 241 animation_id, | 264 animation_id, static_cast<Animation::TargetProperty>(target_property)); |
| 242 static_cast<Animation::TargetProperty>(target_property)); | |
| 243 } | 265 } |
| 244 | 266 |
| 245 void WebLayerImpl::pauseAnimation(int animation_id, double time_offset) { | 267 void WebLayerImpl::pauseAnimation(int animation_id, double time_offset) { |
| 246 layer_->PauseAnimation(animation_id, time_offset); | 268 layer_->PauseAnimation(animation_id, time_offset); |
| 247 } | 269 } |
| 248 | 270 |
| 249 bool WebLayerImpl::hasActiveAnimation() { return layer_->HasActiveAnimation(); } | 271 bool WebLayerImpl::hasActiveAnimation() { |
| 272 return layer_->HasActiveAnimation(); |
| 273 } |
| 250 | 274 |
| 251 void WebLayerImpl::setForceRenderSurface(bool force_render_surface) { | 275 void WebLayerImpl::setForceRenderSurface(bool force_render_surface) { |
| 252 layer_->SetForceRenderSurface(force_render_surface); | 276 layer_->SetForceRenderSurface(force_render_surface); |
| 253 } | 277 } |
| 254 | 278 |
| 255 void WebLayerImpl::setScrollPosition(blink::WebPoint position) { | 279 void WebLayerImpl::setScrollPosition(blink::WebPoint position) { |
| 256 layer_->SetScrollOffset(gfx::Point(position).OffsetFromOrigin()); | 280 layer_->SetScrollOffset(gfx::Point(position).OffsetFromOrigin()); |
| 257 } | 281 } |
| 258 | 282 |
| 259 blink::WebPoint WebLayerImpl::scrollPosition() const { | 283 blink::WebPoint WebLayerImpl::scrollPosition() const { |
| 260 return gfx::PointAtOffsetFromOrigin(layer_->scroll_offset()); | 284 return gfx::PointAtOffsetFromOrigin(layer_->scroll_offset()); |
| 261 } | 285 } |
| 262 | 286 |
| 263 void WebLayerImpl::setScrollClipLayer(WebLayer* clip_layer) { | 287 void WebLayerImpl::setScrollClipLayer(WebLayer* clip_layer) { |
| 264 if (!clip_layer) { | 288 if (!clip_layer) { |
| 265 layer_->SetScrollClipLayerId(Layer::INVALID_ID); | 289 layer_->SetScrollClipLayerId(Layer::INVALID_ID); |
| 266 return; | 290 return; |
| 267 } | 291 } |
| 268 layer_->SetScrollClipLayerId(clip_layer->id()); | 292 layer_->SetScrollClipLayerId(clip_layer->id()); |
| 269 } | 293 } |
| 270 | 294 |
| 271 bool WebLayerImpl::scrollable() const { return layer_->scrollable(); } | 295 bool WebLayerImpl::scrollable() const { |
| 296 return layer_->scrollable(); |
| 297 } |
| 272 | 298 |
| 273 void WebLayerImpl::setUserScrollable(bool horizontal, bool vertical) { | 299 void WebLayerImpl::setUserScrollable(bool horizontal, bool vertical) { |
| 274 layer_->SetUserScrollable(horizontal, vertical); | 300 layer_->SetUserScrollable(horizontal, vertical); |
| 275 } | 301 } |
| 276 | 302 |
| 277 bool WebLayerImpl::userScrollableHorizontal() const { | 303 bool WebLayerImpl::userScrollableHorizontal() const { |
| 278 return layer_->user_scrollable_horizontal(); | 304 return layer_->user_scrollable_horizontal(); |
| 279 } | 305 } |
| 280 | 306 |
| 281 bool WebLayerImpl::userScrollableVertical() const { | 307 bool WebLayerImpl::userScrollableVertical() const { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 | 411 |
| 386 void WebLayerImpl::setPositionConstraint( | 412 void WebLayerImpl::setPositionConstraint( |
| 387 const blink::WebLayerPositionConstraint& constraint) { | 413 const blink::WebLayerPositionConstraint& constraint) { |
| 388 layer_->SetPositionConstraint(ToLayerPositionConstraint(constraint)); | 414 layer_->SetPositionConstraint(ToLayerPositionConstraint(constraint)); |
| 389 } | 415 } |
| 390 | 416 |
| 391 blink::WebLayerPositionConstraint WebLayerImpl::positionConstraint() const { | 417 blink::WebLayerPositionConstraint WebLayerImpl::positionConstraint() const { |
| 392 return ToWebLayerPositionConstraint(layer_->position_constraint()); | 418 return ToWebLayerPositionConstraint(layer_->position_constraint()); |
| 393 } | 419 } |
| 394 | 420 |
| 395 void WebLayerImpl::setScrollClient( | 421 void WebLayerImpl::setScrollClient(blink::WebLayerScrollClient* scroll_client) { |
| 396 blink::WebLayerScrollClient* scroll_client) { | |
| 397 if (scroll_client) { | 422 if (scroll_client) { |
| 398 layer_->set_did_scroll_callback( | 423 layer_->set_did_scroll_callback( |
| 399 base::Bind(&blink::WebLayerScrollClient::didScroll, | 424 base::Bind(&blink::WebLayerScrollClient::didScroll, |
| 400 base::Unretained(scroll_client))); | 425 base::Unretained(scroll_client))); |
| 401 } else { | 426 } else { |
| 402 layer_->set_did_scroll_callback(base::Closure()); | 427 layer_->set_did_scroll_callback(base::Closure()); |
| 403 } | 428 } |
| 404 } | 429 } |
| 405 | 430 |
| 406 bool WebLayerImpl::isOrphan() const { return !layer_->layer_tree_host(); } | 431 bool WebLayerImpl::isOrphan() const { |
| 432 return !layer_->layer_tree_host(); |
| 433 } |
| 407 | 434 |
| 408 void WebLayerImpl::setWebLayerClient(blink::WebLayerClient* client) { | 435 void WebLayerImpl::setWebLayerClient(blink::WebLayerClient* client) { |
| 409 web_layer_client_ = client; | 436 web_layer_client_ = client; |
| 410 } | 437 } |
| 411 | 438 |
| 412 class TracedDebugInfo : public base::debug::ConvertableToTraceFormat { | 439 class TracedDebugInfo : public base::debug::ConvertableToTraceFormat { |
| 413 public: | 440 public: |
| 414 // This object takes ownership of the debug_info object. | 441 // This object takes ownership of the debug_info object. |
| 415 explicit TracedDebugInfo(blink::WebGraphicsLayerDebugInfo* debug_info) : | 442 explicit TracedDebugInfo(blink::WebGraphicsLayerDebugInfo* debug_info) |
| 416 debug_info_(debug_info) {} | 443 : debug_info_(debug_info) {} |
| 417 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { | 444 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { |
| 418 DCHECK(thread_checker_.CalledOnValidThread()); | 445 DCHECK(thread_checker_.CalledOnValidThread()); |
| 419 blink::WebString web_string; | 446 blink::WebString web_string; |
| 420 debug_info_->appendAsTraceFormat(&web_string); | 447 debug_info_->appendAsTraceFormat(&web_string); |
| 421 out->append(web_string.utf8()); | 448 out->append(web_string.utf8()); |
| 422 } | 449 } |
| 450 |
| 423 private: | 451 private: |
| 424 virtual ~TracedDebugInfo() {} | 452 virtual ~TracedDebugInfo() {} |
| 425 scoped_ptr<blink::WebGraphicsLayerDebugInfo> debug_info_; | 453 scoped_ptr<blink::WebGraphicsLayerDebugInfo> debug_info_; |
| 426 base::ThreadChecker thread_checker_; | 454 base::ThreadChecker thread_checker_; |
| 427 }; | 455 }; |
| 428 | 456 |
| 429 scoped_refptr<base::debug::ConvertableToTraceFormat> | 457 scoped_refptr<base::debug::ConvertableToTraceFormat> |
| 430 WebLayerImpl::TakeDebugInfo() { | 458 WebLayerImpl::TakeDebugInfo() { |
| 431 if (!web_layer_client_) | 459 if (!web_layer_client_) |
| 432 return NULL; | 460 return NULL; |
| 433 blink::WebGraphicsLayerDebugInfo* debug_info = | 461 blink::WebGraphicsLayerDebugInfo* debug_info = |
| 434 web_layer_client_->takeDebugInfoFor(this); | 462 web_layer_client_->takeDebugInfoFor(this); |
| 435 | 463 |
| 436 if (debug_info) | 464 if (debug_info) |
| 437 return new TracedDebugInfo(debug_info); | 465 return new TracedDebugInfo(debug_info); |
| 438 else | 466 else |
| 439 return NULL; | 467 return NULL; |
| 440 } | 468 } |
| 441 | 469 |
| 442 void WebLayerImpl::setScrollParent(blink::WebLayer* parent) { | 470 void WebLayerImpl::setScrollParent(blink::WebLayer* parent) { |
| 443 cc::Layer* scroll_parent = NULL; | 471 cc::Layer* scroll_parent = NULL; |
| 444 if (parent) | 472 if (parent) |
| 445 scroll_parent = static_cast<WebLayerImpl*>(parent)->layer(); | 473 scroll_parent = static_cast<WebLayerImpl*>(parent)->layer(); |
| 446 layer_->SetScrollParent(scroll_parent); | 474 layer_->SetScrollParent(scroll_parent); |
| 447 } | 475 } |
| 448 | 476 |
| 449 void WebLayerImpl::setClipParent(blink::WebLayer* parent) { | 477 void WebLayerImpl::setClipParent(blink::WebLayer* parent) { |
| 450 cc::Layer* clip_parent = NULL; | 478 cc::Layer* clip_parent = NULL; |
| 451 if (parent) | 479 if (parent) |
| 452 clip_parent = static_cast<WebLayerImpl*>(parent)->layer(); | 480 clip_parent = static_cast<WebLayerImpl*>(parent)->layer(); |
| 453 layer_->SetClipParent(clip_parent); | 481 layer_->SetClipParent(clip_parent); |
| 454 } | 482 } |
| 455 | 483 |
| 456 Layer* WebLayerImpl::layer() const { return layer_.get(); } | 484 Layer* WebLayerImpl::layer() const { |
| 485 return layer_.get(); |
| 486 } |
| 457 | 487 |
| 458 } // namespace webkit | 488 } // namespace content |
| 489 |
| OLD | NEW |