Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: mojo/ui/associates/view_inspector_client_apptest.cc

Issue 1778593003: Mozart: Add helpers for building view associates. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-6
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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/view_inspector_client.h"
6
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h"
10 #include "mojo/public/cpp/application/application_impl.h"
11 #include "mojo/public/cpp/application/application_test_base.h"
12 #include "mojo/ui/associates/mock_view_inspector.h"
13 #include "mojo/ui/associates/test_helpers.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace test {
17
18 class ViewInspectorClientTest : public mojo::test::ApplicationTestBase {
19 public:
20 ViewInspectorClientTest() : view_inspector_binding_(&view_inspector_) {}
21 ~ViewInspectorClientTest() override {}
22
23 void SetUp() override {
24 mojo::test::ApplicationTestBase::SetUp();
25
26 mojo::ui::ViewInspectorPtr view_inspector_ptr;
27 view_inspector_binding_.Bind(&view_inspector_ptr);
28 view_inspector_client_ =
29 new mojo::ui::ViewInspectorClient(view_inspector_ptr.Pass());
30 }
31
32 protected:
33 void ResolveHits(mojo::gfx::composition::HitTestResultPtr hit_test_result,
34 scoped_ptr<mojo::ui::ResolvedHits>* resolved_hits) {
35 base::RunLoop loop;
36 view_inspector_client_->ResolveHits(
37 hit_test_result.Pass(),
38 base::Bind(&Capture<scoped_ptr<mojo::ui::ResolvedHits>>,
39 loop.QuitClosure(), resolved_hits));
40 loop.Run();
41 }
42
43 mojo::ui::MockViewInspector view_inspector_;
44 mojo::Binding<mojo::ui::ViewInspector> view_inspector_binding_;
45 scoped_refptr<mojo::ui::ViewInspectorClient> view_inspector_client_;
46
47 private:
48 DISALLOW_COPY_AND_ASSIGN(ViewInspectorClientTest);
49 };
50
51 TEST_F(ViewInspectorClientTest, EmptyResult) {
52 auto hit_test_result = mojo::gfx::composition::HitTestResult::New();
53
54 scoped_ptr<mojo::ui::ResolvedHits> resolved_hits;
55 ResolveHits(hit_test_result.Pass(), &resolved_hits);
56 ASSERT_NE(nullptr, resolved_hits.get());
57 EXPECT_NE(nullptr, resolved_hits->result());
58 EXPECT_TRUE(resolved_hits->map().empty());
59 EXPECT_EQ(0u, view_inspector_.scene_lookups());
60 }
61
62 TEST_F(ViewInspectorClientTest, CachingNegativeResult) {
63 auto scene_token_1 = MakeDummySceneToken(1u);
64
65 // Initial lookup, should miss cache.
66 scoped_ptr<mojo::ui::ResolvedHits> resolved_hits;
67 ResolveHits(MakeSimpleHitTestResult(scene_token_1.Clone()), &resolved_hits);
68 ASSERT_NE(nullptr, resolved_hits.get());
69 EXPECT_NE(nullptr, resolved_hits->result());
70 EXPECT_TRUE(resolved_hits->map().empty());
71 EXPECT_EQ(1u, view_inspector_.scene_lookups());
72
73 // Try again, ensure no further attempts to look up scene 1.
74 ResolveHits(MakeSimpleHitTestResult(scene_token_1.Clone()), &resolved_hits);
75 ASSERT_NE(nullptr, resolved_hits.get());
76 EXPECT_NE(nullptr, resolved_hits->result());
77 EXPECT_TRUE(resolved_hits->map().empty());
78 EXPECT_EQ(1u, view_inspector_.scene_lookups());
79 }
80
81 TEST_F(ViewInspectorClientTest, CachingPositiveResult) {
82 auto scene_token_1 = MakeDummySceneToken(1u);
83 auto view_token_11 = MakeDummyViewToken(11u);
84 view_inspector_.SetSceneMapping(scene_token_1->value, view_token_11.Clone());
85
86 // Initial lookup, should hit cache.
87 scoped_ptr<mojo::ui::ResolvedHits> resolved_hits;
88 ResolveHits(MakeSimpleHitTestResult(scene_token_1.Clone()), &resolved_hits);
89 ASSERT_NE(nullptr, resolved_hits.get());
90 EXPECT_NE(nullptr, resolved_hits->result());
91 EXPECT_EQ(1u, resolved_hits->map().size());
92 EXPECT_TRUE(
93 view_token_11.Equals(resolved_hits->map().at(scene_token_1->value)));
94 EXPECT_EQ(1u, view_inspector_.scene_lookups());
95
96 // Try again, ensure no further attempts to look up scene 1.
97 ResolveHits(MakeSimpleHitTestResult(scene_token_1.Clone()), &resolved_hits);
98 ASSERT_NE(nullptr, resolved_hits.get());
99 EXPECT_NE(nullptr, resolved_hits->result());
100 EXPECT_EQ(1u, resolved_hits->map().size());
101 EXPECT_TRUE(
102 view_token_11.Equals(resolved_hits->map().at(scene_token_1->value)));
103 EXPECT_EQ(1u, view_inspector_.scene_lookups());
104 }
105
106 TEST_F(ViewInspectorClientTest, CompositeSceneGraph) {
107 auto scene_token_1 = MakeDummySceneToken(1u);
108 auto scene_token_2 = MakeDummySceneToken(2u);
109 auto scene_token_3 = MakeDummySceneToken(3u);
110 auto view_token_11 = MakeDummyViewToken(11u);
111 auto view_token_33 = MakeDummyViewToken(33u);
112 view_inspector_.SetSceneMapping(scene_token_1->value, view_token_11.Clone());
113 view_inspector_.SetSceneMapping(scene_token_3->value, view_token_33.Clone());
114
115 // Scene graph with hits in 3 scenes, only 2 of which are views.
116 auto hit_test_result = mojo::gfx::composition::HitTestResult::New();
117 hit_test_result->root = mojo::gfx::composition::SceneHit::New();
118 hit_test_result->root->scene_token = scene_token_1.Clone();
119 hit_test_result->root->hits.push_back(mojo::gfx::composition::Hit::New());
120 hit_test_result->root->hits.at(0)->set_scene(
121 mojo::gfx::composition::SceneHit::New());
122 hit_test_result->root->hits.at(0)->get_scene()->scene_token =
123 scene_token_2.Clone();
124 hit_test_result->root->hits.at(0)->get_scene()->hits.push_back(
125 mojo::gfx::composition::Hit::New());
126 hit_test_result->root->hits.at(0)->get_scene()->hits.at(0)->set_node(
127 mojo::gfx::composition::NodeHit::New());
128 hit_test_result->root->hits.push_back(mojo::gfx::composition::Hit::New());
129 hit_test_result->root->hits[1]->set_scene(
130 mojo::gfx::composition::SceneHit::New());
131 hit_test_result->root->hits[1]->get_scene()->scene_token =
132 scene_token_3.Clone();
133 hit_test_result->root->hits[1]->get_scene()->hits.push_back(
134 mojo::gfx::composition::Hit::New());
135 hit_test_result->root->hits[1]->get_scene()->hits.at(0)->set_node(
136 mojo::gfx::composition::NodeHit::New());
137
138 scoped_ptr<mojo::ui::ResolvedHits> resolved_hits;
139 ResolveHits(hit_test_result.Pass(), &resolved_hits);
140 EXPECT_NE(nullptr, resolved_hits->result());
141 EXPECT_EQ(2u, resolved_hits->map().size());
142 EXPECT_TRUE(
143 view_token_11.Equals(resolved_hits->map().at(scene_token_1->value)));
144 EXPECT_TRUE(
145 view_token_33.Equals(resolved_hits->map().at(scene_token_3->value)));
146 EXPECT_EQ(1u, view_inspector_.scene_lookups());
147 }
148
149 } // namespace test
OLDNEW
« no previous file with comments | « mojo/ui/associates/view_inspector_client.cc ('k') | mojo/ui/associates/view_tree_hit_tester_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698