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

Side by Side Diff: extensions/browser/load_monitoring_extension_host_queue_unittest.cc

Issue 1012823002: Revert of Make LoadMonitoringExtensionHostQueue remove itself as an ExtensionHost observer at the... (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « extensions/browser/load_monitoring_extension_host_queue.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <limits> 5 #include <limits>
6 6
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "content/public/test/test_browser_thread_bundle.h" 8 #include "content/public/test/test_browser_thread_bundle.h"
9 #include "extensions/browser/deferred_start_render_host.h" 9 #include "extensions/browser/deferred_start_render_host.h"
10 #include "extensions/browser/extensions_test.h" 10 #include "extensions/browser/extensions_test.h"
11 #include "extensions/browser/load_monitoring_extension_host_queue.h" 11 #include "extensions/browser/load_monitoring_extension_host_queue.h"
12 #include "extensions/browser/serial_extension_host_queue.h" 12 #include "extensions/browser/serial_extension_host_queue.h"
13 13
14 namespace extensions { 14 namespace extensions {
15 15
16 namespace { 16 namespace {
17 17
18 class StubDeferredStartRenderHost : public DeferredStartRenderHost { 18 class StubDeferredStartRenderHost : public DeferredStartRenderHost {
19 public:
20 // Returns true if this host is being observed by |observer|.
21 bool IsObservedBy(DeferredStartRenderHostObserver* observer) {
22 return observers_.count(observer) > 0;
23 }
24
25 private: 19 private:
26 // DeferredStartRenderHost:
27 void AddDeferredStartRenderHostObserver( 20 void AddDeferredStartRenderHostObserver(
28 DeferredStartRenderHostObserver* observer) override { 21 DeferredStartRenderHostObserver* observer) override {}
29 observers_.insert(observer);
30 }
31 void RemoveDeferredStartRenderHostObserver( 22 void RemoveDeferredStartRenderHostObserver(
32 DeferredStartRenderHostObserver* observer) override { 23 DeferredStartRenderHostObserver* observer) override {}
33 observers_.erase(observer);
34 }
35 void CreateRenderViewNow() override {} 24 void CreateRenderViewNow() override {}
36
37 std::set<DeferredStartRenderHostObserver*> observers_;
38 }; 25 };
39 26
40 const size_t g_invalid_size_t = std::numeric_limits<size_t>::max(); 27 const size_t g_invalid_size_t = std::numeric_limits<size_t>::max();
41 28
42 } // namespace 29 } // namespace
43 30
44 class LoadMonitoringExtensionHostQueueTest : public ExtensionsTest { 31 class LoadMonitoringExtensionHostQueueTest : public ExtensionsTest {
45 public: 32 public:
46 LoadMonitoringExtensionHostQueueTest() 33 LoadMonitoringExtensionHostQueueTest()
47 : finished_(false), 34 : finished_(false),
48 // Arbitrary choice of an invalid size_t. 35 // Arbitrary choice of an invalid size_t.
49 num_queued_(g_invalid_size_t), 36 num_queued_(g_invalid_size_t),
50 num_loaded_(g_invalid_size_t), 37 num_loaded_(g_invalid_size_t),
51 max_awaiting_loading_(g_invalid_size_t), 38 max_in_queue_(g_invalid_size_t),
52 max_active_loading_(g_invalid_size_t) {} 39 max_active_loading_(g_invalid_size_t) {}
53 40
54 void SetUp() override { 41 void SetUp() override {
55 queue_.reset(new LoadMonitoringExtensionHostQueue( 42 queue_.reset(new LoadMonitoringExtensionHostQueue(
56 // Use a SerialExtensionHostQueue because it's simple. 43 // Use a SerialExtensionHostQueue because it's simple.
57 scoped_ptr<ExtensionHostQueue>(new SerialExtensionHostQueue()), 44 scoped_ptr<ExtensionHostQueue>(new SerialExtensionHostQueue()),
58 base::TimeDelta(), // no delay, easier to test 45 base::TimeDelta(), // no delay, easier to test
59 base::Bind(&LoadMonitoringExtensionHostQueueTest::Finished, 46 base::Bind(&LoadMonitoringExtensionHostQueueTest::Finished,
60 base::Unretained(this)))); 47 base::Unretained(this))));
61 } 48 }
62 49
63 protected: 50 protected:
64 // Creates a new DeferredStartRenderHost. Ownership is held by this class, 51 // Creates a new DeferredStartRenderHost. Ownership is held by this class,
65 // not passed to caller. 52 // not passed to caller.
66 StubDeferredStartRenderHost* CreateHost() { 53 DeferredStartRenderHost* CreateHost() {
67 StubDeferredStartRenderHost* stub = new StubDeferredStartRenderHost(); 54 StubDeferredStartRenderHost* stub = new StubDeferredStartRenderHost();
68 stubs_.push_back(stub); 55 stubs_.push_back(stub);
69 return stub; 56 return stub;
70 } 57 }
71 58
72 // Our single LoadMonitoringExtensionHostQueue instance. 59 // Our single LoadMonitoringExtensionHostQueue instance.
73 LoadMonitoringExtensionHostQueue* queue() { return queue_.get(); } 60 LoadMonitoringExtensionHostQueue* queue() { return queue_.get(); }
74 61
75 // Returns true if the queue has finished monitoring. 62 // Returns true if the queue has finished monitoring.
76 bool finished() const { return finished_; } 63 bool finished() { return finished_; }
77 64
78 // These are available after the queue has finished (in which case finished() 65 // These are available after the queue has finished (in which case finished()
79 // will return true). 66 // will return true).
80 size_t num_queued() { return num_queued_; } 67 size_t num_queued() { return num_queued_; }
81 size_t num_loaded() { return num_loaded_; } 68 size_t num_loaded() { return num_loaded_; }
82 size_t max_awaiting_loading() { return max_awaiting_loading_; } 69 size_t max_in_queue() { return max_in_queue_; }
83 size_t max_active_loading() { return max_active_loading_; } 70 size_t max_active_loading() { return max_active_loading_; }
84 71
85 private: 72 private:
86 // Callback when queue has finished monitoring. 73 // Callback when queue has finished monitoring.
87 void Finished(size_t num_queued, 74 void Finished(size_t num_queued,
88 size_t num_loaded, 75 size_t num_loaded,
89 size_t max_awaiting_loading, 76 size_t max_in_queue,
90 size_t max_active_loading) { 77 size_t max_active_loading) {
91 CHECK(!finished_);
92 finished_ = true; 78 finished_ = true;
93 num_queued_ = num_queued; 79 num_queued_ = num_queued;
94 num_loaded_ = num_loaded; 80 num_loaded_ = num_loaded;
95 max_awaiting_loading_ = max_awaiting_loading; 81 max_in_queue_ = max_in_queue;
96 max_active_loading_ = max_active_loading; 82 max_active_loading_ = max_active_loading;
97 } 83 }
98 84
99 content::TestBrowserThreadBundle thread_bundle_; 85 content::TestBrowserThreadBundle thread_bundle_;
100 scoped_ptr<LoadMonitoringExtensionHostQueue> queue_; 86 scoped_ptr<LoadMonitoringExtensionHostQueue> queue_;
101 ScopedVector<StubDeferredStartRenderHost> stubs_; 87 ScopedVector<StubDeferredStartRenderHost> stubs_;
102 88
103 // Set after the queue has finished monitoring. 89 // Set after the queue has finished monitoring.
104 bool finished_; 90 bool finished_;
105 size_t num_queued_; 91 size_t num_queued_;
106 size_t num_loaded_; 92 size_t num_loaded_;
107 size_t max_awaiting_loading_; 93 size_t max_in_queue_;
108 size_t max_active_loading_; 94 size_t max_active_loading_;
109 }; 95 };
110 96
111 // Tests that if monitoring is never started, nor any hosts added, nothing is 97 // Tests that if monitoring is never started, nor any hosts added, nothing is
112 // recorded. 98 // recorded.
113 TEST_F(LoadMonitoringExtensionHostQueueTest, NeverStarted) { 99 TEST_F(LoadMonitoringExtensionHostQueueTest, NeverStarted) {
114 base::RunLoop().RunUntilIdle(); 100 base::RunLoop().RunUntilIdle();
115 ASSERT_FALSE(finished()); 101 ASSERT_FALSE(finished());
116 } 102 }
117 103
118 // Tests that if monitoring has started but no hosts added, it's recorded as 0. 104 // Tests that if monitoring has started but no hosts added, it's recorded as 0.
119 TEST_F(LoadMonitoringExtensionHostQueueTest, NoHosts) { 105 TEST_F(LoadMonitoringExtensionHostQueueTest, NoHosts) {
120 queue()->StartMonitoring(); 106 queue()->StartMonitoring();
121 107
122 base::RunLoop().RunUntilIdle(); 108 base::RunLoop().RunUntilIdle();
123 ASSERT_TRUE(finished()); 109 ASSERT_TRUE(finished());
124 EXPECT_EQ(0u, num_queued()); 110 EXPECT_EQ(0u, num_queued());
125 EXPECT_EQ(0u, num_loaded()); 111 EXPECT_EQ(0u, num_loaded());
126 EXPECT_EQ(0u, max_awaiting_loading()); 112 EXPECT_EQ(0u, max_in_queue());
127 EXPECT_EQ(0u, max_active_loading()); 113 EXPECT_EQ(0u, max_active_loading());
128 } 114 }
129 115
130 // Tests that adding a host starts monitoring. 116 // Tests that adding a host starts monitoring.
131 TEST_F(LoadMonitoringExtensionHostQueueTest, AddOneHost) { 117 TEST_F(LoadMonitoringExtensionHostQueueTest, AddOneHost) {
132 queue()->Add(CreateHost()); 118 queue()->Add(CreateHost());
133 119
134 base::RunLoop().RunUntilIdle(); 120 base::RunLoop().RunUntilIdle();
135 ASSERT_TRUE(finished()); 121 ASSERT_TRUE(finished());
136 EXPECT_EQ(1u, num_queued()); 122 EXPECT_EQ(1u, num_queued());
137 EXPECT_EQ(0u, num_loaded()); 123 EXPECT_EQ(0u, num_loaded());
138 EXPECT_EQ(1u, max_awaiting_loading()); 124 EXPECT_EQ(1u, max_in_queue());
139 EXPECT_EQ(0u, max_active_loading()); 125 EXPECT_EQ(0u, max_active_loading());
140 } 126 }
141 127
142 // Tests that a host added and removed is still recorded, but not as a load 128 // Tests that a host added and removed is still recorded, but not as a load
143 // finished. 129 // finished.
144 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndRemoveOneHost) { 130 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndRemoveOneHost) {
145 DeferredStartRenderHost* host = CreateHost(); 131 DeferredStartRenderHost* host = CreateHost();
146 queue()->Add(host); 132 queue()->Add(host);
147 queue()->Remove(host); 133 queue()->Remove(host);
148 134
149 base::RunLoop().RunUntilIdle(); 135 base::RunLoop().RunUntilIdle();
150 ASSERT_TRUE(finished()); 136 ASSERT_TRUE(finished());
151 EXPECT_EQ(1u, num_queued()); 137 EXPECT_EQ(1u, num_queued());
152 EXPECT_EQ(0u, num_loaded()); 138 EXPECT_EQ(0u, num_loaded());
153 EXPECT_EQ(1u, max_awaiting_loading()); 139 EXPECT_EQ(1u, max_in_queue());
154 EXPECT_EQ(0u, max_active_loading()); 140 EXPECT_EQ(0u, max_active_loading());
155 } 141 }
156 142
157 // Tests adding and starting a single host. 143 // Tests adding and starting a single host.
158 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartOneHost) { 144 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartOneHost) {
159 DeferredStartRenderHost* host = CreateHost(); 145 DeferredStartRenderHost* host = CreateHost();
160 queue()->Add(host); 146 queue()->Add(host);
161 queue()->OnDeferredStartRenderHostDidStartLoading(host); 147 queue()->OnDeferredStartRenderHostDidStartLoading(host);
162 148
163 base::RunLoop().RunUntilIdle(); 149 base::RunLoop().RunUntilIdle();
164 ASSERT_TRUE(finished()); 150 ASSERT_TRUE(finished());
165 EXPECT_EQ(1u, num_queued()); 151 EXPECT_EQ(1u, num_queued());
166 EXPECT_EQ(0u, num_loaded()); 152 EXPECT_EQ(0u, num_loaded());
167 EXPECT_EQ(1u, max_awaiting_loading()); 153 EXPECT_EQ(1u, max_in_queue());
168 EXPECT_EQ(1u, max_active_loading()); 154 EXPECT_EQ(1u, max_active_loading());
155
156 // Sanity check: stopping/destroying at this point doesn't crash.
157 queue()->OnDeferredStartRenderHostDidStopLoading(host);
158 queue()->OnDeferredStartRenderHostDestroyed(host);
169 } 159 }
170 160
171 // Tests adding and destroying a single host without starting it. 161 // Tests adding and destroying a single host without starting it.
172 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndDestroyOneHost) { 162 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndDestroyOneHost) {
173 DeferredStartRenderHost* host = CreateHost(); 163 DeferredStartRenderHost* host = CreateHost();
174 queue()->Add(host); 164 queue()->Add(host);
175 queue()->OnDeferredStartRenderHostDestroyed(host); 165 queue()->OnDeferredStartRenderHostDestroyed(host);
176 166
177 base::RunLoop().RunUntilIdle(); 167 base::RunLoop().RunUntilIdle();
178 ASSERT_TRUE(finished()); 168 ASSERT_TRUE(finished());
179 EXPECT_EQ(1u, num_queued()); 169 EXPECT_EQ(1u, num_queued());
180 EXPECT_EQ(0u, num_loaded()); 170 EXPECT_EQ(0u, num_loaded());
181 EXPECT_EQ(1u, max_awaiting_loading()); 171 EXPECT_EQ(1u, max_in_queue());
182 EXPECT_EQ(0u, max_active_loading()); 172 EXPECT_EQ(0u, max_active_loading());
173
174 // Sanity check: stopping/destroying at this point doesn't crash.
175 queue()->OnDeferredStartRenderHostDidStopLoading(host);
176 queue()->OnDeferredStartRenderHostDestroyed(host);
183 } 177 }
184 178
185 // Tests adding, starting, and stopping a single host. 179 // Tests adding, starting, and stopping a single host.
186 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndStopOneHost) { 180 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndStopOneHost) {
187 DeferredStartRenderHost* host = CreateHost(); 181 DeferredStartRenderHost* host = CreateHost();
188 queue()->Add(host); 182 queue()->Add(host);
189 queue()->OnDeferredStartRenderHostDidStartLoading(host); 183 queue()->OnDeferredStartRenderHostDidStartLoading(host);
190 queue()->OnDeferredStartRenderHostDidStopLoading(host); 184 queue()->OnDeferredStartRenderHostDidStopLoading(host);
191 185
192 base::RunLoop().RunUntilIdle(); 186 base::RunLoop().RunUntilIdle();
193 ASSERT_TRUE(finished()); 187 ASSERT_TRUE(finished());
194 EXPECT_EQ(1u, num_queued()); 188 EXPECT_EQ(1u, num_queued());
195 EXPECT_EQ(1u, num_loaded()); 189 EXPECT_EQ(1u, num_loaded());
196 EXPECT_EQ(1u, max_awaiting_loading()); 190 EXPECT_EQ(1u, max_in_queue());
197 EXPECT_EQ(1u, max_active_loading()); 191 EXPECT_EQ(1u, max_active_loading());
198 }
199 192
200 // Tests adding, starting, and stopping a single host - twice. 193 // Sanity check: destroying at this point doesn't crash.
201 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndStopOneHostTwice) { 194 queue()->OnDeferredStartRenderHostDestroyed(host);
202 DeferredStartRenderHost* host = CreateHost();
203 queue()->Add(host);
204 queue()->OnDeferredStartRenderHostDidStartLoading(host);
205 queue()->OnDeferredStartRenderHostDidStopLoading(host);
206
207 // Re-starting loading should also be recorded fine (e.g. navigations could
208 // trigger this).
209 queue()->OnDeferredStartRenderHostDidStartLoading(host);
210 queue()->OnDeferredStartRenderHostDidStopLoading(host);
211
212 base::RunLoop().RunUntilIdle();
213 ASSERT_TRUE(finished());
214 EXPECT_EQ(1u, num_queued());
215 EXPECT_EQ(2u, num_loaded()); // 2 loaded this time, because we ran twice
216 EXPECT_EQ(1u, max_awaiting_loading());
217 EXPECT_EQ(1u, max_active_loading());
218 } 195 }
219 196
220 // Tests adding, starting, and destroying (i.e. an implicit stop) a single host. 197 // Tests adding, starting, and destroying (i.e. an implicit stop) a single host.
221 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndDestroyOneHost) { 198 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndDestroyOneHost) {
222 DeferredStartRenderHost* host = CreateHost(); 199 DeferredStartRenderHost* host = CreateHost();
223 queue()->Add(host); 200 queue()->Add(host);
224 queue()->OnDeferredStartRenderHostDidStartLoading(host); 201 queue()->OnDeferredStartRenderHostDidStartLoading(host);
225 queue()->OnDeferredStartRenderHostDestroyed(host); 202 queue()->OnDeferredStartRenderHostDestroyed(host);
226 203
227 base::RunLoop().RunUntilIdle(); 204 base::RunLoop().RunUntilIdle();
228 ASSERT_TRUE(finished()); 205 ASSERT_TRUE(finished());
229 EXPECT_EQ(1u, num_queued()); 206 EXPECT_EQ(1u, num_queued());
230 EXPECT_EQ(1u, num_loaded()); 207 EXPECT_EQ(1u, num_loaded());
231 EXPECT_EQ(1u, max_awaiting_loading()); 208 EXPECT_EQ(1u, max_in_queue());
232 EXPECT_EQ(1u, max_active_loading()); 209 EXPECT_EQ(1u, max_active_loading());
233 } 210 }
234 211
235 // Tests adding, starting, and removing a single host. 212 // Tests adding, starting, and removing a single host.
236 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndRemoveOneHost) { 213 TEST_F(LoadMonitoringExtensionHostQueueTest, AddAndStartAndRemoveOneHost) {
237 DeferredStartRenderHost* host = CreateHost(); 214 DeferredStartRenderHost* host = CreateHost();
238 queue()->Add(host); 215 queue()->Add(host);
239 queue()->OnDeferredStartRenderHostDidStartLoading(host); 216 queue()->OnDeferredStartRenderHostDidStartLoading(host);
240 queue()->Remove(host); 217 queue()->Remove(host);
241 218
242 base::RunLoop().RunUntilIdle(); 219 base::RunLoop().RunUntilIdle();
243 ASSERT_TRUE(finished()); 220 ASSERT_TRUE(finished());
244 EXPECT_EQ(1u, num_queued()); 221 EXPECT_EQ(1u, num_queued());
245 EXPECT_EQ(0u, num_loaded()); 222 EXPECT_EQ(0u, num_loaded());
246 EXPECT_EQ(1u, max_awaiting_loading()); 223 EXPECT_EQ(1u, max_in_queue());
247 EXPECT_EQ(1u, max_active_loading()); 224 EXPECT_EQ(1u, max_active_loading());
248 } 225 }
249 226
250 // Tests monitoring a sequence of hosts. 227 // Tests monitoring a sequence of hosts.
251 TEST_F(LoadMonitoringExtensionHostQueueTest, Sequence) { 228 TEST_F(LoadMonitoringExtensionHostQueueTest, Sequence) {
252 // Scenario: 229 // Scenario:
253 // 230 //
254 // 6 hosts will be added, only 5 will start loading, with a maximum of 4 in 231 // 6 hosts will be added, only 5 will start loading, with a maximum of 4 in
255 // the queue and 3 loading at any time. Only 2 will finish. 232 // the queue and 3 loading at any time. Only 2 will finish.
256 DeferredStartRenderHost* host1 = CreateHost(); 233 DeferredStartRenderHost* host1 = CreateHost();
(...skipping 17 matching lines...) Expand all
274 251
275 queue()->OnDeferredStartRenderHostDidStartLoading(host3); 252 queue()->OnDeferredStartRenderHostDidStartLoading(host3);
276 queue()->OnDeferredStartRenderHostDidStartLoading(host4); 253 queue()->OnDeferredStartRenderHostDidStartLoading(host4);
277 queue()->OnDeferredStartRenderHostDidStopLoading(host4); 254 queue()->OnDeferredStartRenderHostDidStopLoading(host4);
278 queue()->OnDeferredStartRenderHostDidStartLoading(host5); 255 queue()->OnDeferredStartRenderHostDidStartLoading(host5);
279 256
280 base::RunLoop().RunUntilIdle(); 257 base::RunLoop().RunUntilIdle();
281 ASSERT_TRUE(finished()); 258 ASSERT_TRUE(finished());
282 EXPECT_EQ(6u, num_queued()); 259 EXPECT_EQ(6u, num_queued());
283 EXPECT_EQ(2u, num_loaded()); 260 EXPECT_EQ(2u, num_loaded());
284 EXPECT_EQ(4u, max_awaiting_loading()); 261 EXPECT_EQ(4u, max_in_queue());
285 EXPECT_EQ(3u, max_active_loading()); 262 EXPECT_EQ(3u, max_active_loading());
286 263
287 // Complete a realistic sequence by stopping and/or destroying all hosts. 264 // Sanity check: complete a realistic sequence by stopping and/or destroying
265 // all of the hosts. It shouldn't crash.
288 queue()->OnDeferredStartRenderHostDestroyed(host1); 266 queue()->OnDeferredStartRenderHostDestroyed(host1);
289 queue()->OnDeferredStartRenderHostDidStopLoading(host2); 267 queue()->OnDeferredStartRenderHostDidStopLoading(host2);
290 queue()->OnDeferredStartRenderHostDestroyed(host2); 268 queue()->OnDeferredStartRenderHostDestroyed(host2);
291 queue()->OnDeferredStartRenderHostDidStopLoading(host3); 269 queue()->OnDeferredStartRenderHostDidStopLoading(host3);
292 queue()->OnDeferredStartRenderHostDestroyed(host3); 270 queue()->OnDeferredStartRenderHostDestroyed(host3);
293 queue()->OnDeferredStartRenderHostDestroyed(host4); 271 queue()->OnDeferredStartRenderHostDestroyed(host4);
294 queue()->OnDeferredStartRenderHostDestroyed(host5); // never stopped 272 queue()->OnDeferredStartRenderHostDestroyed(host5); // never stopped
295 queue()->OnDeferredStartRenderHostDestroyed(host6); // never started/stopped 273 queue()->OnDeferredStartRenderHostDestroyed(host6); // never started/stopped
296 } 274 }
297 275
298 // Tests that the queue is observing Hosts from adding them through to being
299 // removed - that the load sequence itself is irrelevant.
300 //
301 // This is an unfortunate implementation-style test, but it used to be a bug
302 // and difficult to catch outside of a proper test framework - one in which we
303 // don't have to trigger events by hand.
304 TEST_F(LoadMonitoringExtensionHostQueueTest, ObserverLifetime) {
305 StubDeferredStartRenderHost* host1 = CreateHost();
306 StubDeferredStartRenderHost* host2 = CreateHost();
307 StubDeferredStartRenderHost* host3 = CreateHost();
308 StubDeferredStartRenderHost* host4 = CreateHost();
309
310 EXPECT_FALSE(host1->IsObservedBy(queue()));
311 EXPECT_FALSE(host2->IsObservedBy(queue()));
312 EXPECT_FALSE(host3->IsObservedBy(queue()));
313 EXPECT_FALSE(host4->IsObservedBy(queue()));
314
315 queue()->Add(host1);
316 queue()->Add(host2);
317 queue()->Add(host3);
318 queue()->Add(host4);
319
320 EXPECT_TRUE(host1->IsObservedBy(queue()));
321 EXPECT_TRUE(host2->IsObservedBy(queue()));
322 EXPECT_TRUE(host3->IsObservedBy(queue()));
323 EXPECT_TRUE(host4->IsObservedBy(queue()));
324
325 queue()->OnDeferredStartRenderHostDidStartLoading(host1);
326 queue()->OnDeferredStartRenderHostDidStartLoading(host2);
327 queue()->OnDeferredStartRenderHostDidStartLoading(host3);
328 // host4 will test that we Remove before Starting - so don't start.
329
330 EXPECT_TRUE(host1->IsObservedBy(queue()));
331 EXPECT_TRUE(host2->IsObservedBy(queue()));
332 EXPECT_TRUE(host3->IsObservedBy(queue()));
333 EXPECT_TRUE(host4->IsObservedBy(queue()));
334
335 queue()->OnDeferredStartRenderHostDidStopLoading(host1);
336 queue()->OnDeferredStartRenderHostDestroyed(host2);
337
338 EXPECT_TRUE(host1->IsObservedBy(queue()));
339 EXPECT_TRUE(host2->IsObservedBy(queue()));
340
341 queue()->Remove(host1);
342 queue()->Remove(host2);
343 queue()->Remove(host3);
344 queue()->Remove(host4);
345
346 EXPECT_FALSE(host1->IsObservedBy(queue()));
347 EXPECT_FALSE(host2->IsObservedBy(queue()));
348 EXPECT_FALSE(host3->IsObservedBy(queue()));
349 EXPECT_FALSE(host4->IsObservedBy(queue()));
350 }
351
352 } // namespace extensions 276 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/load_monitoring_extension_host_queue.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698