| Index: services/ui/view_manager/view_tree_state.cc
|
| diff --git a/services/ui/view_manager/view_tree_state.cc b/services/ui/view_manager/view_tree_state.cc
|
| index 842cbea4077fdf72b8d9d2294ed69e07088f2c40..2013b4e9bd9d4d8cefc50a64f8a5f293a2d99040 100644
|
| --- a/services/ui/view_manager/view_tree_state.cc
|
| +++ b/services/ui/view_manager/view_tree_state.cc
|
| @@ -37,7 +37,30 @@ ViewTreeState::ViewTreeState(
|
| base::Unretained(this), "ViewTreeListener connection closed"));
|
| }
|
|
|
| -ViewTreeState::~ViewTreeState() {}
|
| +ViewTreeState::~ViewTreeState() {
|
| + ClearHitTesterCallbacks(false /*renderer_changed*/);
|
| +}
|
| +
|
| +void ViewTreeState::SetRenderer(mojo::gfx::composition::RendererPtr renderer) {
|
| + renderer_ = renderer.Pass();
|
| + ClearHitTesterCallbacks(true /*renderer_changed*/);
|
| +}
|
| +
|
| +void ViewTreeState::RequestHitTester(
|
| + mojo::InterfaceRequest<mojo::gfx::composition::HitTester>
|
| + hit_tester_request,
|
| + const mojo::ui::ViewInspector::GetHitTesterCallback& callback) {
|
| + DCHECK(hit_tester_request.is_pending());
|
| + if (renderer_)
|
| + renderer_->GetHitTester(hit_tester_request.Pass());
|
| + pending_hit_tester_callbacks_.push_back(callback);
|
| +}
|
| +
|
| +void ViewTreeState::ClearHitTesterCallbacks(bool renderer_changed) {
|
| + for (const auto& callback : pending_hit_tester_callbacks_)
|
| + callback.Run(renderer_changed);
|
| + pending_hit_tester_callbacks_.clear();
|
| +}
|
|
|
| void ViewTreeState::LinkRoot(uint32_t key, std::unique_ptr<ViewStub> root) {
|
| DCHECK(!root_);
|
|
|