OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/location.h" | |
6 #include "base/task.h" | |
7 #include "base/threading/thread.h" | |
8 #include "chrome_frame/external_tab.h" | 5 #include "chrome_frame/external_tab.h" |
9 | 6 |
10 // #include "base/synchronization/waitable_event.h" | 7 // #include "base/synchronization/waitable_event.h" |
11 | 8 |
| 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" |
| 11 #include "base/location.h" |
| 12 #include "base/threading/thread.h" |
12 #include "chrome/common/automation_messages.h" | 13 #include "chrome/common/automation_messages.h" |
13 #include "chrome_frame/navigation_constraints.h" | 14 #include "chrome_frame/navigation_constraints.h" |
14 #include "chrome_frame/test/chrome_frame_test_utils.h" | 15 #include "chrome_frame/test/chrome_frame_test_utils.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
17 #include "testing/gmock_mutant.h" | 18 #include "testing/gmock_mutant.h" |
18 | 19 |
19 | |
20 | |
21 // DISABLE_RUNNABLE_METHOD_REFCOUNT(ExternalTabProxy); | |
22 // DISABLE_RUNNABLE_METHOD_REFCOUNT(UIDelegate); | |
23 DISABLE_RUNNABLE_METHOD_REFCOUNT(ChromeProxyDelegate); | |
24 | |
25 using testing::StrictMock; | 20 using testing::StrictMock; |
26 using testing::_; | 21 using testing::_; |
27 using testing::Invoke; | 22 using testing::Invoke; |
28 using testing::InvokeWithoutArgs; | 23 using testing::InvokeWithoutArgs; |
29 using testing::CreateFunctor; | 24 using testing::CreateFunctor; |
30 using testing::Return; | 25 using testing::Return; |
31 using testing::DoAll; | 26 using testing::DoAll; |
32 using testing::Field; | 27 using testing::Field; |
33 using chrome_frame_test::TimedMsgLoop; | 28 using chrome_frame_test::TimedMsgLoop; |
34 | 29 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 struct AsyncEventCreator { | 97 struct AsyncEventCreator { |
103 public: | 98 public: |
104 explicit AsyncEventCreator(ChromeProxyDelegate* delegate) | 99 explicit AsyncEventCreator(ChromeProxyDelegate* delegate) |
105 : delegate_(delegate), ipc_thread_("ipc") { | 100 : delegate_(delegate), ipc_thread_("ipc") { |
106 base::Thread::Options options(MessageLoop::TYPE_IO, 0); | 101 base::Thread::Options options(MessageLoop::TYPE_IO, 0); |
107 ipc_thread_.StartWithOptions(options); | 102 ipc_thread_.StartWithOptions(options); |
108 ipc_loop_ = ipc_thread_.message_loop(); | 103 ipc_loop_ = ipc_thread_.message_loop(); |
109 } | 104 } |
110 | 105 |
111 void Fire_Connected(ChromeProxy* proxy, base::TimeDelta delay) { | 106 void Fire_Connected(ChromeProxy* proxy, base::TimeDelta delay) { |
112 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_, | 107 ipc_loop_->PostDelayedTask( |
113 &ChromeProxyDelegate::Connected, proxy), delay.InMilliseconds()); | 108 FROM_HERE, |
| 109 base::Bind(&ChromeProxyDelegate::Connected, base::Unretained(delegate_), |
| 110 proxy), |
| 111 delay.InMilliseconds()); |
114 } | 112 } |
115 | 113 |
116 void Fire_PeerLost(ChromeProxy* proxy, | 114 void Fire_PeerLost(ChromeProxy* proxy, |
117 ChromeProxyDelegate::DisconnectReason reason, base::TimeDelta delay) { | 115 ChromeProxyDelegate::DisconnectReason reason, base::TimeDelta delay) { |
118 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_, | 116 ipc_loop_->PostDelayedTask( |
119 &ChromeProxyDelegate::PeerLost, proxy, reason), delay.InMilliseconds()); | 117 FROM_HERE, |
| 118 base::Bind(&ChromeProxyDelegate::PeerLost, base::Unretained(delegate_), |
| 119 proxy, reason), |
| 120 delay.InMilliseconds()); |
120 } | 121 } |
121 | 122 |
122 void Fire_Disconnected(base::TimeDelta delay) { | 123 void Fire_Disconnected(base::TimeDelta delay) { |
123 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_, | 124 ipc_loop_->PostDelayedTask( |
124 &ChromeProxyDelegate::Disconnected), delay.InMilliseconds()); | 125 FROM_HERE, |
| 126 base::Bind(&ChromeProxyDelegate::Disconnected, |
| 127 base::Unretained(delegate_)), |
| 128 delay.InMilliseconds()); |
125 } | 129 } |
126 | 130 |
127 void Fire_CompletedCreateTab(bool success, HWND chrome_wnd, HWND tab_window, | 131 void Fire_CompletedCreateTab(bool success, HWND chrome_wnd, HWND tab_window, |
128 int tab_handle, int session_id, | 132 int tab_handle, int session_id, |
129 base::TimeDelta delay) { | 133 base::TimeDelta delay) { |
130 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_, | 134 ipc_loop_->PostDelayedTask( |
131 &ChromeProxyDelegate::Completed_CreateTab, success, chrome_wnd, | 135 FROM_HERE, |
132 tab_window, tab_handle, session_id), delay.InMilliseconds()); | 136 base::Bind(&ChromeProxyDelegate::Completed_CreateTab, |
| 137 base::Unretained(delegate_), success, chrome_wnd, tab_window, |
| 138 tab_handle, session_id), |
| 139 delay.InMilliseconds()); |
133 } | 140 } |
134 | 141 |
135 private: | 142 private: |
136 ChromeProxyDelegate* delegate_; | 143 ChromeProxyDelegate* delegate_; |
137 base::Thread ipc_thread_; | 144 base::Thread ipc_thread_; |
138 MessageLoop* ipc_loop_; | 145 MessageLoop* ipc_loop_; |
139 }; | 146 }; |
140 | 147 |
141 // We may want the same test with 'real' proxy and mock 'proxy traits'. | 148 // We may want the same test with 'real' proxy and mock 'proxy traits'. |
142 TEST(ExternalTabProxy, CancelledCreateTab) { | 149 TEST(ExternalTabProxy, CancelledCreateTab) { |
(...skipping 27 matching lines...) Expand all Loading... |
170 CreateTabParams tab_params; | 177 CreateTabParams tab_params; |
171 tab_params.is_incognito = true; | 178 tab_params.is_incognito = true; |
172 tab_params.is_widget_mode = false; | 179 tab_params.is_widget_mode = false; |
173 tab_params.url = GURL("http://Xanadu.org"); | 180 tab_params.url = GURL("http://Xanadu.org"); |
174 | 181 |
175 tab->CreateTab(tab_params, &ui_delegate); | 182 tab->CreateTab(tab_params, &ui_delegate); |
176 loop.RunFor(5); | 183 loop.RunFor(5); |
177 EXPECT_FALSE(loop.WasTimedOut()); | 184 EXPECT_FALSE(loop.WasTimedOut()); |
178 tab.reset(); | 185 tab.reset(); |
179 } | 186 } |
OLD | NEW |