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

Side by Side Diff: chrome_frame/external_tab.cc

Issue 8591009: ChromeFrame: Convert TaskMarshallerThroughMessageQueue to new Callback system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes. Created 9 years, 1 month 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/cfproxy_proxy.cc ('k') | chrome_frame/task_marshaller.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) 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/bind.h"
6 #include "base/bind_helpers.h"
5 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
6 #include "base/location.h" 8 #include "base/location.h"
7 #include "chrome_frame/external_tab.h" 9 #include "chrome_frame/external_tab.h"
8 #include "base/task.h" 10 #include "base/task.h"
9 #include "base/synchronization/waitable_event.h" 11 #include "base/synchronization/waitable_event.h"
10 #include "chrome/common/automation_messages.h" 12 #include "chrome/common/automation_messages.h"
11 #include "chrome_frame/chrome_frame_delegate.h" 13 #include "chrome_frame/chrome_frame_delegate.h"
12 #include "chrome_frame/utils.h" 14 #include "chrome_frame/utils.h"
13 15
14 DISABLE_RUNNABLE_METHOD_REFCOUNT(ExternalTabProxy);
15 DISABLE_RUNNABLE_METHOD_REFCOUNT(UIDelegate);
16
17 namespace { 16 namespace {
18 static base::LazyInstance<ChromeProxyFactory> g_proxy_factory = 17 static base::LazyInstance<ChromeProxyFactory> g_proxy_factory =
19 LAZY_INSTANCE_INITIALIZER; 18 LAZY_INSTANCE_INITIALIZER;
20 19
21 struct UserDataHolder : public SyncMessageContext { 20 struct UserDataHolder : public SyncMessageContext {
22 explicit UserDataHolder(void* p) : data(p) {} 21 explicit UserDataHolder(void* p) : data(p) {}
23 void* data; 22 void* data;
24 }; 23 };
25 } 24 }
26 25
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 Init(); 107 Init();
109 ui_delegate_ = delegate; 108 ui_delegate_ = delegate;
110 // TODO(stoyan): Shall we check the CanNavigate(create_params.url)? 109 // TODO(stoyan): Shall we check the CanNavigate(create_params.url)?
111 tab_params_ = create_params; 110 tab_params_ = create_params;
112 state_ = INIT_IN_PROGRESS; 111 state_ = INIT_IN_PROGRESS;
113 proxy_factory_->GetProxy(this, create_params.proxy_params); 112 proxy_factory_->GetProxy(this, create_params.proxy_params);
114 } 113 }
115 114
116 void ExternalTabProxy::Connected(ChromeProxy* proxy) { 115 void ExternalTabProxy::Connected(ChromeProxy* proxy) {
117 // in ipc thread 116 // in ipc thread
118 ui_.PostTask(FROM_HERE, NewRunnableMethod(this, 117 ui_.PostTask(FROM_HERE, base::Bind(&ExternalTabProxy::UiConnected,
119 &ExternalTabProxy::UiConnected, proxy)); 118 base::Unretained(this), proxy));
120 } 119 }
121 120
122 void ExternalTabProxy::UiConnected(ChromeProxy* proxy) { 121 void ExternalTabProxy::UiConnected(ChromeProxy* proxy) {
123 proxy_ = proxy; 122 proxy_ = proxy;
124 ExternalTabSettings settings; 123 ExternalTabSettings settings;
125 settings.parent = m_hWnd; 124 settings.parent = m_hWnd;
126 settings.style = WS_CHILD; 125 settings.style = WS_CHILD;
127 settings.is_incognito = tab_params_.is_incognito; 126 settings.is_incognito = tab_params_.is_incognito;
128 // TODO(stoyan): FIX this. 127 // TODO(stoyan): FIX this.
129 settings.load_requests_via_automation = true; 128 settings.load_requests_via_automation = true;
(...skipping 10 matching lines...) Expand all
140 proxy->CreateTab(this, settings); 139 proxy->CreateTab(this, settings);
141 } 140 }
142 141
143 void ExternalTabProxy::Disconnected() { 142 void ExternalTabProxy::Disconnected() {
144 // in ipc thread 143 // in ipc thread
145 DCHECK(done_.get() != NULL); 144 DCHECK(done_.get() != NULL);
146 done_->Signal(); 145 done_->Signal();
147 } 146 }
148 147
149 void ExternalTabProxy::PeerLost(ChromeProxy* proxy, DisconnectReason reason) { 148 void ExternalTabProxy::PeerLost(ChromeProxy* proxy, DisconnectReason reason) {
150 ui_.PostTask(FROM_HERE, NewRunnableMethod(this, &ExternalTabProxy::UiPeerLost, 149 ui_.PostTask(FROM_HERE, base::Bind(&ExternalTabProxy::UiPeerLost,
151 proxy, reason)); 150 base::Unretained(this), proxy, reason));
152 } 151 }
153 152
154 void ExternalTabProxy::UiPeerLost(ChromeProxy* proxy, DisconnectReason reason) { 153 void ExternalTabProxy::UiPeerLost(ChromeProxy* proxy, DisconnectReason reason) {
155 // TODO(stoyan): 154 // TODO(stoyan):
156 } 155 }
157 156
158 void ExternalTabProxy::Navigate(const std::string& url, 157 void ExternalTabProxy::Navigate(const std::string& url,
159 const std::string& referrer, 158 const std::string& referrer,
160 NavigationConstraints* navigation_constraints) { 159 NavigationConstraints* navigation_constraints) {
161 // in ui thread 160 // in ui thread
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 if (pending_navigation_.url.is_valid()) 223 if (pending_navigation_.url.is_valid())
225 proxy_->Tab_Navigate(tab_, pending_navigation_.url, 224 proxy_->Tab_Navigate(tab_, pending_navigation_.url,
226 pending_navigation_.referrer); 225 pending_navigation_.referrer);
227 } 226 }
228 } 227 }
229 228
230 void ExternalTabProxy::Completed_CreateTab(bool success, HWND chrome_wnd, 229 void ExternalTabProxy::Completed_CreateTab(bool success, HWND chrome_wnd,
231 HWND tab_window, int tab_handle, 230 HWND tab_window, int tab_handle,
232 int session_id) { 231 int session_id) {
233 // in ipc_thread. 232 // in ipc_thread.
234 ui_.PostTask(FROM_HERE, NewRunnableMethod(this, 233 ui_.PostTask(
235 &ExternalTabProxy::UiCompleted_CreateTab, 234 FROM_HERE, base::Bind(&ExternalTabProxy::UiCompleted_CreateTab,
236 success, chrome_wnd, tab_window, tab_handle, session_id)); 235 base::Unretained(this), success, chrome_wnd,
236 tab_window, tab_handle, session_id));
237 } 237 }
238 238
239 void ExternalTabProxy::Completed_ConnectToTab( 239 void ExternalTabProxy::Completed_ConnectToTab(
240 bool success, HWND chrome_window, HWND tab_window, int tab_handle, 240 bool success, HWND chrome_window, HWND tab_window, int tab_handle,
241 int session_id) { 241 int session_id) {
242 CHECK(0); 242 CHECK(0);
243 } 243 }
244 244
245 void ExternalTabProxy::Completed_Navigate( 245 void ExternalTabProxy::Completed_Navigate(
246 bool success, enum AutomationMsg_NavigationResponseValues res) { 246 bool success, enum AutomationMsg_NavigationResponseValues res) {
247 // ipc_thread; 247 // ipc_thread;
248 CHECK(0); 248 CHECK(0);
249 } 249 }
250 250
251 void ExternalTabProxy::OnNavigationStateChanged( 251 void ExternalTabProxy::OnNavigationStateChanged(
252 int flags, const NavigationInfo& nav_info) { 252 int flags, const NavigationInfo& nav_info) {
253 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 253 ui_.PostTask(FROM_HERE,
254 &UIDelegate::OnNavigationStateChanged, flags, nav_info)); 254 base::Bind(&UIDelegate::OnNavigationStateChanged,
255 base::Unretained(ui_delegate_), flags, nav_info));
255 } 256 }
256 257
257 void ExternalTabProxy::OnUpdateTargetUrl(const std::wstring& url) { 258 void ExternalTabProxy::OnUpdateTargetUrl(const std::wstring& url) {
258 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 259 ui_.PostTask(FROM_HERE, base::Bind(&UIDelegate::OnUpdateTargetUrl,
259 &UIDelegate::OnUpdateTargetUrl, url)); 260 base::Unretained(ui_delegate_), url));
260 } 261 }
261 262
262 void ExternalTabProxy::OnTabLoaded(const GURL& url) { 263 void ExternalTabProxy::OnTabLoaded(const GURL& url) {
263 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 264 ui_.PostTask(FROM_HERE, base::Bind(&UIDelegate::OnLoad,
264 &UIDelegate::OnLoad, url)); 265 base::Unretained(ui_delegate_), url));
265 } 266 }
266 267
267 void ExternalTabProxy::OnMoveWindow(const gfx::Rect& pos) { 268 void ExternalTabProxy::OnMoveWindow(const gfx::Rect& pos) {
268 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 269 ui_.PostTask(FROM_HERE, base::Bind(&UIDelegate::OnMoveWindow,
269 &UIDelegate::OnMoveWindow, pos)); 270 base::Unretained(ui_delegate_), pos));
270 } 271 }
271 272
272 void ExternalTabProxy::OnMessageToHost(const std::string& message, 273 void ExternalTabProxy::OnMessageToHost(const std::string& message,
273 const std::string& origin, 274 const std::string& origin,
274 const std::string& target) { 275 const std::string& target) {
275 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 276 ui_.PostTask(
276 &UIDelegate::OnMessageFromChromeFrame, message, origin, target)); 277 FROM_HERE,
278 base::Bind(&UIDelegate::OnMessageFromChromeFrame,
279 base::Unretained(ui_delegate_), message, origin, target));
277 } 280 }
278 281
279 void ExternalTabProxy::OnHandleAccelerator(const MSG& accel_message) { 282 void ExternalTabProxy::OnHandleAccelerator(const MSG& accel_message) {
280 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 283 ui_.PostTask(FROM_HERE,
281 &UIDelegate::OnHandleAccelerator, accel_message)); 284 base::Bind(&UIDelegate::OnHandleAccelerator,
285 base::Unretained(ui_delegate_), accel_message));
282 } 286 }
283 287
284 void ExternalTabProxy::OnHandleContextMenu( 288 void ExternalTabProxy::OnHandleContextMenu(
285 const ContextMenuModel& context_menu_model, 289 const ContextMenuModel& context_menu_model,
286 int align_flags, 290 int align_flags,
287 const MiniContextMenuParams& params) { 291 const MiniContextMenuParams& params) {
288 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 292 ui_.PostTask(FROM_HERE,
289 &UIDelegate::OnHandleContextMenu, context_menu_model, align_flags, 293 base::Bind(&UIDelegate::OnHandleContextMenu,
290 params)); 294 base::Unretained(ui_delegate_), context_menu_model,
295 align_flags, params));
291 } 296 }
292 297
293 void ExternalTabProxy::OnTabbedOut(bool reverse) { 298 void ExternalTabProxy::OnTabbedOut(bool reverse) {
294 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 299 ui_.PostTask(FROM_HERE, base::Bind(&UIDelegate::OnTabbedOut,
295 &UIDelegate::OnTabbedOut, reverse)); 300 base::Unretained(ui_delegate_), reverse));
296 } 301 }
297 302
298 void ExternalTabProxy::OnGoToHistoryOffset(int offset) { 303 void ExternalTabProxy::OnGoToHistoryOffset(int offset) {
299 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 304 ui_.PostTask(FROM_HERE, base::Bind(&UIDelegate::OnGoToHistoryOffset,
300 &UIDelegate::OnGoToHistoryOffset, offset)); 305 base::Unretained(ui_delegate_), offset));
301 } 306 }
302 307
303 void ExternalTabProxy::OnOpenURL(const GURL& url_to_open, const GURL& referrer, 308 void ExternalTabProxy::OnOpenURL(const GURL& url_to_open, const GURL& referrer,
304 int open_disposition) { 309 int open_disposition) {
305 ui_.PostTask(FROM_HERE, NewRunnableMethod(ui_delegate_, 310 ui_.PostTask(
306 &UIDelegate::OnOpenURL, url_to_open, referrer, open_disposition)); 311 FROM_HERE,
312 base::Bind(&UIDelegate::OnOpenURL, base::Unretained(ui_delegate_),
313 url_to_open, referrer, open_disposition));
307 } 314 }
308 315
309 void ExternalTabProxy::OnNavigationFailed(int error_code, const GURL& gurl) { 316 void ExternalTabProxy::OnNavigationFailed(int error_code, const GURL& gurl) {
310 // TODO(stoyan): 317 // TODO(stoyan):
311 } 318 }
312 319
313 void ExternalTabProxy::OnDidNavigate(const NavigationInfo& navigation_info) { 320 void ExternalTabProxy::OnDidNavigate(const NavigationInfo& navigation_info) {
314 // TODO(stoyan): 321 // TODO(stoyan):
315 } 322 }
316 323
(...skipping 24 matching lines...) Expand all
341 } 348 }
342 349
343 void ExternalTabProxy::OnTabClosed() { 350 void ExternalTabProxy::OnTabClosed() {
344 // TODO(stoyan): 351 // TODO(stoyan):
345 } 352 }
346 353
347 void ExternalTabProxy::OnAttachTab( 354 void ExternalTabProxy::OnAttachTab(
348 const AttachExternalTabParams& attach_params) { 355 const AttachExternalTabParams& attach_params) {
349 // TODO(stoyan): 356 // TODO(stoyan):
350 } 357 }
OLDNEW
« no previous file with comments | « chrome_frame/cfproxy_proxy.cc ('k') | chrome_frame/task_marshaller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698