Index: cc/trees/layer_tree_host.cc |
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
index 5df8fc4ac529125338aad564e79f8ab93e7855aa..2d3a1bbd254b0f0a78f868cba83369c7092d61cf 100644 |
--- a/cc/trees/layer_tree_host.cc |
+++ b/cc/trees/layer_tree_host.cc |
@@ -28,6 +28,7 @@ |
#include "cc/layers/layer_iterator.h" |
#include "cc/layers/painted_scrollbar_layer.h" |
#include "cc/layers/render_surface.h" |
+#include "cc/output/selection_handle.h" |
#include "cc/resources/prioritized_resource_manager.h" |
#include "cc/resources/ui_resource_request.h" |
#include "cc/trees/layer_tree_host_client.h" |
@@ -328,6 +329,12 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { |
sync_tree->ClearViewportLayers(); |
} |
+ sync_tree->RegisterSelection( |
+ start_selection_layer_ ? start_selection_layer_->id() : 0, |
+ start_selection_handle_, |
+ end_selection_layer_ ? end_selection_layer_->id() : 0, |
+ end_selection_handle_); |
+ |
float page_scale_delta, sent_page_scale_delta; |
if (settings_.impl_side_painting) { |
// Update the delta from the active tree, which may have |
@@ -1246,6 +1253,23 @@ void LayerTreeHost::RegisterViewportLayers( |
outer_viewport_scroll_layer_ = outer_viewport_scroll_layer; |
} |
+void LayerTreeHost::RegisterSelection(scoped_refptr<Layer> start_layer, |
+ const SelectionHandle& start_handle, |
+ scoped_refptr<Layer> end_layer, |
+ const SelectionHandle& end_handle) { |
+ if (start_selection_layer_.get() == start_layer.get() && |
+ end_selection_layer_.get() == end_layer.get() && |
+ start_selection_handle_ == start_handle && |
+ end_selection_handle_ == end_handle) |
+ return; |
+ |
+ start_selection_layer_ = start_layer; |
+ end_selection_layer_ = end_layer; |
+ start_selection_handle_ = start_handle; |
+ end_selection_handle_ = end_handle; |
+ SetNeedsCommit(); |
+} |
+ |
int LayerTreeHost::ScheduleMicroBenchmark( |
const std::string& benchmark_name, |
scoped_ptr<base::Value> value, |