Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "cc/blimp/compositor_state_deserializer.h" | 5 #include "cc/blimp/compositor_state_deserializer.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "cc/blimp/client_picture_cache.h" | 9 #include "cc/blimp/client_picture_cache.h" |
| 10 #include "cc/blimp/compositor_state_deserializer_client.h" | |
| 11 #include "cc/blimp/deserialized_content_layer_client.h" | 10 #include "cc/blimp/deserialized_content_layer_client.h" |
| 12 #include "cc/blimp/layer_factory.h" | 11 #include "cc/blimp/layer_factory.h" |
| 13 #include "cc/blimp/picture_data_conversions.h" | 12 #include "cc/blimp/picture_data_conversions.h" |
| 14 #include "cc/input/layer_selection_bound.h" | 13 #include "cc/input/layer_selection_bound.h" |
| 15 #include "cc/layers/layer.h" | 14 #include "cc/layers/layer.h" |
| 16 #include "cc/layers/picture_layer.h" | 15 #include "cc/layers/picture_layer.h" |
| 17 #include "cc/layers/solid_color_scrollbar_layer.h" | 16 #include "cc/layers/solid_color_scrollbar_layer.h" |
| 18 #include "cc/proto/cc_conversions.h" | 17 #include "cc/proto/cc_conversions.h" |
| 18 #include "cc/proto/client_state_update.pb.h" | |
| 19 #include "cc/proto/gfx_conversions.h" | 19 #include "cc/proto/gfx_conversions.h" |
| 20 #include "cc/proto/layer_tree_host.pb.h" | 20 #include "cc/proto/layer_tree_host.pb.h" |
| 21 #include "cc/proto/skia_conversions.h" | 21 #include "cc/proto/skia_conversions.h" |
| 22 #include "cc/trees/layer_tree_host.h" | 22 #include "cc/trees/layer_tree_host_common.h" |
| 23 #include "cc/trees/layer_tree_host_in_process.h" | |
| 23 | 24 |
| 24 namespace cc { | 25 namespace cc { |
| 25 namespace { | 26 namespace { |
| 26 | 27 |
| 27 class DefaultLayerFactory : public LayerFactory { | 28 class DefaultLayerFactory : public LayerFactory { |
| 28 public: | 29 public: |
| 29 DefaultLayerFactory() = default; | 30 DefaultLayerFactory() = default; |
| 30 ~DefaultLayerFactory() override = default; | 31 ~DefaultLayerFactory() override = default; |
| 31 | 32 |
| 32 // LayerFactory implementation. | 33 // LayerFactory implementation. |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 56 CompositorStateDeserializer::LayerData::LayerData() = default; | 57 CompositorStateDeserializer::LayerData::LayerData() = default; |
| 57 | 58 |
| 58 CompositorStateDeserializer::LayerData::~LayerData() = default; | 59 CompositorStateDeserializer::LayerData::~LayerData() = default; |
| 59 | 60 |
| 60 CompositorStateDeserializer::LayerData::LayerData(LayerData&& other) = default; | 61 CompositorStateDeserializer::LayerData::LayerData(LayerData&& other) = default; |
| 61 | 62 |
| 62 CompositorStateDeserializer::LayerData& CompositorStateDeserializer::LayerData:: | 63 CompositorStateDeserializer::LayerData& CompositorStateDeserializer::LayerData:: |
| 63 operator=(LayerData&& other) = default; | 64 operator=(LayerData&& other) = default; |
| 64 | 65 |
| 65 CompositorStateDeserializer::CompositorStateDeserializer( | 66 CompositorStateDeserializer::CompositorStateDeserializer( |
| 66 LayerTreeHost* layer_tree_host, | 67 LayerTreeHostInProcess* layer_tree_host, |
| 67 std::unique_ptr<ClientPictureCache> client_picture_cache, | 68 std::unique_ptr<ClientPictureCache> client_picture_cache, |
| 68 const ScrollCallback& scroll_callback, | |
| 69 CompositorStateDeserializerClient* client) | 69 CompositorStateDeserializerClient* client) |
| 70 : layer_factory_(base::MakeUnique<DefaultLayerFactory>()), | 70 : layer_factory_(base::MakeUnique<DefaultLayerFactory>()), |
| 71 layer_tree_host_(layer_tree_host), | 71 layer_tree_host_(layer_tree_host), |
| 72 client_picture_cache_(std::move(client_picture_cache)), | 72 client_picture_cache_(std::move(client_picture_cache)), |
| 73 scroll_callback_(scroll_callback), | 73 client_(client), |
| 74 client_(client) { | 74 weak_factory_(this) { |
| 75 DCHECK(layer_tree_host_); | 75 DCHECK(layer_tree_host_); |
| 76 DCHECK(client_); | 76 DCHECK(client_); |
| 77 } | 77 } |
| 78 | 78 |
| 79 CompositorStateDeserializer::~CompositorStateDeserializer() = default; | 79 CompositorStateDeserializer::~CompositorStateDeserializer() = default; |
| 80 | 80 |
| 81 Layer* CompositorStateDeserializer::GetLayerForEngineId( | 81 Layer* CompositorStateDeserializer::GetLayerForEngineId( |
| 82 int engine_layer_id) const { | 82 int engine_layer_id) const { |
| 83 EngineIdToLayerMap::const_iterator layer_it = | 83 EngineIdToLayerMap::const_iterator layer_it = |
| 84 engine_id_to_layer_.find(engine_layer_id); | 84 engine_id_to_layer_.find(engine_layer_id); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 105 | 105 |
| 106 // The deserialization is finished, so now clear the cache. | 106 // The deserialization is finished, so now clear the cache. |
| 107 client_picture_cache_->Flush(); | 107 client_picture_cache_->Flush(); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void CompositorStateDeserializer::SetLayerFactoryForTesting( | 110 void CompositorStateDeserializer::SetLayerFactoryForTesting( |
| 111 std::unique_ptr<LayerFactory> layer_factory) { | 111 std::unique_ptr<LayerFactory> layer_factory) { |
| 112 layer_factory_ = std::move(layer_factory); | 112 layer_factory_ = std::move(layer_factory); |
| 113 } | 113 } |
| 114 | 114 |
| 115 void CompositorStateDeserializer::ApplyViewportDeltas( | |
| 116 const gfx::Vector2dF& inner_delta, | |
| 117 const gfx::Vector2dF& outer_delta, | |
| 118 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 119 float page_scale, | |
| 120 float top_controls_delta) { | |
| 121 DCHECK_EQ(top_controls_delta, 0.0f); | |
| 122 DCHECK(elastic_overscroll_delta == gfx::Vector2dF()); | |
| 123 DCHECK(outer_delta == gfx::Vector2dF()); | |
| 124 | |
| 125 // The inner_delta can be ignored here, since we receive that in the scroll | |
| 126 // callback on the layer itself. | |
| 127 if (page_scale != 1.0f) { | |
| 128 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); | |
| 129 synced_page_scale_.UpdateDeltaFromImplThread( | |
| 130 layer_tree->page_scale_factor()); | |
| 131 layer_tree->SetPageScaleFactorAndLimits( | |
| 132 synced_page_scale_.EngineMain(), layer_tree->min_page_scale_factor(), | |
| 133 layer_tree->max_page_scale_factor()); | |
| 134 client_->DidUpdateLocalState(); | |
| 135 } | |
| 136 } | |
| 137 | |
| 138 void CompositorStateDeserializer::PullClientStateUpdate( | |
| 139 proto::ClientStateUpdate* client_state_update) { | |
| 140 for (auto& layer_it : engine_id_to_layer_) { | |
| 141 int engine_layer_id = layer_it.first; | |
| 142 auto& synced_scroll_offset = layer_it.second.synced_scroll_offset; | |
| 143 gfx::ScrollOffset scroll_offset_delta = | |
| 144 synced_scroll_offset.PullDeltaForEngineUpdate(); | |
| 145 gfx::Vector2d scroll_delta_vector(scroll_offset_delta.x(), | |
|
aelias_OOO_until_Jul13
2016/10/28 03:40:20
gfx::Vector2dF
Khushal
2016/10/31 21:02:01
Done.
| |
| 146 scroll_offset_delta.y()); | |
| 147 | |
| 148 if (scroll_delta_vector.IsZero()) { | |
| 149 continue; | |
| 150 } | |
| 151 | |
| 152 proto::ScrollUpdate* scroll_update = | |
| 153 client_state_update->add_scroll_updates(); | |
| 154 scroll_update->set_layer_id(engine_layer_id); | |
| 155 Vector2dToProto(scroll_delta_vector, scroll_update->mutable_scroll_delta()); | |
| 156 } | |
| 157 | |
| 158 float page_scale_delta = synced_page_scale_.PullDeltaForEngineUpdate(); | |
| 159 if (page_scale_delta != 1.0f) { | |
| 160 client_state_update->set_page_scale_delta(page_scale_delta); | |
| 161 } | |
| 162 } | |
| 163 | |
| 164 void CompositorStateDeserializer::DidApplyStateUpdatesOnEngine() { | |
| 165 for (auto& layer_it : engine_id_to_layer_) { | |
| 166 Layer* layer = layer_it.second.layer.get(); | |
| 167 auto& synced_scroll_offset = layer_it.second.synced_scroll_offset; | |
| 168 | |
| 169 synced_scroll_offset.DidApplySentDeltaOnEngine(); | |
| 170 layer->SetScrollOffset(synced_scroll_offset.EngineMain()); | |
| 171 } | |
| 172 | |
| 173 synced_page_scale_.DidApplySentDeltaOnEngine(); | |
| 174 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); | |
| 175 layer_tree->SetPageScaleFactorAndLimits(synced_page_scale_.EngineMain(), | |
| 176 layer_tree->min_page_scale_factor(), | |
| 177 layer_tree->max_page_scale_factor()); | |
| 178 } | |
| 179 | |
| 180 void CompositorStateDeserializer::SendUnappliedDeltasToLayerTreeHost() { | |
| 181 std::unique_ptr<ReflectedMainFrameState> reflected_main_frame_state = | |
| 182 base::MakeUnique<ReflectedMainFrameState>(); | |
| 183 | |
| 184 for (auto& layer_it : engine_id_to_layer_) { | |
| 185 Layer* layer = layer_it.second.layer.get(); | |
| 186 auto& synced_scroll_offset = layer_it.second.synced_scroll_offset; | |
| 187 | |
| 188 gfx::ScrollOffset scroll_offset_delta = | |
| 189 synced_scroll_offset.DeltaNotAppliedOnEngine(); | |
| 190 gfx::Vector2d scroll_delta_vector(scroll_offset_delta.x(), | |
|
aelias_OOO_until_Jul13
2016/10/28 03:40:19
gfx::Vector2dF
Khushal
2016/10/31 21:02:01
Done.
| |
| 191 scroll_offset_delta.y()); | |
| 192 if (scroll_delta_vector.IsZero()) | |
| 193 continue; | |
| 194 | |
| 195 LayerTreeHostCommon::ScrollUpdateInfo scroll_update; | |
| 196 scroll_update.layer_id = layer->id(); | |
| 197 scroll_update.scroll_delta = scroll_delta_vector; | |
| 198 reflected_main_frame_state->scrolls.push_back(scroll_update); | |
| 199 } | |
| 200 | |
| 201 reflected_main_frame_state->page_scale_delta = | |
| 202 synced_page_scale_.DeltaNotAppliedOnEngine(); | |
| 203 layer_tree_host_->SetReflectedMainFrameState( | |
| 204 std::move(reflected_main_frame_state)); | |
| 205 } | |
| 206 | |
| 115 void CompositorStateDeserializer::SychronizeLayerTreeState( | 207 void CompositorStateDeserializer::SychronizeLayerTreeState( |
| 116 const proto::LayerTree& layer_tree_proto) { | 208 const proto::LayerTree& layer_tree_proto) { |
| 117 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); | 209 LayerTree* layer_tree = layer_tree_host_->GetLayerTree(); |
| 118 | 210 |
| 119 // Synchronize the tree hierarchy first. | 211 // Synchronize the tree hierarchy first. |
| 120 // TODO(khushalsagar): Don't do this if the hierarchy didn't change. See | 212 // TODO(khushalsagar): Don't do this if the hierarchy didn't change. See |
| 121 // crbug.com/605170. | 213 // crbug.com/605170. |
| 122 EngineIdToLayerMap new_engine_id_to_layer; | 214 EngineIdToLayerMap new_engine_id_to_layer; |
| 123 ScrollbarLayerToScrollLayerId scrollbar_layer_to_scroll_layer; | 215 ScrollbarLayerToScrollLayerId scrollbar_layer_to_scroll_layer; |
| 124 if (layer_tree_proto.has_root_layer()) { | 216 if (layer_tree_proto.has_root_layer()) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 157 GetLayer(layer_tree_proto.inner_viewport_scroll_layer_id()), | 249 GetLayer(layer_tree_proto.inner_viewport_scroll_layer_id()), |
| 158 GetLayer(layer_tree_proto.outer_viewport_scroll_layer_id())); | 250 GetLayer(layer_tree_proto.outer_viewport_scroll_layer_id())); |
| 159 | 251 |
| 160 layer_tree->SetDeviceScaleFactor(layer_tree_proto.device_scale_factor()); | 252 layer_tree->SetDeviceScaleFactor(layer_tree_proto.device_scale_factor()); |
| 161 layer_tree->SetPaintedDeviceScaleFactor( | 253 layer_tree->SetPaintedDeviceScaleFactor( |
| 162 layer_tree_proto.painted_device_scale_factor()); | 254 layer_tree_proto.painted_device_scale_factor()); |
| 163 | 255 |
| 164 float min_page_scale_factor = layer_tree_proto.min_page_scale_factor(); | 256 float min_page_scale_factor = layer_tree_proto.min_page_scale_factor(); |
| 165 float max_page_scale_factor = layer_tree_proto.max_page_scale_factor(); | 257 float max_page_scale_factor = layer_tree_proto.max_page_scale_factor(); |
| 166 float page_scale_factor = layer_tree_proto.page_scale_factor(); | 258 float page_scale_factor = layer_tree_proto.page_scale_factor(); |
| 167 if (client_->ShouldRetainClientPageScale(page_scale_factor)) | 259 synced_page_scale_.PushFromEngineMainThread(page_scale_factor); |
| 168 page_scale_factor = layer_tree->page_scale_factor(); | 260 layer_tree->SetPageScaleFactorAndLimits(synced_page_scale_.EngineMain(), |
| 169 layer_tree->SetPageScaleFactorAndLimits( | 261 min_page_scale_factor, |
| 170 page_scale_factor, min_page_scale_factor, max_page_scale_factor); | 262 max_page_scale_factor); |
| 171 | 263 |
| 172 layer_tree->set_background_color(layer_tree_proto.background_color()); | 264 layer_tree->set_background_color(layer_tree_proto.background_color()); |
| 173 layer_tree->set_has_transparent_background( | 265 layer_tree->set_has_transparent_background( |
| 174 layer_tree_proto.has_transparent_background()); | 266 layer_tree_proto.has_transparent_background()); |
| 175 | 267 |
| 176 LayerSelection selection; | 268 LayerSelection selection; |
| 177 LayerSelectionFromProtobuf(&selection, layer_tree_proto.selection()); | 269 LayerSelectionFromProtobuf(&selection, layer_tree_proto.selection()); |
| 178 layer_tree->RegisterSelection(selection); | 270 layer_tree->RegisterSelection(selection); |
| 179 layer_tree->SetViewportSize( | 271 layer_tree->SetViewportSize( |
| 180 ProtoToSize(layer_tree_proto.device_viewport_size())); | 272 ProtoToSize(layer_tree_proto.device_viewport_size())); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 212 layer->SetPosition(ProtoToPointF(base.position())); | 304 layer->SetPosition(ProtoToPointF(base.position())); |
| 213 layer->SetTransform(ProtoToTransform(base.transform())); | 305 layer->SetTransform(ProtoToTransform(base.transform())); |
| 214 layer->SetTransformOrigin(ProtoToPoint3F(base.transform_origin())); | 306 layer->SetTransformOrigin(ProtoToPoint3F(base.transform_origin())); |
| 215 layer->SetIsDrawable(base.is_drawable()); | 307 layer->SetIsDrawable(base.is_drawable()); |
| 216 layer->SetDoubleSided(base.double_sided()); | 308 layer->SetDoubleSided(base.double_sided()); |
| 217 layer->SetShouldFlattenTransform(base.should_flatten_transform()); | 309 layer->SetShouldFlattenTransform(base.should_flatten_transform()); |
| 218 layer->Set3dSortingContextId(base.sorting_context_id()); | 310 layer->Set3dSortingContextId(base.sorting_context_id()); |
| 219 layer->SetUseParentBackfaceVisibility(base.use_parent_backface_visibility()); | 311 layer->SetUseParentBackfaceVisibility(base.use_parent_backface_visibility()); |
| 220 layer->SetBackgroundColor(base.background_color()); | 312 layer->SetBackgroundColor(base.background_color()); |
| 221 | 313 |
| 222 gfx::ScrollOffset scroll_offset = ProtoToScrollOffset(base.scroll_offset()); | 314 gfx::ScrollOffset engine_scroll_offset = |
| 223 if (client_->ShouldRetainClientScroll(engine_layer_id, scroll_offset)) | 315 ProtoToScrollOffset(base.scroll_offset()); |
| 224 scroll_offset = layer->scroll_offset(); | 316 SyncedRemoteScrollOffset& synced_scroll_offset = |
| 225 layer->SetScrollOffset(scroll_offset); | 317 GetLayerData(engine_layer_id)->synced_scroll_offset; |
| 318 synced_scroll_offset.PushFromEngineMainThread(engine_scroll_offset); | |
| 319 layer->SetScrollOffset(synced_scroll_offset.EngineMain()); | |
| 226 | 320 |
| 227 layer->SetScrollClipLayerId( | 321 layer->SetScrollClipLayerId( |
| 228 GetClientIdFromEngineId(base.scroll_clip_layer_id())); | 322 GetClientIdFromEngineId(base.scroll_clip_layer_id())); |
| 229 layer->SetUserScrollable(base.user_scrollable_horizontal(), | 323 layer->SetUserScrollable(base.user_scrollable_horizontal(), |
| 230 base.user_scrollable_vertical()); | 324 base.user_scrollable_vertical()); |
| 231 | 325 |
| 232 if (layer->main_thread_scrolling_reasons()) { | 326 if (layer->main_thread_scrolling_reasons()) { |
| 233 layer->ClearMainThreadScrollingReasons( | 327 layer->ClearMainThreadScrollingReasons( |
| 234 layer->main_thread_scrolling_reasons()); | 328 layer->main_thread_scrolling_reasons()); |
| 235 } | 329 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 318 mask_layer_node, new_layer_map, scrollbar_layer_to_scroll_layer); | 412 mask_layer_node, new_layer_map, scrollbar_layer_to_scroll_layer); |
| 319 layer->SetMaskLayer(mask_layer.get()); | 413 layer->SetMaskLayer(mask_layer.get()); |
| 320 SynchronizeLayerHierarchyRecursive(mask_layer.get(), mask_layer_node, | 414 SynchronizeLayerHierarchyRecursive(mask_layer.get(), mask_layer_node, |
| 321 new_layer_map, | 415 new_layer_map, |
| 322 scrollbar_layer_to_scroll_layer); | 416 scrollbar_layer_to_scroll_layer); |
| 323 } else { | 417 } else { |
| 324 layer->SetMaskLayer(nullptr); | 418 layer->SetMaskLayer(nullptr); |
| 325 } | 419 } |
| 326 | 420 |
| 327 // Scroll callback. | 421 // Scroll callback. |
| 328 layer->set_did_scroll_callback(base::Bind(scroll_callback_, layer_node.id())); | 422 layer->set_did_scroll_callback( |
| 423 base::Bind(&CompositorStateDeserializer::LayerScrolled, | |
| 424 weak_factory_.GetWeakPtr(), layer_node.id())); | |
| 329 } | 425 } |
| 330 | 426 |
| 331 scoped_refptr<Layer> CompositorStateDeserializer::GetLayerAndAddToNewMap( | 427 scoped_refptr<Layer> CompositorStateDeserializer::GetLayerAndAddToNewMap( |
| 332 const proto::LayerNode& layer_node, | 428 const proto::LayerNode& layer_node, |
| 333 EngineIdToLayerMap* new_layer_map, | 429 EngineIdToLayerMap* new_layer_map, |
| 334 ScrollbarLayerToScrollLayerId* scrollbar_layer_to_scroll_layer) { | 430 ScrollbarLayerToScrollLayerId* scrollbar_layer_to_scroll_layer) { |
| 335 DCHECK(new_layer_map->find(layer_node.id()) == new_layer_map->end()) | 431 DCHECK(new_layer_map->find(layer_node.id()) == new_layer_map->end()) |
| 336 << "A LayerNode should have been de-serialized only once"; | 432 << "A LayerNode should have been de-serialized only once"; |
| 337 | 433 |
| 338 scoped_refptr<Layer> layer; | 434 scoped_refptr<Layer> layer; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 387 } break; | 483 } break; |
| 388 case proto::LayerNode::HEADS_UP_DISPLAY_LAYER: | 484 case proto::LayerNode::HEADS_UP_DISPLAY_LAYER: |
| 389 // TODO(khushalsagar): Remove this from proto. | 485 // TODO(khushalsagar): Remove this from proto. |
| 390 NOTREACHED(); | 486 NOTREACHED(); |
| 391 } | 487 } |
| 392 | 488 |
| 393 layer = layer_data.layer; | 489 layer = layer_data.layer; |
| 394 return layer; | 490 return layer; |
| 395 } | 491 } |
| 396 | 492 |
| 493 void CompositorStateDeserializer::LayerScrolled(int engine_layer_id) { | |
| 494 LayerData* layer_data = GetLayerData(engine_layer_id); | |
| 495 Layer* layer = layer_data->layer.get(); | |
| 496 SyncedRemoteScrollOffset& synced_scroll_offset = | |
| 497 layer_data->synced_scroll_offset; | |
| 498 synced_scroll_offset.UpdateDeltaFromImplThread(layer->scroll_offset()); | |
| 499 layer->SetScrollOffset(synced_scroll_offset.EngineMain()); | |
| 500 client_->DidUpdateLocalState(); | |
| 501 } | |
| 502 | |
| 397 int CompositorStateDeserializer::GetClientIdFromEngineId( | 503 int CompositorStateDeserializer::GetClientIdFromEngineId( |
| 398 int engine_layer_id) const { | 504 int engine_layer_id) const { |
| 399 Layer* layer = GetLayerForEngineId(engine_layer_id); | 505 Layer* layer = GetLayerForEngineId(engine_layer_id); |
| 400 return layer ? layer->id() : Layer::LayerIdLabels::INVALID_ID; | 506 return layer ? layer->id() : Layer::LayerIdLabels::INVALID_ID; |
| 401 } | 507 } |
| 402 | 508 |
| 403 scoped_refptr<Layer> CompositorStateDeserializer::GetLayer( | 509 scoped_refptr<Layer> CompositorStateDeserializer::GetLayer( |
| 404 int engine_layer_id) const { | 510 int engine_layer_id) const { |
| 405 EngineIdToLayerMap::const_iterator layer_it = | 511 EngineIdToLayerMap::const_iterator layer_it = |
| 406 engine_id_to_layer_.find(engine_layer_id); | 512 engine_id_to_layer_.find(engine_layer_id); |
| 407 return layer_it != engine_id_to_layer_.end() ? layer_it->second.layer | 513 return layer_it != engine_id_to_layer_.end() ? layer_it->second.layer |
| 408 : nullptr; | 514 : nullptr; |
| 409 } | 515 } |
| 410 | 516 |
| 411 DeserializedContentLayerClient* | 517 DeserializedContentLayerClient* |
| 412 CompositorStateDeserializer::GetContentLayerClient(int engine_layer_id) const { | 518 CompositorStateDeserializer::GetContentLayerClient(int engine_layer_id) const { |
| 413 EngineIdToLayerMap::const_iterator layer_it = | 519 EngineIdToLayerMap::const_iterator layer_it = |
| 414 engine_id_to_layer_.find(engine_layer_id); | 520 engine_id_to_layer_.find(engine_layer_id); |
| 415 return layer_it != engine_id_to_layer_.end() | 521 return layer_it != engine_id_to_layer_.end() |
| 416 ? layer_it->second.content_layer_client.get() | 522 ? layer_it->second.content_layer_client.get() |
| 417 : nullptr; | 523 : nullptr; |
| 418 } | 524 } |
| 419 | 525 |
| 526 CompositorStateDeserializer::LayerData* | |
| 527 CompositorStateDeserializer::GetLayerData(int engine_layer_id) { | |
| 528 EngineIdToLayerMap::iterator layer_it = | |
| 529 engine_id_to_layer_.find(engine_layer_id); | |
| 530 return layer_it != engine_id_to_layer_.end() ? &layer_it->second : nullptr; | |
| 531 } | |
| 532 | |
| 420 } // namespace cc | 533 } // namespace cc |
| OLD | NEW |