| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 : m_value(value) | 71 : m_value(value) |
| 72 { | 72 { |
| 73 } | 73 } |
| 74 | 74 |
| 75 UnwrappedClass unwrap() const { return UnwrappedClass(m_value); } | 75 UnwrappedClass unwrap() const { return UnwrappedClass(m_value); } |
| 76 | 76 |
| 77 private: | 77 private: |
| 78 int m_value; | 78 int m_value; |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 UnwrappedClass Unwrap(const WrappedClass& wrapped) | |
| 82 { | |
| 83 return wrapped.unwrap(); | |
| 84 } | |
| 85 | |
| 86 template<> struct ParamStorageTraits<ClassToBeWrapped> { | 81 template<> struct ParamStorageTraits<ClassToBeWrapped> { |
| 87 using StorageType = WrappedClass; | 82 using StorageType = WrappedClass; |
| 88 }; | 83 }; |
| 89 | 84 |
| 90 class HasWeakPtrSupport { | 85 class HasWeakPtrSupport { |
| 91 public: | 86 public: |
| 92 HasWeakPtrSupport() : m_weakPtrFactory(this) {} | 87 HasWeakPtrSupport() : m_weakPtrFactory(this) {} |
| 93 | 88 |
| 94 WTF::WeakPtr<HasWeakPtrSupport> createWeakPtr() { | 89 WTF::WeakPtr<HasWeakPtrSupport> createWeakPtr() { |
| 95 return m_weakPtrFactory.createWeakPtr(); | 90 return m_weakPtrFactory.createWeakPtr(); |
| 96 } | 91 } |
| 97 | 92 |
| 98 void revokeAll() | 93 void revokeAll() |
| 99 { | 94 { |
| 100 m_weakPtrFactory.revokeAll(); | 95 m_weakPtrFactory.revokeAll(); |
| 101 } | 96 } |
| 102 | 97 |
| 103 void increment(int* counter) | 98 void increment(int* counter) |
| 104 { | 99 { |
| 105 ++*counter; | 100 ++*counter; |
| 106 } | 101 } |
| 107 | 102 |
| 108 private: | 103 private: |
| 109 WTF::WeakPtrFactory<HasWeakPtrSupport> m_weakPtrFactory; | 104 WTF::WeakPtrFactory<HasWeakPtrSupport> m_weakPtrFactory; |
| 110 }; | 105 }; |
| 111 | 106 |
| 107 } // namespace WTF |
| 108 |
| 109 namespace base { |
| 110 |
| 111 template <> |
| 112 struct BindUnwrapTraits<WTF::WrappedClass> { |
| 113 static WTF::UnwrappedClass Unwrap(const WTF::WrappedClass& wrapped) |
| 114 { |
| 115 return wrapped.unwrap(); |
| 116 } |
| 117 }; |
| 118 |
| 119 } // namespace base |
| 120 |
| 121 namespace WTF { |
| 112 namespace { | 122 namespace { |
| 113 | 123 |
| 114 int returnFortyTwo() | 124 int returnFortyTwo() |
| 115 { | 125 { |
| 116 return 42; | 126 return 42; |
| 117 } | 127 } |
| 118 | 128 |
| 119 TEST(FunctionalTest, Basic) | 129 TEST(FunctionalTest, Basic) |
| 120 { | 130 { |
| 121 std::unique_ptr<Function<int()>> returnFortyTwoFunction = bind(returnFortyTw
o); | 131 std::unique_ptr<Function<int()>> returnFortyTwoFunction = bind(returnFortyTw
o); |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 EXPECT_EQ(1, counter); | 592 EXPECT_EQ(1, counter); |
| 583 | 593 |
| 584 obj.revokeAll(); | 594 obj.revokeAll(); |
| 585 (*bound)(); | 595 (*bound)(); |
| 586 EXPECT_EQ(1, counter); | 596 EXPECT_EQ(1, counter); |
| 587 } | 597 } |
| 588 | 598 |
| 589 } // anonymous namespace | 599 } // anonymous namespace |
| 590 | 600 |
| 591 } // namespace WTF | 601 } // namespace WTF |
| OLD | NEW |