OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 // |
| 5 // Test file for the MessageLoop refactoring clang tool. |
| 6 |
| 7 // Test scaffolding |
| 8 // ------------------------------------------------------------ |
| 9 |
| 10 template <class T> |
| 11 class scoped_refptr { |
| 12 public: |
| 13 T* operator->(); |
| 14 T* get(); |
| 15 }; |
| 16 |
| 17 namespace base { |
| 18 |
| 19 class SingleThreadTaskRunner { |
| 20 public: |
| 21 void PostTask(); |
| 22 void PostDelayedTask(); |
| 23 void PostNonNestableTask(); |
| 24 void PostNonNestableDelayedTask(); |
| 25 }; |
| 26 |
| 27 class MessageLoopProxy : public SingleThreadTaskRunner { |
| 28 public: |
| 29 static scoped_refptr<MessageLoopProxy> current(); |
| 30 }; |
| 31 |
| 32 class MessageLoop { |
| 33 public: |
| 34 void PostTask(); |
| 35 void PostDelayedTask(); |
| 36 void PostNonNestableTask(); |
| 37 void PostNonNestableDelayedTask(); |
| 38 |
| 39 scoped_refptr<SingleThreadTaskRunner> task_runner(); |
| 40 scoped_refptr<MessageLoopProxy> message_loop_proxy(); |
| 41 |
| 42 static MessageLoop* current(); |
| 43 }; |
| 44 |
| 45 class Thread { |
| 46 public: |
| 47 scoped_refptr<SingleThreadTaskRunner> task_runner(); |
| 48 scoped_refptr<MessageLoopProxy> message_loop_proxy(); |
| 49 }; |
| 50 |
| 51 class ThreadTaskRunnerHandle { |
| 52 public: |
| 53 static scoped_refptr<SingleThreadTaskRunner> Get(); |
| 54 }; |
| 55 |
| 56 } // namespace base |
| 57 |
| 58 // Test cases |
| 59 // ------------------------------------------------------------ |
| 60 |
| 61 void TestPostTask() { |
| 62 base::MessageLoop loop; |
| 63 |
| 64 loop.task_runner()->PostTask(); |
| 65 (&loop)->task_runner()->PostDelayedTask(); |
| 66 loop.task_runner()->PostNonNestableTask(); |
| 67 (&loop)->task_runner()->PostNonNestableDelayedTask(); |
| 68 } |
| 69 |
| 70 void TestMessageLoopProxyGetter() { |
| 71 base::MessageLoop loop; |
| 72 |
| 73 loop.task_runner()->PostTask(); |
| 74 } |
| 75 |
| 76 void TestThreadMessageLoopProxyGetter() { |
| 77 base::Thread thread; |
| 78 |
| 79 thread.task_runner()->PostTask(); |
| 80 } |
| 81 |
| 82 void TestMessageLoopProxyCurrent() { |
| 83 base::ThreadTaskRunnerHandle::Get()->PostTask(); |
| 84 } |
| 85 |
| 86 void TestMessageLoopProxyPointer() { |
| 87 base::SingleThreadTaskRunner* task_runner; |
| 88 task_runner->PostTask(); |
| 89 } |
| 90 |
| 91 void TestMessageLoopProxyRefPtr1() { |
| 92 scoped_refptr<base::SingleThreadTaskRunner> task_runner; |
| 93 task_runner->PostTask(); |
| 94 } |
| 95 |
| 96 void TestMessageLoopProxyRefPtr2() { |
| 97 scoped_refptr<base::SingleThreadTaskRunner> task_runner; |
| 98 task_runner->PostTask(); |
| 99 } |
| 100 |
| 101 void TestMessageLoopProxyRefPtr3() { |
| 102 scoped_refptr<base::SingleThreadTaskRunner> task_runner; |
| 103 task_runner->PostTask(); |
| 104 } |
| 105 |
| 106 void Function1(base::SingleThreadTaskRunner* task_runner); |
| 107 void Function2(scoped_refptr<base::SingleThreadTaskRunner> task_runner); |
| 108 |
| 109 class TestClass1 { |
| 110 public: |
| 111 TestClass1() : task_runner_() {} |
| 112 |
| 113 void Post() { task_runner_->PostTask(); } |
| 114 |
| 115 void Method1(base::SingleThreadTaskRunner* task_runner); |
| 116 void Method2(scoped_refptr<base::SingleThreadTaskRunner> task_runner) {} |
| 117 |
| 118 void PassAsParam() { Method2(task_runner_); } |
| 119 |
| 120 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 121 }; |
| 122 |
| 123 class TestClass2 { |
| 124 public: |
| 125 TestClass2() : task_runner_() {} |
| 126 |
| 127 void Post() { task_runner_->PostTask(); } |
| 128 |
| 129 base::SingleThreadTaskRunner* Getter() { |
| 130 return task_runner_; |
| 131 } |
| 132 |
| 133 base::SingleThreadTaskRunner* task_runner_; |
| 134 }; |
| 135 |
| 136 class BaseClass { |
| 137 public: |
| 138 BaseClass(scoped_refptr<base::SingleThreadTaskRunner> task_runner) : task_runn
er_(task_runner) {} |
| 139 |
| 140 private: |
| 141 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 142 }; |
| 143 |
| 144 class TestClass3 : public BaseClass { |
| 145 public: |
| 146 TestClass3(scoped_refptr<base::SingleThreadTaskRunner> task_runner) : BaseClas
s(task_runner) {} |
| 147 }; |
| 148 |
| 149 class TestClass4 { |
| 150 public: |
| 151 TestClass4() : task_runner_(base::ThreadTaskRunnerHandle::Get()) {} |
| 152 |
| 153 scoped_refptr<base::SingleThreadTaskRunner> Getter() { |
| 154 return task_runner_; |
| 155 } |
| 156 |
| 157 void ProxyRef(const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
{ |
| 158 task_runner_ = task_runner; |
| 159 } |
| 160 |
| 161 private: |
| 162 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 163 }; |
| 164 |
| 165 namespace base { |
| 166 |
| 167 void TestMessageLoopProxyRefPtrInBase() { |
| 168 scoped_refptr<SingleThreadTaskRunner> task_runner; |
| 169 } |
| 170 |
| 171 } // namespace base |
OLD | NEW |