| Index: mojo/ui/associates/mock_view_inspector.cc
|
| diff --git a/mojo/ui/associates/mock_view_inspector.cc b/mojo/ui/associates/mock_view_inspector.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b24a861209b36493043e5644c54091f3aa3686d3
|
| --- /dev/null
|
| +++ b/mojo/ui/associates/mock_view_inspector.cc
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "mojo/ui/associates/mock_view_inspector.h"
|
| +
|
| +#include "base/bind.h"
|
| +
|
| +namespace mojo {
|
| +namespace ui {
|
| +
|
| +MockViewInspector::MockViewInspector() {}
|
| +
|
| +MockViewInspector::~MockViewInspector() {
|
| + for (const auto& pair : hit_tester_callbacks_)
|
| + pair.second.Run(false);
|
| +}
|
| +
|
| +void MockViewInspector::SetHitTester(
|
| + uint32_t view_tree_token_value,
|
| + mojo::gfx::composition::HitTester* hit_tester) {
|
| + DCHECK(view_tree_token_value);
|
| +
|
| + hit_testers_.erase(hit_testers_.find(view_tree_token_value),
|
| + hit_testers_.end());
|
| + if (hit_tester)
|
| + hit_testers_.emplace(view_tree_token_value, hit_tester);
|
| +
|
| + auto pair = hit_tester_callbacks_.equal_range(view_tree_token_value);
|
| + for (auto it = pair.first; it != pair.second; ++it)
|
| + it->second.Run(hit_tester != nullptr);
|
| + hit_tester_callbacks_.erase(pair.first, pair.second);
|
| +}
|
| +
|
| +void MockViewInspector::CloseHitTesterBindings() {
|
| + hit_tester_bindings_.CloseAllBindings();
|
| +}
|
| +
|
| +void MockViewInspector::SetSceneMapping(uint32_t scene_token_value,
|
| + mojo::ui::ViewTokenPtr view_token) {
|
| + DCHECK(scene_token_value);
|
| +
|
| + if (view_token)
|
| + scene_mappings_.emplace(scene_token_value, view_token.Pass());
|
| + else
|
| + scene_mappings_.erase(scene_mappings_.find(scene_token_value),
|
| + scene_mappings_.end());
|
| +}
|
| +
|
| +void MockViewInspector::GetHitTester(
|
| + mojo::ui::ViewTreeTokenPtr view_tree_token,
|
| + mojo::InterfaceRequest<mojo::gfx::composition::HitTester>
|
| + hit_tester_request,
|
| + const GetHitTesterCallback& callback) {
|
| + DCHECK(view_tree_token);
|
| + DCHECK(view_tree_token->value);
|
| + DCHECK(hit_tester_request.is_pending());
|
| +
|
| + hit_tester_lookups_++;
|
| +
|
| + auto it = hit_testers_.find(view_tree_token->value);
|
| + if (it == hit_testers_.end()) {
|
| + callback.Run(false);
|
| + return;
|
| + }
|
| +
|
| + hit_tester_bindings_.AddBinding(it->second, hit_tester_request.Pass());
|
| + hit_tester_callbacks_.emplace(view_tree_token->value, callback);
|
| +}
|
| +
|
| +void MockViewInspector::ResolveScenes(
|
| + mojo::Array<mojo::gfx::composition::SceneTokenPtr> scene_tokens,
|
| + const ResolveScenesCallback& callback) {
|
| + DCHECK(!scene_tokens.is_null());
|
| +
|
| + scene_lookups_++;
|
| +
|
| + mojo::Array<mojo::ui::ViewTokenPtr> view_tokens;
|
| + view_tokens.resize(scene_tokens.size());
|
| + for (size_t i = 0; i < scene_tokens.size(); i++) {
|
| + DCHECK(scene_tokens[i]);
|
| + DCHECK(scene_tokens[i]->value);
|
| + auto it = scene_mappings_.find(scene_tokens[i]->value);
|
| + if (it != scene_mappings_.end())
|
| + view_tokens[i] = it->second.Clone();
|
| + }
|
| +
|
| + callback.Run(view_tokens.Pass());
|
| +}
|
| +
|
| +} // namespace ui
|
| +} // namespace mojo
|
|
|