OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "mojo/ui/associates/mock_view_inspector.h" |
| 6 |
| 7 #include "base/bind.h" |
| 8 |
| 9 namespace mojo { |
| 10 namespace ui { |
| 11 |
| 12 MockViewInspector::MockViewInspector() {} |
| 13 |
| 14 MockViewInspector::~MockViewInspector() { |
| 15 for (const auto& pair : hit_tester_callbacks_) |
| 16 pair.second.Run(false); |
| 17 } |
| 18 |
| 19 void MockViewInspector::SetHitTester( |
| 20 uint32_t view_tree_token_value, |
| 21 mojo::gfx::composition::HitTester* hit_tester) { |
| 22 DCHECK(view_tree_token_value); |
| 23 |
| 24 hit_testers_.erase(hit_testers_.find(view_tree_token_value), |
| 25 hit_testers_.end()); |
| 26 if (hit_tester) |
| 27 hit_testers_.emplace(view_tree_token_value, hit_tester); |
| 28 |
| 29 auto pair = hit_tester_callbacks_.equal_range(view_tree_token_value); |
| 30 for (auto it = pair.first; it != pair.second; ++it) |
| 31 it->second.Run(hit_tester != nullptr); |
| 32 hit_tester_callbacks_.erase(pair.first, pair.second); |
| 33 } |
| 34 |
| 35 void MockViewInspector::CloseHitTesterBindings() { |
| 36 hit_tester_bindings_.CloseAllBindings(); |
| 37 } |
| 38 |
| 39 void MockViewInspector::SetSceneMapping(uint32_t scene_token_value, |
| 40 mojo::ui::ViewTokenPtr view_token) { |
| 41 DCHECK(scene_token_value); |
| 42 |
| 43 if (view_token) |
| 44 scene_mappings_.emplace(scene_token_value, view_token.Pass()); |
| 45 else |
| 46 scene_mappings_.erase(scene_mappings_.find(scene_token_value), |
| 47 scene_mappings_.end()); |
| 48 } |
| 49 |
| 50 void MockViewInspector::GetHitTester( |
| 51 mojo::ui::ViewTreeTokenPtr view_tree_token, |
| 52 mojo::InterfaceRequest<mojo::gfx::composition::HitTester> |
| 53 hit_tester_request, |
| 54 const GetHitTesterCallback& callback) { |
| 55 DCHECK(view_tree_token); |
| 56 DCHECK(view_tree_token->value); |
| 57 DCHECK(hit_tester_request.is_pending()); |
| 58 |
| 59 hit_tester_lookups_++; |
| 60 |
| 61 auto it = hit_testers_.find(view_tree_token->value); |
| 62 if (it == hit_testers_.end()) { |
| 63 callback.Run(false); |
| 64 return; |
| 65 } |
| 66 |
| 67 hit_tester_bindings_.AddBinding(it->second, hit_tester_request.Pass()); |
| 68 hit_tester_callbacks_.emplace(view_tree_token->value, callback); |
| 69 } |
| 70 |
| 71 void MockViewInspector::ResolveScenes( |
| 72 mojo::Array<mojo::gfx::composition::SceneTokenPtr> scene_tokens, |
| 73 const ResolveScenesCallback& callback) { |
| 74 DCHECK(!scene_tokens.is_null()); |
| 75 |
| 76 scene_lookups_++; |
| 77 |
| 78 mojo::Array<mojo::ui::ViewTokenPtr> view_tokens; |
| 79 view_tokens.resize(scene_tokens.size()); |
| 80 for (size_t i = 0; i < scene_tokens.size(); i++) { |
| 81 DCHECK(scene_tokens[i]); |
| 82 DCHECK(scene_tokens[i]->value); |
| 83 auto it = scene_mappings_.find(scene_tokens[i]->value); |
| 84 if (it != scene_mappings_.end()) |
| 85 view_tokens[i] = it->second.Clone(); |
| 86 } |
| 87 |
| 88 callback.Run(view_tokens.Pass()); |
| 89 } |
| 90 |
| 91 } // namespace ui |
| 92 } // namespace mojo |
OLD | NEW |