| Index: base/callback_unittest.cc
|
| diff --git a/base/callback_unittest.cc b/base/callback_unittest.cc
|
| index 8527e70984a1ebb0e7e4fb16df25d24ec628e00f..e42b933f732970dd01c22631a5f26a65448dad08 100644
|
| --- a/base/callback_unittest.cc
|
| +++ b/base/callback_unittest.cc
|
| @@ -9,6 +9,7 @@
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace base {
|
| +
|
| namespace {
|
|
|
| class HelperObject {
|
| @@ -26,18 +27,40 @@ struct FakeInvoker {
|
| static void Run(internal::BindStateBase*) {
|
| }
|
| };
|
| +} // namespace
|
| +
|
| +namespace internal {
|
| +template <typename Runnable, typename RunType, typename BoundArgsType>
|
| +struct BindState;
|
|
|
| // White-box testpoints to inject into a Callback<> object for checking
|
| -// comparators and emptiness APIs.
|
| -class FakeBindState1 : public internal::BindStateBase {
|
| +// comparators and emptiness APIs. Use a BindState that is specialized
|
| +// based on a type we declared in the anonymous namespace above to remove any
|
| +// chance of colliding with another instantiation and breaking the
|
| +// one-definition-rule.
|
| +template <>
|
| +struct BindState<void(void), void(void), void(FakeInvoker)>
|
| + : public BindStateBase {
|
| public:
|
| typedef FakeInvoker InvokerType;
|
| };
|
|
|
| -class FakeBindState2 : public internal::BindStateBase {
|
| +template <>
|
| +struct BindState<void(void), void(void),
|
| + void(FakeInvoker, FakeInvoker)>
|
| + : public BindStateBase {
|
| public:
|
| typedef FakeInvoker InvokerType;
|
| };
|
| +} // namespace internal
|
| +
|
| +namespace {
|
| +
|
| +typedef internal::BindState<void(void), void(void), void(FakeInvoker)>
|
| + FakeBindState1;
|
| +typedef internal::BindState<void(void), void(void),
|
| + void(FakeInvoker, FakeInvoker)>
|
| + FakeBindState2;
|
|
|
| TEST(CallbackOld, OneArg) {
|
| HelperObject obj;
|
| @@ -60,8 +83,8 @@ TEST(CallbackOld, ReturnValue) {
|
| class CallbackTest : public ::testing::Test {
|
| public:
|
| CallbackTest()
|
| - : callback_a_(MakeBindStateHolder(new FakeBindState1())),
|
| - callback_b_(MakeBindStateHolder(new FakeBindState2())) {
|
| + : callback_a_(new FakeBindState1()),
|
| + callback_b_(new FakeBindState2()) {
|
| }
|
|
|
| virtual ~CallbackTest() {
|
| @@ -105,8 +128,7 @@ TEST_F(CallbackTest, Equals) {
|
| EXPECT_FALSE(callback_b_.Equals(callback_a_));
|
|
|
| // We should compare based on instance, not type.
|
| - Callback<void(void)> callback_c(
|
| - MakeBindStateHolder(new FakeBindState1()));
|
| + Callback<void(void)> callback_c(new FakeBindState1());
|
| Callback<void(void)> callback_a2 = callback_a_;
|
| EXPECT_TRUE(callback_a_.Equals(callback_a2));
|
| EXPECT_FALSE(callback_a_.Equals(callback_c));
|
|
|