| OLD | NEW |
| 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 "base/observer_list.h" | 5 #include "base/observer_list.h" |
| 6 #include "base/observer_list_threadsafe.h" | 6 #include "base/observer_list_threadsafe.h" |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 Adder a(1); | 436 Adder a(1); |
| 437 AddInObserve<ObserverList<Foo> > b(&observer_list); | 437 AddInObserve<ObserverList<Foo> > b(&observer_list); |
| 438 | 438 |
| 439 observer_list.AddObserver(&a); | 439 observer_list.AddObserver(&a); |
| 440 observer_list.AddObserver(&b); | 440 observer_list.AddObserver(&b); |
| 441 | 441 |
| 442 FOR_EACH_OBSERVER(Foo, observer_list, Observe(1)); | 442 FOR_EACH_OBSERVER(Foo, observer_list, Observe(1)); |
| 443 | 443 |
| 444 EXPECT_TRUE(b.added); | 444 EXPECT_TRUE(b.added); |
| 445 // B's adder should not have been notified because it was added during | 445 // B's adder should not have been notified because it was added during |
| 446 // notificaiton. | 446 // notification. |
| 447 EXPECT_EQ(0, b.adder.total); | 447 EXPECT_EQ(0, b.adder.total); |
| 448 | 448 |
| 449 // Notify again to make sure b's adder is notified. | 449 // Notify again to make sure b's adder is notified. |
| 450 FOR_EACH_OBSERVER(Foo, observer_list, Observe(1)); | 450 FOR_EACH_OBSERVER(Foo, observer_list, Observe(1)); |
| 451 EXPECT_EQ(1, b.adder.total); | 451 EXPECT_EQ(1, b.adder.total); |
| 452 } | 452 } |
| 453 | 453 |
| 454 // Same as above, but for ObserverListThreadSafe | 454 // Same as above, but for ObserverListThreadSafe |
| 455 TEST(ObserverListThreadSafeTest, Existing) { | 455 TEST(ObserverListThreadSafeTest, Existing) { |
| 456 MessageLoop loop; | 456 MessageLoop loop; |
| 457 scoped_refptr<ObserverListThreadSafe<Foo> > observer_list( | 457 scoped_refptr<ObserverListThreadSafe<Foo> > observer_list( |
| 458 new ObserverListThreadSafe<Foo>(ObserverList<Foo>::NOTIFY_EXISTING_ONLY)); | 458 new ObserverListThreadSafe<Foo>(ObserverList<Foo>::NOTIFY_EXISTING_ONLY)); |
| 459 Adder a(1); | 459 Adder a(1); |
| 460 AddInObserve<ObserverListThreadSafe<Foo> > b(observer_list.get()); | 460 AddInObserve<ObserverListThreadSafe<Foo> > b(observer_list.get()); |
| 461 | 461 |
| 462 observer_list->AddObserver(&a); | 462 observer_list->AddObserver(&a); |
| 463 observer_list->AddObserver(&b); | 463 observer_list->AddObserver(&b); |
| 464 | 464 |
| 465 observer_list->Notify(&Foo::Observe, 1); | 465 observer_list->Notify(&Foo::Observe, 1); |
| 466 RunLoop().RunUntilIdle(); | 466 RunLoop().RunUntilIdle(); |
| 467 | 467 |
| 468 EXPECT_TRUE(b.added); | 468 EXPECT_TRUE(b.added); |
| 469 // B's adder should not have been notified because it was added during | 469 // B's adder should not have been notified because it was added during |
| 470 // notificaiton. | 470 // notification. |
| 471 EXPECT_EQ(0, b.adder.total); | 471 EXPECT_EQ(0, b.adder.total); |
| 472 | 472 |
| 473 // Notify again to make sure b's adder is notified. | 473 // Notify again to make sure b's adder is notified. |
| 474 observer_list->Notify(&Foo::Observe, 1); | 474 observer_list->Notify(&Foo::Observe, 1); |
| 475 RunLoop().RunUntilIdle(); | 475 RunLoop().RunUntilIdle(); |
| 476 EXPECT_EQ(1, b.adder.total); | 476 EXPECT_EQ(1, b.adder.total); |
| 477 } | 477 } |
| 478 | 478 |
| 479 class AddInClearObserve : public Foo { | 479 class AddInClearObserve : public Foo { |
| 480 public: | 480 public: |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 ListDestructor a(observer_list); | 540 ListDestructor a(observer_list); |
| 541 observer_list->AddObserver(&a); | 541 observer_list->AddObserver(&a); |
| 542 | 542 |
| 543 FOR_EACH_OBSERVER(Foo, *observer_list, Observe(0)); | 543 FOR_EACH_OBSERVER(Foo, *observer_list, Observe(0)); |
| 544 // If this test fails, there'll be Valgrind errors when this function goes out | 544 // If this test fails, there'll be Valgrind errors when this function goes out |
| 545 // of scope. | 545 // of scope. |
| 546 } | 546 } |
| 547 | 547 |
| 548 } // namespace | 548 } // namespace |
| 549 } // namespace base | 549 } // namespace base |
| OLD | NEW |