Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(296)

Side by Side Diff: chrome_frame/external_tab_test.cc

Issue 5998006: Clean up Automation and Chrome Frame IPC code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome_frame/external_tab.cc ('k') | chrome_frame/npapi_url_request.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome_frame/external_tab.h" 5 #include "chrome_frame/external_tab.h"
6 #include "base/task.h" 6 #include "base/task.h"
7 #include "base/thread.h" 7 #include "base/thread.h"
8 #include "base/tracked.h" 8 #include "base/tracked.h"
9 9
10 // #include "base/waitable_event.h" 10 // #include "base/waitable_event.h"
(...skipping 16 matching lines...) Expand all
27 using testing::Invoke; 27 using testing::Invoke;
28 using testing::InvokeWithoutArgs; 28 using testing::InvokeWithoutArgs;
29 using testing::CreateFunctor; 29 using testing::CreateFunctor;
30 using testing::Return; 30 using testing::Return;
31 using testing::DoAll; 31 using testing::DoAll;
32 using testing::Field; 32 using testing::Field;
33 using chrome_frame_test::TimedMsgLoop; 33 using chrome_frame_test::TimedMsgLoop;
34 34
35 struct MockUIDelegate : public UIDelegate { 35 struct MockUIDelegate : public UIDelegate {
36 MOCK_METHOD2(OnNavigationStateChanged, void(int flags, 36 MOCK_METHOD2(OnNavigationStateChanged, void(int flags,
37 const IPC::NavigationInfo& nav_info)); 37 const NavigationInfo& nav_info));
38 MOCK_METHOD1(OnUpdateTargetUrl, void(const std::wstring& new_target_url)); 38 MOCK_METHOD1(OnUpdateTargetUrl, void(const std::wstring& new_target_url));
39 MOCK_METHOD3(OnExtensionInstalled, void(const FilePath& path, void* user_data, 39 MOCK_METHOD3(OnExtensionInstalled, void(const FilePath& path, void* user_data,
40 AutomationMsg_ExtensionResponseValues response)); 40 AutomationMsg_ExtensionResponseValues response));
41 MOCK_METHOD1(OnLoad, void(const GURL& url)); 41 MOCK_METHOD1(OnLoad, void(const GURL& url));
42 MOCK_METHOD3(OnMessageFromChromeFrame, void(const std::string& message, 42 MOCK_METHOD3(OnMessageFromChromeFrame, void(const std::string& message,
43 const std::string& origin, const std::string& target)); 43 const std::string& origin, const std::string& target));
44 MOCK_METHOD3(OnHandleContextMenu, void(HANDLE menu_handle, int align_flags, 44 MOCK_METHOD3(OnHandleContextMenu, void(HANDLE menu_handle, int align_flags,
45 const IPC::MiniContextMenuParams& params)); 45 const MiniContextMenuParams& params));
46 MOCK_METHOD1(OnHandleAccelerator, void(const MSG& accel_message)); 46 MOCK_METHOD1(OnHandleAccelerator, void(const MSG& accel_message));
47 MOCK_METHOD1(OnTabbedOut, void(bool reverse)); 47 MOCK_METHOD1(OnTabbedOut, void(bool reverse));
48 MOCK_METHOD1(OnGoToHistoryOffset, void(int offset)); 48 MOCK_METHOD1(OnGoToHistoryOffset, void(int offset));
49 MOCK_METHOD3(OnOpenURL, void(const GURL& url_to_open, const GURL& referrer, 49 MOCK_METHOD3(OnOpenURL, void(const GURL& url_to_open, const GURL& referrer,
50 int open_disposition)); 50 int open_disposition));
51 }; 51 };
52 52
53 struct MockProxy : public ChromeProxy { 53 struct MockProxy : public ChromeProxy {
54 MOCK_METHOD1(RemoveBrowsingData, void(int remove_mask)); 54 MOCK_METHOD1(RemoveBrowsingData, void(int remove_mask));
55 MOCK_METHOD3(InstallExtension, void(ChromeProxyDelegate* delegate, 55 MOCK_METHOD3(InstallExtension, void(ChromeProxyDelegate* delegate,
56 const FilePath& crx_path, SyncMessageContext* ctx)); 56 const FilePath& crx_path, SyncMessageContext* ctx));
57 MOCK_METHOD3(LoadExtension, void(ChromeProxyDelegate* delegate, 57 MOCK_METHOD3(LoadExtension, void(ChromeProxyDelegate* delegate,
58 const FilePath& path, SyncMessageContext* ctx)); 58 const FilePath& path, SyncMessageContext* ctx));
59 MOCK_METHOD2(GetEnabledExtensions, void(ChromeProxyDelegate* delegate, 59 MOCK_METHOD2(GetEnabledExtensions, void(ChromeProxyDelegate* delegate,
60 SyncMessageContext* ctx)); 60 SyncMessageContext* ctx));
61 MOCK_METHOD1(SetProxyConfig, void(const std::string& json_encoded_settings)); 61 MOCK_METHOD1(SetProxyConfig, void(const std::string& json_encoded_settings));
62 62
63 MOCK_METHOD2(CreateTab, void(ChromeProxyDelegate* delegate, 63 MOCK_METHOD2(CreateTab, void(ChromeProxyDelegate* delegate,
64 const IPC::ExternalTabSettings& settings)); 64 const ExternalTabSettings& settings));
65 MOCK_METHOD3(ConnectTab, void(ChromeProxyDelegate* delegate, HWND hwnd, 65 MOCK_METHOD3(ConnectTab, void(ChromeProxyDelegate* delegate, HWND hwnd,
66 uint64 cookie)); 66 uint64 cookie));
67 MOCK_METHOD1(BlockTab, void(uint64 cookie)); 67 MOCK_METHOD1(BlockTab, void(uint64 cookie));
68 68
69 MOCK_METHOD4(Tab_PostMessage, void(int tab, const std::string& message, 69 MOCK_METHOD4(Tab_PostMessage, void(int tab, const std::string& message,
70 const std::string& origin, const std::string& target)); 70 const std::string& origin, const std::string& target));
71 MOCK_METHOD1(Tab_Reload, void(int tab)); 71 MOCK_METHOD1(Tab_Reload, void(int tab));
72 MOCK_METHOD1(Tab_Stop, void(int tab)); 72 MOCK_METHOD1(Tab_Stop, void(int tab));
73 MOCK_METHOD1(Tab_SaveAs, void(int tab)); 73 MOCK_METHOD1(Tab_SaveAs, void(int tab));
74 MOCK_METHOD1(Tab_Print, void(int tab)); 74 MOCK_METHOD1(Tab_Print, void(int tab));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 } 134 }
135 135
136 void Fire_CompletedCreateTab(bool success, HWND chrome_wnd, HWND tab_window, 136 void Fire_CompletedCreateTab(bool success, HWND chrome_wnd, HWND tab_window,
137 int tab_handle, int session_id, 137 int tab_handle, int session_id,
138 base::TimeDelta delay) { 138 base::TimeDelta delay) {
139 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_, 139 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_,
140 &ChromeProxyDelegate::Completed_CreateTab, success, chrome_wnd, 140 &ChromeProxyDelegate::Completed_CreateTab, success, chrome_wnd,
141 tab_window, tab_handle, session_id), delay.InMilliseconds()); 141 tab_window, tab_handle, session_id), delay.InMilliseconds());
142 } 142 }
143 143
144 void Fire_TabLoaded(const GURL& url, base::TimeDelta delay) {
145 ipc_loop_->PostDelayedTask(FROM_HERE, NewRunnableMethod(delegate_,
146 &ChromeProxyDelegate::TabLoaded, url), delay.InMilliseconds());
147 }
148
149 private: 144 private:
150 ChromeProxyDelegate* delegate_; 145 ChromeProxyDelegate* delegate_;
151 base::Thread ipc_thread_; 146 base::Thread ipc_thread_;
152 MessageLoop* ipc_loop_; 147 MessageLoop* ipc_loop_;
153 }; 148 };
154 149
155 // We may want the same test with 'real' proxy and mock 'proxy traits'. 150 // We may want the same test with 'real' proxy and mock 'proxy traits'.
156 TEST(ExternalTabProxy, CancelledCreateTab) { 151 TEST(ExternalTabProxy, CancelledCreateTab) {
157 MockUIDelegate ui_delegate; 152 MockUIDelegate ui_delegate;
158 StrictMock<MockFactory> factory; 153 StrictMock<MockFactory> factory;
(...skipping 25 matching lines...) Expand all
184 CreateTabParams tab_params; 179 CreateTabParams tab_params;
185 tab_params.is_incognito = true; 180 tab_params.is_incognito = true;
186 tab_params.is_widget_mode = false; 181 tab_params.is_widget_mode = false;
187 tab_params.url = GURL("http://Xanadu.org"); 182 tab_params.url = GURL("http://Xanadu.org");
188 183
189 tab->CreateTab(tab_params, &ui_delegate); 184 tab->CreateTab(tab_params, &ui_delegate);
190 loop.RunFor(5); 185 loop.RunFor(5);
191 EXPECT_FALSE(loop.WasTimedOut()); 186 EXPECT_FALSE(loop.WasTimedOut());
192 tab.reset(); 187 tab.reset();
193 } 188 }
194
195 // CreateTab with initial url, and the navigate to different url before
196 // initialization completes.
197 TEST(ExternalTabProxy, NavigateAfterCreate) {
198 MockUIDelegate ui_delegate;
199 StrictMock<MockFactory> factory;
200 scoped_ptr<ExternalTabProxy> tab(new ExternalTabProxy());
201 AsyncEventCreator async_events(tab.get());
202 StrictMock<MockProxy>* proxy = new StrictMock<MockProxy>();
203 TimedMsgLoop loop;
204 tab->set_proxy_factory(&factory);
205 GURL initial_url("http://Xanadu.org");
206 GURL real_url("http://asgard.org");
207
208 EXPECT_CALL(factory, CreateProxy()).WillOnce(Return(proxy));
209 EXPECT_CALL(*proxy, Init(_));
210 EXPECT_CALL(*proxy, AddDelegate(tab.get()))
211 .WillOnce(DoAll(InvokeWithoutArgs(CreateFunctor(&async_events,
212 &AsyncEventCreator::Fire_Connected, proxy,
213 base::TimeDelta::FromMilliseconds(30))),
214 Return(1)));
215
216 EXPECT_CALL(*proxy, CreateTab(tab.get(),
217 Field(&IPC::ExternalTabSettings::initial_url, real_url)))
218 .WillOnce(DoAll(
219 InvokeWithoutArgs(CreateFunctor(&async_events,
220 &AsyncEventCreator::Fire_CompletedCreateTab,
221 true, HWND(0), HWND(0), 7, 0, base::TimeDelta::FromMilliseconds(9))),
222 InvokeWithoutArgs(CreateFunctor(&async_events,
223 &AsyncEventCreator::Fire_TabLoaded, real_url,
224 base::TimeDelta::FromMilliseconds(150)))));
225
226 EXPECT_CALL(ui_delegate, OnLoad(real_url))
227 .WillOnce(QUIT_LOOP(loop));
228
229 EXPECT_CALL(*proxy, RemoveDelegate(_))
230 .WillOnce(DoAll(InvokeWithoutArgs(CreateFunctor(&async_events,
231 &AsyncEventCreator::Fire_Disconnected,
232 base::TimeDelta::FromMilliseconds(0))),
233 Return(0)));
234
235 CreateTabParams tab_params;
236 tab_params.is_incognito = true;
237 tab_params.is_widget_mode = false;
238 tab_params.url = initial_url;
239
240 NavigationConstraintsImpl navigation_constraints;
241
242 tab->CreateTab(tab_params, &ui_delegate);
243 tab->Navigate("http://asgard.org", EmptyString(),
244 &navigation_constraints);
245
246 loop.RunFor(5);
247 EXPECT_FALSE(loop.WasTimedOut());
248 tab.reset();
249 }
OLDNEW
« no previous file with comments | « chrome_frame/external_tab.cc ('k') | chrome_frame/npapi_url_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698