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

Side by Side Diff: content/browser/device_orientation/provider_unittest.cc

Issue 10689106: Renaming Observer to OrientationObserver in DeviceOrientation (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 5 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <queue> 5 #include <queue>
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/synchronization/lock.h" 8 #include "base/synchronization/lock.h"
9 #include "content/browser/device_orientation/data_fetcher.h" 9 #include "content/browser/device_orientation/data_fetcher.h"
10 #include "content/browser/device_orientation/orientation.h" 10 #include "content/browser/device_orientation/orientation.h"
11 #include "content/browser/device_orientation/provider.h" 11 #include "content/browser/device_orientation/provider.h"
12 #include "content/browser/device_orientation/provider_impl.h" 12 #include "content/browser/device_orientation/provider_impl.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace device_orientation { 15 namespace device_orientation {
16 namespace { 16 namespace {
17 17
18 // Class for checking expectations on orientation updates from the Provider. 18 // Class for checking expectations on orientation updates from the Provider.
19 class UpdateChecker : public Provider::Observer { 19 class OrientationUpdateChecker : public Provider::OrientationObserver {
20 public: 20 public:
21 explicit UpdateChecker(int* expectations_count_ptr) 21 explicit OrientationUpdateChecker(int* expectations_count_ptr)
22 : expectations_count_ptr_(expectations_count_ptr) { 22 : expectations_count_ptr_(expectations_count_ptr) {
23 } 23 }
24 24
25 virtual ~UpdateChecker() {} 25 virtual ~OrientationUpdateChecker() {}
26 26
27 // From Provider::Observer. 27 // From Provider::OrientationObserver.
28 virtual void OnOrientationUpdate(const Orientation& orientation) { 28 virtual void OnOrientationUpdate(const Orientation& orientation) {
29 ASSERT_FALSE(expectations_queue_.empty()); 29 ASSERT_FALSE(expectations_queue_.empty());
30 30
31 Orientation expected = expectations_queue_.front(); 31 Orientation expected = expectations_queue_.front();
32 expectations_queue_.pop(); 32 expectations_queue_.pop();
33 33
34 EXPECT_EQ(expected.can_provide_alpha_, orientation.can_provide_alpha_); 34 EXPECT_EQ(expected.can_provide_alpha_, orientation.can_provide_alpha_);
35 EXPECT_EQ(expected.can_provide_beta_, orientation.can_provide_beta_); 35 EXPECT_EQ(expected.can_provide_beta_, orientation.can_provide_beta_);
36 EXPECT_EQ(expected.can_provide_gamma_, orientation.can_provide_gamma_); 36 EXPECT_EQ(expected.can_provide_gamma_, orientation.can_provide_gamma_);
37 EXPECT_EQ(expected.can_provide_absolute_, 37 EXPECT_EQ(expected.can_provide_absolute_,
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // Provider instance under test. 177 // Provider instance under test.
178 scoped_refptr<Provider> provider_; 178 scoped_refptr<Provider> provider_;
179 179
180 // Message loop for the test thread. 180 // Message loop for the test thread.
181 MessageLoop message_loop_; 181 MessageLoop message_loop_;
182 }; 182 };
183 183
184 TEST_F(DeviceOrientationProviderTest, FailingTest) { 184 TEST_F(DeviceOrientationProviderTest, FailingTest) {
185 Init(FailingDataFetcher::Create); 185 Init(FailingDataFetcher::Create);
186 186
187 scoped_ptr<UpdateChecker> checker_a( 187 scoped_ptr<OrientationUpdateChecker> checker_a(
188 new UpdateChecker(&pending_expectations_)); 188 new OrientationUpdateChecker(&pending_expectations_));
189 scoped_ptr<UpdateChecker> checker_b( 189 scoped_ptr<OrientationUpdateChecker> checker_b(
190 new UpdateChecker(&pending_expectations_)); 190 new OrientationUpdateChecker(&pending_expectations_));
191 191
192 checker_a->AddExpectation(Orientation::Empty()); 192 checker_a->AddExpectation(Orientation::Empty());
193 provider_->AddObserver(checker_a.get()); 193 provider_->AddOrientationObserver(checker_a.get());
194 MessageLoop::current()->Run(); 194 MessageLoop::current()->Run();
195 195
196 checker_b->AddExpectation(Orientation::Empty()); 196 checker_b->AddExpectation(Orientation::Empty());
197 provider_->AddObserver(checker_b.get()); 197 provider_->AddOrientationObserver(checker_b.get());
198 MessageLoop::current()->Run(); 198 MessageLoop::current()->Run();
199 } 199 }
200 200
201 TEST_F(DeviceOrientationProviderTest, ProviderIsSingleton) { 201 TEST_F(DeviceOrientationProviderTest, ProviderIsSingleton) {
202 Init(FailingDataFetcher::Create); 202 Init(FailingDataFetcher::Create);
203 203
204 scoped_refptr<Provider> provider_a(Provider::GetInstance()); 204 scoped_refptr<Provider> provider_a(Provider::GetInstance());
205 scoped_refptr<Provider> provider_b(Provider::GetInstance()); 205 scoped_refptr<Provider> provider_b(Provider::GetInstance());
206 206
207 EXPECT_EQ(provider_a.get(), provider_b.get()); 207 EXPECT_EQ(provider_a.get(), provider_b.get());
208 } 208 }
209 209
210 TEST_F(DeviceOrientationProviderTest, BasicPushTest) { 210 TEST_F(DeviceOrientationProviderTest, BasicPushTest) {
211 scoped_refptr<MockOrientationFactory> orientation_factory( 211 scoped_refptr<MockOrientationFactory> orientation_factory(
212 new MockOrientationFactory()); 212 new MockOrientationFactory());
213 Init(MockOrientationFactory::CreateDataFetcher); 213 Init(MockOrientationFactory::CreateDataFetcher);
214 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true); 214 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true);
215 215
216 scoped_ptr<UpdateChecker> checker(new UpdateChecker(&pending_expectations_)); 216 scoped_ptr<OrientationUpdateChecker> checker(new OrientationUpdateChecker(
217 &pending_expectations_));
217 checker->AddExpectation(kTestOrientation); 218 checker->AddExpectation(kTestOrientation);
218 orientation_factory->SetOrientation(kTestOrientation); 219 orientation_factory->SetOrientation(kTestOrientation);
219 provider_->AddObserver(checker.get()); 220 provider_->AddOrientationObserver(checker.get());
220 MessageLoop::current()->Run(); 221 MessageLoop::current()->Run();
221 222
222 provider_->RemoveObserver(checker.get()); 223 provider_->RemoveOrientationObserver(checker.get());
223 } 224 }
224 225
225 TEST_F(DeviceOrientationProviderTest, MultipleObserversPushTest) { 226 TEST_F(DeviceOrientationProviderTest, MultipleOrientationObserversPushTest) {
226 scoped_refptr<MockOrientationFactory> orientation_factory( 227 scoped_refptr<MockOrientationFactory> orientation_factory(
227 new MockOrientationFactory()); 228 new MockOrientationFactory());
228 Init(MockOrientationFactory::CreateDataFetcher); 229 Init(MockOrientationFactory::CreateDataFetcher);
229 const Orientation kTestOrientations[] = { 230 const Orientation kTestOrientations[] = {
230 Orientation(true, 1, true, 2, true, 3, true, true), 231 Orientation(true, 1, true, 2, true, 3, true, true),
231 Orientation(true, 4, true, 5, true, 6, true, false), 232 Orientation(true, 4, true, 5, true, 6, true, false),
232 Orientation(true, 7, true, 8, true, 9, false, true)}; 233 Orientation(true, 7, true, 8, true, 9, false, true)};
233 234
234 scoped_ptr<UpdateChecker> checker_a( 235 scoped_ptr<OrientationUpdateChecker> checker_a(
235 new UpdateChecker(&pending_expectations_)); 236 new OrientationUpdateChecker(&pending_expectations_));
236 scoped_ptr<UpdateChecker> checker_b( 237 scoped_ptr<OrientationUpdateChecker> checker_b(
237 new UpdateChecker(&pending_expectations_)); 238 new OrientationUpdateChecker(&pending_expectations_));
238 scoped_ptr<UpdateChecker> checker_c( 239 scoped_ptr<OrientationUpdateChecker> checker_c(
239 new UpdateChecker(&pending_expectations_)); 240 new OrientationUpdateChecker(&pending_expectations_));
240 241
241 checker_a->AddExpectation(kTestOrientations[0]); 242 checker_a->AddExpectation(kTestOrientations[0]);
242 orientation_factory->SetOrientation(kTestOrientations[0]); 243 orientation_factory->SetOrientation(kTestOrientations[0]);
243 provider_->AddObserver(checker_a.get()); 244 provider_->AddOrientationObserver(checker_a.get());
244 MessageLoop::current()->Run(); 245 MessageLoop::current()->Run();
245 246
246 checker_a->AddExpectation(kTestOrientations[1]); 247 checker_a->AddExpectation(kTestOrientations[1]);
247 checker_b->AddExpectation(kTestOrientations[0]); 248 checker_b->AddExpectation(kTestOrientations[0]);
248 checker_b->AddExpectation(kTestOrientations[1]); 249 checker_b->AddExpectation(kTestOrientations[1]);
249 orientation_factory->SetOrientation(kTestOrientations[1]); 250 orientation_factory->SetOrientation(kTestOrientations[1]);
250 provider_->AddObserver(checker_b.get()); 251 provider_->AddOrientationObserver(checker_b.get());
251 MessageLoop::current()->Run(); 252 MessageLoop::current()->Run();
252 253
253 provider_->RemoveObserver(checker_a.get()); 254 provider_->RemoveOrientationObserver(checker_a.get());
254 checker_b->AddExpectation(kTestOrientations[2]); 255 checker_b->AddExpectation(kTestOrientations[2]);
255 checker_c->AddExpectation(kTestOrientations[1]); 256 checker_c->AddExpectation(kTestOrientations[1]);
256 checker_c->AddExpectation(kTestOrientations[2]); 257 checker_c->AddExpectation(kTestOrientations[2]);
257 orientation_factory->SetOrientation(kTestOrientations[2]); 258 orientation_factory->SetOrientation(kTestOrientations[2]);
258 provider_->AddObserver(checker_c.get()); 259 provider_->AddOrientationObserver(checker_c.get());
259 MessageLoop::current()->Run(); 260 MessageLoop::current()->Run();
260 261
261 provider_->RemoveObserver(checker_b.get()); 262 provider_->RemoveOrientationObserver(checker_b.get());
262 provider_->RemoveObserver(checker_c.get()); 263 provider_->RemoveOrientationObserver(checker_c.get());
263 } 264 }
264 265
265 #if defined(OS_LINUX) || defined(OS_WIN) 266 #if defined(OS_LINUX) || defined(OS_WIN)
266 // Flakily DCHECKs on Linux. See crbug.com/104950. 267 // Flakily DCHECKs on Linux. See crbug.com/104950.
267 // FLAKY on Win. See crbug.com/104950. 268 // FLAKY on Win. See crbug.com/104950.
268 #define MAYBE_ObserverNotRemoved DISABLED_ObserverNotRemoved 269 #define MAYBE_OrientationObserverNotRemoved DISABLED_OrientationObserverNotRemov ed
269 #else 270 #else
270 #define MAYBE_ObserverNotRemoved ObserverNotRemoved 271 #define MAYBE_OrientationObserverNotRemoved OrientationObserverNotRemoved
271 #endif 272 #endif
272 TEST_F(DeviceOrientationProviderTest, MAYBE_ObserverNotRemoved) { 273 TEST_F(DeviceOrientationProviderTest, MAYBE_OrientationObserverNotRemoved) {
273 scoped_refptr<MockOrientationFactory> orientation_factory( 274 scoped_refptr<MockOrientationFactory> orientation_factory(
274 new MockOrientationFactory()); 275 new MockOrientationFactory());
275 Init(MockOrientationFactory::CreateDataFetcher); 276 Init(MockOrientationFactory::CreateDataFetcher);
276 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true); 277 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true);
277 const Orientation kTestOrientation2(true, 4, true, 5, true, 6, true, false); 278 const Orientation kTestOrientation2(true, 4, true, 5, true, 6, true, false);
278 279
279 scoped_ptr<UpdateChecker> checker(new UpdateChecker(&pending_expectations_)); 280 scoped_ptr<OrientationUpdateChecker> checker(new OrientationUpdateChecker(
281 &pending_expectations_));
280 checker->AddExpectation(kTestOrientation); 282 checker->AddExpectation(kTestOrientation);
281 orientation_factory->SetOrientation(kTestOrientation); 283 orientation_factory->SetOrientation(kTestOrientation);
282 provider_->AddObserver(checker.get()); 284 provider_->AddOrientationObserver(checker.get());
283 MessageLoop::current()->Run(); 285 MessageLoop::current()->Run();
284 286
285 checker->AddExpectation(kTestOrientation2); 287 checker->AddExpectation(kTestOrientation2);
286 orientation_factory->SetOrientation(kTestOrientation2); 288 orientation_factory->SetOrientation(kTestOrientation2);
287 MessageLoop::current()->Run(); 289 MessageLoop::current()->Run();
288 290
289 // Note that checker is not removed. This should not be a problem. 291 // Note that checker is not removed. This should not be a problem.
290 } 292 }
291 293
292 #if defined(OS_WIN) 294 #if defined(OS_WIN)
293 // FLAKY on Win. See crbug.com/104950. 295 // FLAKY on Win. See crbug.com/104950.
294 #define MAYBE_StartFailing DISABLED_StartFailing 296 #define MAYBE_StartFailing DISABLED_StartFailing
295 #else 297 #else
296 #define MAYBE_StartFailing StartFailing 298 #define MAYBE_StartFailing StartFailing
297 #endif 299 #endif
298 TEST_F(DeviceOrientationProviderTest, MAYBE_StartFailing) { 300 TEST_F(DeviceOrientationProviderTest, MAYBE_StartFailing) {
299 scoped_refptr<MockOrientationFactory> orientation_factory( 301 scoped_refptr<MockOrientationFactory> orientation_factory(
300 new MockOrientationFactory()); 302 new MockOrientationFactory());
301 Init(MockOrientationFactory::CreateDataFetcher); 303 Init(MockOrientationFactory::CreateDataFetcher);
302 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true); 304 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true);
303 305
304 scoped_ptr<UpdateChecker> checker_a(new UpdateChecker( 306 scoped_ptr<OrientationUpdateChecker> checker_a(new OrientationUpdateChecker(
305 &pending_expectations_)); 307 &pending_expectations_));
306 scoped_ptr<UpdateChecker> checker_b(new UpdateChecker( 308 scoped_ptr<OrientationUpdateChecker> checker_b(new OrientationUpdateChecker(
307 &pending_expectations_)); 309 &pending_expectations_));
308 310
309 orientation_factory->SetOrientation(kTestOrientation); 311 orientation_factory->SetOrientation(kTestOrientation);
310 checker_a->AddExpectation(kTestOrientation); 312 checker_a->AddExpectation(kTestOrientation);
311 provider_->AddObserver(checker_a.get()); 313 provider_->AddOrientationObserver(checker_a.get());
312 MessageLoop::current()->Run(); 314 MessageLoop::current()->Run();
313 315
314 checker_a->AddExpectation(Orientation::Empty()); 316 checker_a->AddExpectation(Orientation::Empty());
315 orientation_factory->SetFailing(true); 317 orientation_factory->SetFailing(true);
316 MessageLoop::current()->Run(); 318 MessageLoop::current()->Run();
317 319
318 checker_b->AddExpectation(Orientation::Empty()); 320 checker_b->AddExpectation(Orientation::Empty());
319 provider_->AddObserver(checker_b.get()); 321 provider_->AddOrientationObserver(checker_b.get());
320 MessageLoop::current()->Run(); 322 MessageLoop::current()->Run();
321 323
322 provider_->RemoveObserver(checker_a.get()); 324 provider_->RemoveOrientationObserver(checker_a.get());
323 provider_->RemoveObserver(checker_b.get()); 325 provider_->RemoveOrientationObserver(checker_b.get());
324 } 326 }
325 327
326 TEST_F(DeviceOrientationProviderTest, StartStopStart) { 328 TEST_F(DeviceOrientationProviderTest, StartStopStart) {
327 scoped_refptr<MockOrientationFactory> orientation_factory( 329 scoped_refptr<MockOrientationFactory> orientation_factory(
328 new MockOrientationFactory()); 330 new MockOrientationFactory());
329 Init(MockOrientationFactory::CreateDataFetcher); 331 Init(MockOrientationFactory::CreateDataFetcher);
330 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true); 332 const Orientation kTestOrientation(true, 1, true, 2, true, 3, true, true);
331 const Orientation kTestOrientation2(true, 4, true, 5, true, 6, true, false); 333 const Orientation kTestOrientation2(true, 4, true, 5, true, 6, true, false);
332 334
333 scoped_ptr<UpdateChecker> checker_a(new UpdateChecker( 335 scoped_ptr<OrientationUpdateChecker> checker_a(new OrientationUpdateChecker(
334 &pending_expectations_)); 336 &pending_expectations_));
335 scoped_ptr<UpdateChecker> checker_b(new UpdateChecker( 337 scoped_ptr<OrientationUpdateChecker> checker_b(new OrientationUpdateChecker(
336 &pending_expectations_)); 338 &pending_expectations_));
337 339
338 checker_a->AddExpectation(kTestOrientation); 340 checker_a->AddExpectation(kTestOrientation);
339 orientation_factory->SetOrientation(kTestOrientation); 341 orientation_factory->SetOrientation(kTestOrientation);
340 provider_->AddObserver(checker_a.get()); 342 provider_->AddOrientationObserver(checker_a.get());
341 MessageLoop::current()->Run(); 343 MessageLoop::current()->Run();
342 344
343 provider_->RemoveObserver(checker_a.get()); // This stops the Provider. 345 provider_->RemoveOrientationObserver(checker_a.get());
346 // This stops the Provider.
Steve Block 2012/07/04 15:34:38 Comment should be above code.
344 347
345 checker_b->AddExpectation(kTestOrientation2); 348 checker_b->AddExpectation(kTestOrientation2);
346 orientation_factory->SetOrientation(kTestOrientation2); 349 orientation_factory->SetOrientation(kTestOrientation2);
347 provider_->AddObserver(checker_b.get()); 350 provider_->AddOrientationObserver(checker_b.get());
348 MessageLoop::current()->Run(); 351 MessageLoop::current()->Run();
349 352
350 provider_->RemoveObserver(checker_b.get()); 353 provider_->RemoveOrientationObserver(checker_b.get());
351 } 354 }
352 355
353 TEST_F(DeviceOrientationProviderTest, SignificantlyDifferent) { 356 TEST_F(DeviceOrientationProviderTest, SignificantlyDifferent) {
354 scoped_refptr<MockOrientationFactory> orientation_factory( 357 scoped_refptr<MockOrientationFactory> orientation_factory(
355 new MockOrientationFactory()); 358 new MockOrientationFactory());
356 Init(MockOrientationFactory::CreateDataFetcher); 359 Init(MockOrientationFactory::CreateDataFetcher);
357 360
358 // Values that should be well below or above the implementation's 361 // Values that should be well below or above the implementation's
359 // significane threshold. 362 // significane threshold.
360 const double kInsignificantDifference = 1e-6; 363 const double kInsignificantDifference = 1e-6;
361 const double kSignificantDifference = 30; 364 const double kSignificantDifference = 30;
362 const double kAlpha = 4, kBeta = 5, kGamma = 6; 365 const double kAlpha = 4, kBeta = 5, kGamma = 6;
363 366
364 const Orientation first_orientation(true, kAlpha, true, kBeta, true, kGamma, 367 const Orientation first_orientation(true, kAlpha, true, kBeta, true, kGamma,
365 true, true); 368 true, true);
366 369
367 const Orientation second_orientation(true, kAlpha + kInsignificantDifference, 370 const Orientation second_orientation(true, kAlpha + kInsignificantDifference,
368 true, kBeta + kInsignificantDifference, 371 true, kBeta + kInsignificantDifference,
369 true, kGamma + kInsignificantDifference, 372 true, kGamma + kInsignificantDifference,
370 true, false); 373 true, false);
371 374
372 const Orientation third_orientation(true, kAlpha + kSignificantDifference, 375 const Orientation third_orientation(true, kAlpha + kSignificantDifference,
373 true, kBeta + kSignificantDifference, 376 true, kBeta + kSignificantDifference,
374 true, kGamma + kSignificantDifference, 377 true, kGamma + kSignificantDifference,
375 false, true); 378 false, true);
376 379
377 scoped_ptr<UpdateChecker> checker_a(new UpdateChecker( 380 scoped_ptr<OrientationUpdateChecker> checker_a(new OrientationUpdateChecker(
378 &pending_expectations_)); 381 &pending_expectations_));
379 scoped_ptr<UpdateChecker> checker_b(new UpdateChecker( 382 scoped_ptr<OrientationUpdateChecker> checker_b(new OrientationUpdateChecker(
380 &pending_expectations_)); 383 &pending_expectations_));
381 384
382 385
383 orientation_factory->SetOrientation(first_orientation); 386 orientation_factory->SetOrientation(first_orientation);
384 checker_a->AddExpectation(first_orientation); 387 checker_a->AddExpectation(first_orientation);
385 provider_->AddObserver(checker_a.get()); 388 provider_->AddOrientationObserver(checker_a.get());
386 MessageLoop::current()->Run(); 389 MessageLoop::current()->Run();
387 390
388 // The observers should not see this insignificantly different orientation. 391 // The orientation observers should not see this insignificantly different
392 // orientation.
389 orientation_factory->SetOrientation(second_orientation); 393 orientation_factory->SetOrientation(second_orientation);
390 checker_b->AddExpectation(first_orientation); 394 checker_b->AddExpectation(first_orientation);
391 provider_->AddObserver(checker_b.get()); 395 provider_->AddOrientationObserver(checker_b.get());
392 MessageLoop::current()->Run(); 396 MessageLoop::current()->Run();
393 397
394 orientation_factory->SetOrientation(third_orientation); 398 orientation_factory->SetOrientation(third_orientation);
395 checker_a->AddExpectation(third_orientation); 399 checker_a->AddExpectation(third_orientation);
396 checker_b->AddExpectation(third_orientation); 400 checker_b->AddExpectation(third_orientation);
397 MessageLoop::current()->Run(); 401 MessageLoop::current()->Run();
398 402
399 provider_->RemoveObserver(checker_a.get()); 403 provider_->RemoveOrientationObserver(checker_a.get());
400 provider_->RemoveObserver(checker_b.get()); 404 provider_->RemoveOrientationObserver(checker_b.get());
401 } 405 }
402 406
403 } // namespace 407 } // namespace
404 408
405 } // namespace device_orientation 409 } // namespace device_orientation
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698