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

Side by Side Diff: cc/surfaces/surface_manager_ref_unittest.cc

Issue 2654653004: Remove SurfaceReferenceManager interface. (Closed)
Patch Set: Rebase + fix tests. Created 3 years, 10 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
« no previous file with comments | « cc/surfaces/surface_manager.cc ('k') | cc/surfaces/surface_reference_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include <unordered_map> 7 #include <unordered_map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 .SubmitCompositorFrame(local_frame_id, CompositorFrame(), 51 .SubmitCompositorFrame(local_frame_id, CompositorFrame(),
52 SurfaceFactory::DrawCallback()); 52 SurfaceFactory::DrawCallback());
53 return SurfaceId(frame_sink_id, local_frame_id); 53 return SurfaceId(frame_sink_id, local_frame_id);
54 } 54 }
55 55
56 // Destroy Surface with |surface_id|. 56 // Destroy Surface with |surface_id|.
57 void DestroySurface(const SurfaceId& surface_id) { 57 void DestroySurface(const SurfaceId& surface_id) {
58 GetFactory(surface_id.frame_sink_id()).EvictSurface(); 58 GetFactory(surface_id.frame_sink_id()).EvictSurface();
59 } 59 }
60 60
61 protected:
62 SurfaceFactory& GetFactory(const FrameSinkId& frame_sink_id) { 61 SurfaceFactory& GetFactory(const FrameSinkId& frame_sink_id) {
63 auto& factory_ptr = factories_[frame_sink_id]; 62 auto& factory_ptr = factories_[frame_sink_id];
64 if (!factory_ptr) 63 if (!factory_ptr)
65 factory_ptr = base::MakeUnique<SurfaceFactory>(frame_sink_id, 64 factory_ptr = base::MakeUnique<SurfaceFactory>(frame_sink_id,
66 manager_.get(), &client_); 65 manager_.get(), &client_);
67 return *factory_ptr; 66 return *factory_ptr;
68 } 67 }
69 68
70 // testing::Test: 69 void RemoveSurfaceReference(const SurfaceId& parent_id,
71 void SetUp() override { 70 const SurfaceId& child_id) {
72 // Start each test with a fresh SurfaceManager instance. 71 manager_->RemoveSurfaceReferences({SurfaceReference(parent_id, child_id)});
73 manager_ = base::MakeUnique<SurfaceManager>(
74 SurfaceManager::LifetimeType::REFERENCES);
75 }
76 void TearDown() override {
77 for (auto& factory : factories_)
78 factory.second->EvictSurface();
79 factories_.clear();
80 manager_.reset();
81 } 72 }
82 73
83 // Returns all the references where |surface_id| is the parent. 74 // Returns all the references where |surface_id| is the parent.
84 const SurfaceManager::SurfaceIdSet& GetReferencesFrom( 75 const SurfaceManager::SurfaceIdSet& GetReferencesFrom(
85 const SurfaceId& surface_id) { 76 const SurfaceId& surface_id) {
86 return manager().parent_to_child_refs_[surface_id]; 77 return manager().parent_to_child_refs_[surface_id];
87 } 78 }
88 79
89 // Returns all the references where |surface_id| is the child. 80 // Returns all the references where |surface_id| is the child.
90 const SurfaceManager::SurfaceIdSet& GetReferencesFor( 81 const SurfaceManager::SurfaceIdSet& GetReferencesFor(
(...skipping 15 matching lines...) Expand all
106 // converts the map to a vector. 97 // converts the map to a vector.
107 std::vector<SurfaceId> GetAllTempReferences() { 98 std::vector<SurfaceId> GetAllTempReferences() {
108 std::vector<SurfaceId> temp_references; 99 std::vector<SurfaceId> temp_references;
109 for (auto& map_entry : manager().temp_references_) { 100 for (auto& map_entry : manager().temp_references_) {
110 for (auto local_frame_id : map_entry.second) 101 for (auto local_frame_id : map_entry.second)
111 temp_references.push_back(SurfaceId(map_entry.first, local_frame_id)); 102 temp_references.push_back(SurfaceId(map_entry.first, local_frame_id));
112 } 103 }
113 return temp_references; 104 return temp_references;
114 } 105 }
115 106
107 protected:
108 // testing::Test:
109 void SetUp() override {
110 // Start each test with a fresh SurfaceManager instance.
111 manager_ = base::MakeUnique<SurfaceManager>(
112 SurfaceManager::LifetimeType::REFERENCES);
113 }
114 void TearDown() override {
115 for (auto& factory : factories_)
116 factory.second->EvictSurface();
117 factories_.clear();
118 manager_.reset();
119 }
120
116 std::unordered_map<FrameSinkId, 121 std::unordered_map<FrameSinkId,
117 std::unique_ptr<SurfaceFactory>, 122 std::unique_ptr<SurfaceFactory>,
118 FrameSinkIdHash> 123 FrameSinkIdHash>
119 factories_; 124 factories_;
120 std::unique_ptr<SurfaceManager> manager_; 125 std::unique_ptr<SurfaceManager> manager_;
121 StubSurfaceFactoryClient client_; 126 StubSurfaceFactoryClient client_;
122 }; 127 };
123 128
124 TEST_F(SurfaceManagerRefTest, AddReference) { 129 TEST_F(SurfaceManagerRefTest, AddReference) {
125 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 130 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
126 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1); 131 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1);
127 132
128 EXPECT_THAT(GetReferencesFor(id1), 133 EXPECT_THAT(GetReferencesFor(id1),
129 UnorderedElementsAre(manager().GetRootSurfaceId())); 134 UnorderedElementsAre(manager().GetRootSurfaceId()));
130 EXPECT_THAT(GetReferencesFrom(id1), IsEmpty()); 135 EXPECT_THAT(GetReferencesFrom(id1), IsEmpty());
131 } 136 }
132 137
133 TEST_F(SurfaceManagerRefTest, AddRemoveReference) { 138 TEST_F(SurfaceManagerRefTest, AddRemoveReference) {
134 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 139 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
135 SurfaceId id2 = CreateSurface(kFrameSink2, 1); 140 SurfaceId id2 = CreateSurface(kFrameSink2, 1);
136 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1); 141 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1);
137 manager().AddSurfaceReference(id1, id2); 142 manager().AddSurfaceReference(id1, id2);
138 143
139 EXPECT_THAT(GetReferencesFor(id1), 144 EXPECT_THAT(GetReferencesFor(id1),
140 UnorderedElementsAre(manager().GetRootSurfaceId())); 145 UnorderedElementsAre(manager().GetRootSurfaceId()));
141 EXPECT_THAT(GetReferencesFor(id2), UnorderedElementsAre(id1)); 146 EXPECT_THAT(GetReferencesFor(id2), UnorderedElementsAre(id1));
142 EXPECT_THAT(GetReferencesFrom(id1), UnorderedElementsAre(id2)); 147 EXPECT_THAT(GetReferencesFrom(id1), UnorderedElementsAre(id2));
143 EXPECT_THAT(GetReferencesFrom(id2), IsEmpty()); 148 EXPECT_THAT(GetReferencesFrom(id2), IsEmpty());
144 149
145 manager().RemoveSurfaceReference(id1, id2); 150 RemoveSurfaceReference(id1, id2);
146 EXPECT_THAT(GetReferencesFor(id1), SizeIs(1)); 151 EXPECT_THAT(GetReferencesFor(id1), SizeIs(1));
147 EXPECT_THAT(GetReferencesFor(id2), IsEmpty()); 152 EXPECT_THAT(GetReferencesFor(id2), IsEmpty());
148 EXPECT_THAT(GetReferencesFrom(id1), IsEmpty()); 153 EXPECT_THAT(GetReferencesFrom(id1), IsEmpty());
149 EXPECT_THAT(GetReferencesFrom(id2), IsEmpty()); 154 EXPECT_THAT(GetReferencesFrom(id2), IsEmpty());
150 } 155 }
151 156
152 TEST_F(SurfaceManagerRefTest, NewSurfaceFromFrameSink) { 157 TEST_F(SurfaceManagerRefTest, NewSurfaceFromFrameSink) {
153 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 158 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
154 SurfaceId id2 = CreateSurface(kFrameSink2, 1); 159 SurfaceId id2 = CreateSurface(kFrameSink2, 1);
155 SurfaceId id3 = CreateSurface(kFrameSink3, 1); 160 SurfaceId id3 = CreateSurface(kFrameSink3, 1);
156 161
157 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1); 162 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1);
158 manager().AddSurfaceReference(id1, id2); 163 manager().AddSurfaceReference(id1, id2);
159 manager().AddSurfaceReference(id2, id3); 164 manager().AddSurfaceReference(id2, id3);
160 165
161 // |kFramesink2| received a CompositorFrame with a new size, so it destroys 166 // |kFramesink2| received a CompositorFrame with a new size, so it destroys
162 // |id2| and creates |id2_next|. No reference have been removed yet. 167 // |id2| and creates |id2_next|. No reference have been removed yet.
163 SurfaceId id2_next = CreateSurface(kFrameSink2, 2); 168 SurfaceId id2_next = CreateSurface(kFrameSink2, 2);
164 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2)); 169 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2));
165 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2_next)); 170 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2_next));
166 171
167 // Add references to and from |id2_next|. 172 // Add references to and from |id2_next|.
168 manager().AddSurfaceReference(id1, id2_next); 173 manager().AddSurfaceReference(id1, id2_next);
169 manager().AddSurfaceReference(id2_next, id3); 174 manager().AddSurfaceReference(id2_next, id3);
170 EXPECT_THAT(GetReferencesFor(id2), UnorderedElementsAre(id1)); 175 EXPECT_THAT(GetReferencesFor(id2), UnorderedElementsAre(id1));
171 EXPECT_THAT(GetReferencesFor(id2_next), UnorderedElementsAre(id1)); 176 EXPECT_THAT(GetReferencesFor(id2_next), UnorderedElementsAre(id1));
172 EXPECT_THAT(GetReferencesFor(id3), UnorderedElementsAre(id2, id2_next)); 177 EXPECT_THAT(GetReferencesFor(id3), UnorderedElementsAre(id2, id2_next));
173 178
174 manager().RemoveSurfaceReference(id1, id2); 179 RemoveSurfaceReference(id1, id2);
175 EXPECT_THAT(GetReferencesFor(id2), IsEmpty()); 180 EXPECT_THAT(GetReferencesFor(id2), IsEmpty());
176 EXPECT_THAT(GetReferencesFor(id2_next), UnorderedElementsAre(id1)); 181 EXPECT_THAT(GetReferencesFor(id2_next), UnorderedElementsAre(id1));
177 EXPECT_THAT(GetReferencesFor(id3), UnorderedElementsAre(id2_next)); 182 EXPECT_THAT(GetReferencesFor(id3), UnorderedElementsAre(id2_next));
178 183
179 // |id2| should be deleted during GC but other surfaces shouldn't. 184 // |id2| should be deleted during GC but other surfaces shouldn't.
180 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2)); 185 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2));
181 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2_next)); 186 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2_next));
182 EXPECT_NE(nullptr, manager().GetSurfaceForId(id3)); 187 EXPECT_NE(nullptr, manager().GetSurfaceForId(id3));
183 } 188 }
184 189
185 TEST_F(SurfaceManagerRefTest, ReferenceCycleGetsDeleted) { 190 TEST_F(SurfaceManagerRefTest, ReferenceCycleGetsDeleted) {
186 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 191 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
187 SurfaceId id2 = CreateSurface(kFrameSink2, 1); 192 SurfaceId id2 = CreateSurface(kFrameSink2, 1);
188 SurfaceId id3 = CreateSurface(kFrameSink3, 1); 193 SurfaceId id3 = CreateSurface(kFrameSink3, 1);
189 194
190 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1); 195 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1);
191 manager().AddSurfaceReference(id1, id2); 196 manager().AddSurfaceReference(id1, id2);
192 manager().AddSurfaceReference(id2, id3); 197 manager().AddSurfaceReference(id2, id3);
193 198
194 // This reference forms a cycle between id2 and id3. 199 // This reference forms a cycle between id2 and id3.
195 manager().AddSurfaceReference(id3, id2); 200 manager().AddSurfaceReference(id3, id2);
196 201
197 DestroySurface(id3); 202 DestroySurface(id3);
198 DestroySurface(id2); 203 DestroySurface(id2);
199 DestroySurface(id1); 204 DestroySurface(id1);
200 205
201 manager().RemoveSurfaceReference(manager().GetRootSurfaceId(), id1); 206 RemoveSurfaceReference(manager().GetRootSurfaceId(), id1);
202 207
203 // Removing the reference from the root to id1 should allow all three surfaces 208 // Removing the reference from the root to id1 should allow all three surfaces
204 // to be deleted during GC even with a cycle between 2 and 3. 209 // to be deleted during GC even with a cycle between 2 and 3.
205 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id1)); 210 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id1));
206 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2)); 211 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2));
207 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id3)); 212 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id3));
208 } 213 }
209 214
210 TEST_F(SurfaceManagerRefTest, CheckGC) { 215 TEST_F(SurfaceManagerRefTest, CheckGC) {
211 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 216 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
212 SurfaceId id2 = CreateSurface(kFrameSink2, 1); 217 SurfaceId id2 = CreateSurface(kFrameSink2, 1);
213 218
214 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1); 219 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1);
215 manager().AddSurfaceReference(id1, id2); 220 manager().AddSurfaceReference(id1, id2);
216 221
217 EXPECT_NE(nullptr, manager().GetSurfaceForId(id1)); 222 EXPECT_NE(nullptr, manager().GetSurfaceForId(id1));
218 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2)); 223 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2));
219 224
220 // Destroying the surfaces shouldn't delete them yet, since there is still an 225 // Destroying the surfaces shouldn't delete them yet, since there is still an
221 // active reference on all surfaces. 226 // active reference on all surfaces.
222 DestroySurface(id1); 227 DestroySurface(id1);
223 DestroySurface(id2); 228 DestroySurface(id2);
224 EXPECT_NE(nullptr, manager().GetSurfaceForId(id1)); 229 EXPECT_NE(nullptr, manager().GetSurfaceForId(id1));
225 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2)); 230 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2));
226 231
227 // Should delete |id2| when the only reference to it is removed. 232 // Should delete |id2| when the only reference to it is removed.
228 manager().RemoveSurfaceReference(id1, id2); 233 RemoveSurfaceReference(id1, id2);
229 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2)); 234 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2));
230 235
231 // Should delete |id1| when the only reference to it is removed. 236 // Should delete |id1| when the only reference to it is removed.
232 manager().RemoveSurfaceReference(manager().GetRootSurfaceId(), id1); 237 RemoveSurfaceReference(manager().GetRootSurfaceId(), id1);
233 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id1)); 238 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id1));
234 } 239 }
235 240
236 TEST_F(SurfaceManagerRefTest, CheckGCRecusiveFull) { 241 TEST_F(SurfaceManagerRefTest, CheckGCRecusiveFull) {
237 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 242 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
238 SurfaceId id2 = CreateSurface(kFrameSink2, 1); 243 SurfaceId id2 = CreateSurface(kFrameSink2, 1);
239 SurfaceId id3 = CreateSurface(kFrameSink3, 1); 244 SurfaceId id3 = CreateSurface(kFrameSink3, 1);
240 245
241 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1); 246 manager().AddSurfaceReference(manager().GetRootSurfaceId(), id1);
242 manager().AddSurfaceReference(id1, id2); 247 manager().AddSurfaceReference(id1, id2);
243 manager().AddSurfaceReference(id2, id3); 248 manager().AddSurfaceReference(id2, id3);
244 249
245 DestroySurface(id3); 250 DestroySurface(id3);
246 DestroySurface(id2); 251 DestroySurface(id2);
247 DestroySurface(id1); 252 DestroySurface(id1);
248 253
249 // Destroying the surfaces shouldn't delete them yet, since there is still an 254 // Destroying the surfaces shouldn't delete them yet, since there is still an
250 // active reference on all surfaces. 255 // active reference on all surfaces.
251 EXPECT_NE(nullptr, manager().GetSurfaceForId(id3)); 256 EXPECT_NE(nullptr, manager().GetSurfaceForId(id3));
252 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2)); 257 EXPECT_NE(nullptr, manager().GetSurfaceForId(id2));
253 EXPECT_NE(nullptr, manager().GetSurfaceForId(id1)); 258 EXPECT_NE(nullptr, manager().GetSurfaceForId(id1));
254 259
255 manager().RemoveSurfaceReference(manager().GetRootSurfaceId(), id1); 260 RemoveSurfaceReference(manager().GetRootSurfaceId(), id1);
256 261
257 // Removing the reference from the root to id1 should allow all three surfaces 262 // Removing the reference from the root to id1 should allow all three surfaces
258 // to be deleted during GC. 263 // to be deleted during GC.
259 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id1)); 264 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id1));
260 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2)); 265 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id2));
261 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id3)); 266 EXPECT_EQ(nullptr, manager().GetSurfaceForId(id3));
262 } 267 }
263 268
264 TEST_F(SurfaceManagerRefTest, TryAddReferenceToBadSurface) { 269 TEST_F(SurfaceManagerRefTest, TryAddReferenceToBadSurface) {
265 // Not creating an accompanying Surface and SurfaceFactory. 270 // Not creating an accompanying Surface and SurfaceFactory.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 // The temporary reference to |id1| must still exist. 307 // The temporary reference to |id1| must still exist.
303 EXPECT_THAT(GetReferencesFor(id1), SizeIs(1)); 308 EXPECT_THAT(GetReferencesFor(id1), SizeIs(1));
304 } 309 }
305 310
306 TEST_F(SurfaceManagerRefTest, TryRemoveBadReference) { 311 TEST_F(SurfaceManagerRefTest, TryRemoveBadReference) {
307 SurfaceId id1 = CreateSurface(kFrameSink1, 1); 312 SurfaceId id1 = CreateSurface(kFrameSink1, 1);
308 SurfaceId id2 = CreateSurface(kFrameSink2, 1); 313 SurfaceId id2 = CreateSurface(kFrameSink2, 1);
309 314
310 // Removing non-existent reference should be ignored. 315 // Removing non-existent reference should be ignored.
311 manager().AddSurfaceReference(id1, id2); 316 manager().AddSurfaceReference(id1, id2);
312 manager().RemoveSurfaceReference(id2, id1); 317 RemoveSurfaceReference(id2, id1);
313 EXPECT_THAT(GetReferencesFrom(id1), SizeIs(1)); 318 EXPECT_THAT(GetReferencesFrom(id1), SizeIs(1));
314 EXPECT_THAT(GetReferencesFor(id2), SizeIs(1)); 319 EXPECT_THAT(GetReferencesFor(id2), SizeIs(1));
315 } 320 }
316 321
317 TEST_F(SurfaceManagerRefTest, AddSurfaceThenReference) { 322 TEST_F(SurfaceManagerRefTest, AddSurfaceThenReference) {
318 // Create a new surface. 323 // Create a new surface.
319 const SurfaceId surface_id = CreateSurface(kFrameSink2, 1); 324 const SurfaceId surface_id = CreateSurface(kFrameSink2, 1);
320 325
321 // A temporary reference must be added to |surface_id|. 326 // A temporary reference must be added to |surface_id|.
322 EXPECT_THAT(GetAllTempReferences(), ElementsAre(surface_id)); 327 EXPECT_THAT(GetAllTempReferences(), ElementsAre(surface_id));
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 // reference should be removed. The temporary reference for |surface_id2| 433 // reference should be removed. The temporary reference for |surface_id2|
429 // should remain. A temporary reference must be added for |parent_id|. 434 // should remain. A temporary reference must be added for |parent_id|.
430 EXPECT_THAT(GetAllTempReferences(), 435 EXPECT_THAT(GetAllTempReferences(),
431 UnorderedElementsAre(parent_id, surface_id2)); 436 UnorderedElementsAre(parent_id, surface_id2));
432 EXPECT_THAT(GetReferencesFromRoot(), 437 EXPECT_THAT(GetReferencesFromRoot(),
433 UnorderedElementsAre(parent_id, surface_id2)); 438 UnorderedElementsAre(parent_id, surface_id2));
434 EXPECT_THAT(GetReferencesFrom(parent_id), ElementsAre(surface_id1)); 439 EXPECT_THAT(GetReferencesFrom(parent_id), ElementsAre(surface_id1));
435 } 440 }
436 441
437 } // namespace cc 442 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/surface_manager.cc ('k') | cc/surfaces/surface_reference_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698