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

Side by Side Diff: chrome_frame/test/ie_event_sink.cc

Issue 6825055: Include base/win/scoped_comptr.h instead of base/scoped_comptr_win.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: revert bad indentation, rebase Created 9 years, 8 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/test/ie_event_sink.h ('k') | chrome_frame/test/mock_ie_event_sink_actions.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 "chrome_frame/test/ie_event_sink.h" 5 #include "chrome_frame/test/ie_event_sink.h"
6 6
7 #include <shlguid.h> 7 #include <shlguid.h>
8 #include <shobjidl.h> 8 #include <shobjidl.h>
9 9
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 chrome_frame_test::KillProcesses(chrome_frame_test::kIEImageName, 0, 167 chrome_frame_test::KillProcesses(chrome_frame_test::kIEImageName, 0,
168 !abnormal_shutdown_); 168 !abnormal_shutdown_);
169 chrome_frame_test::KillProcesses(chrome_frame_test::kIEBrokerImageName, 0, 169 chrome_frame_test::KillProcesses(chrome_frame_test::kIEBrokerImageName, 0,
170 !abnormal_shutdown_); 170 !abnormal_shutdown_);
171 } 171 }
172 172
173 bool IEEventSink::IsCFRendering() { 173 bool IEEventSink::IsCFRendering() {
174 DCHECK(web_browser2_); 174 DCHECK(web_browser2_);
175 175
176 if (web_browser2_) { 176 if (web_browser2_) {
177 ScopedComPtr<IDispatch> doc; 177 base::win::ScopedComPtr<IDispatch> doc;
178 web_browser2_->get_Document(doc.Receive()); 178 web_browser2_->get_Document(doc.Receive());
179 if (doc) { 179 if (doc) {
180 // Detect if CF is rendering based on whether the document is a 180 // Detect if CF is rendering based on whether the document is a
181 // ChromeActiveDocument. Detecting based on hwnd is problematic as 181 // ChromeActiveDocument. Detecting based on hwnd is problematic as
182 // the CF Active Document window may not have been created yet. 182 // the CF Active Document window may not have been created yet.
183 ScopedComPtr<IChromeFrame> chrome_frame; 183 base::win::ScopedComPtr<IChromeFrame> chrome_frame;
184 chrome_frame.QueryFrom(doc); 184 chrome_frame.QueryFrom(doc);
185 return chrome_frame.get(); 185 return chrome_frame.get();
186 } 186 }
187 } 187 }
188 return false; 188 return false;
189 } 189 }
190 190
191 void IEEventSink::PostMessageToCF(const std::wstring& message, 191 void IEEventSink::PostMessageToCF(const std::wstring& message,
192 const std::wstring& target) { 192 const std::wstring& target) {
193 EXPECT_TRUE(chrome_frame_ != NULL); 193 EXPECT_TRUE(chrome_frame_ != NULL);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 if (web_browser2_) { 234 if (web_browser2_) {
235 ScopedBstr address_bar_url; 235 ScopedBstr address_bar_url;
236 EXPECT_EQ(S_OK, web_browser2_->get_LocationURL(address_bar_url.Receive())); 236 EXPECT_EQ(S_OK, web_browser2_->get_LocationURL(address_bar_url.Receive()));
237 EXPECT_EQ(expected_url, std::wstring(address_bar_url)); 237 EXPECT_EQ(expected_url, std::wstring(address_bar_url));
238 } 238 }
239 } 239 }
240 240
241 void IEEventSink::Exec(const GUID* cmd_group_guid, DWORD command_id, 241 void IEEventSink::Exec(const GUID* cmd_group_guid, DWORD command_id,
242 DWORD cmd_exec_opt, VARIANT* in_args, 242 DWORD cmd_exec_opt, VARIANT* in_args,
243 VARIANT* out_args) { 243 VARIANT* out_args) {
244 ScopedComPtr<IOleCommandTarget> shell_browser_cmd_target; 244 base::win::ScopedComPtr<IOleCommandTarget> shell_browser_cmd_target;
245 DoQueryService(SID_STopLevelBrowser, web_browser2_, 245 DoQueryService(SID_STopLevelBrowser, web_browser2_,
246 shell_browser_cmd_target.Receive()); 246 shell_browser_cmd_target.Receive());
247 ASSERT_TRUE(NULL != shell_browser_cmd_target); 247 ASSERT_TRUE(NULL != shell_browser_cmd_target);
248 EXPECT_HRESULT_SUCCEEDED(shell_browser_cmd_target->Exec(cmd_group_guid, 248 EXPECT_HRESULT_SUCCEEDED(shell_browser_cmd_target->Exec(cmd_group_guid,
249 command_id, cmd_exec_opt, in_args, out_args)); 249 command_id, cmd_exec_opt, in_args, out_args));
250 } 250 }
251 251
252 HWND IEEventSink::GetBrowserWindow() { 252 HWND IEEventSink::GetBrowserWindow() {
253 HWND browser_window = NULL; 253 HWND browser_window = NULL;
254 web_browser2_->get_HWND(reinterpret_cast<SHANDLE_PTR*>(&browser_window)); 254 web_browser2_->get_HWND(reinterpret_cast<SHANDLE_PTR*>(&browser_window));
255 EXPECT_TRUE(::IsWindow(browser_window)); 255 EXPECT_TRUE(::IsWindow(browser_window));
256 return browser_window; 256 return browser_window;
257 } 257 }
258 258
259 HWND IEEventSink::GetRendererWindow() { 259 HWND IEEventSink::GetRendererWindow() {
260 HWND renderer_window = NULL; 260 HWND renderer_window = NULL;
261 if (IsCFRendering()) { 261 if (IsCFRendering()) {
262 DCHECK(chrome_frame_); 262 DCHECK(chrome_frame_);
263 ScopedComPtr<IOleWindow> ole_window; 263 base::win::ScopedComPtr<IOleWindow> ole_window;
264 ole_window.QueryFrom(chrome_frame_); 264 ole_window.QueryFrom(chrome_frame_);
265 EXPECT_TRUE(ole_window.get()); 265 EXPECT_TRUE(ole_window.get());
266 266
267 if (ole_window) { 267 if (ole_window) {
268 HWND activex_window = NULL; 268 HWND activex_window = NULL;
269 ole_window->GetWindow(&activex_window); 269 ole_window->GetWindow(&activex_window);
270 EXPECT_TRUE(IsWindow(activex_window)); 270 EXPECT_TRUE(IsWindow(activex_window));
271 271
272 wchar_t class_name[MAX_PATH] = {0}; 272 wchar_t class_name[MAX_PATH] = {0};
273 HWND child_window = NULL; 273 HWND child_window = NULL;
274 // chrome tab window is the first (and the only) child of activex 274 // chrome tab window is the first (and the only) child of activex
275 for (HWND first_child = activex_window; ::IsWindow(first_child); 275 for (HWND first_child = activex_window; ::IsWindow(first_child);
276 first_child = ::GetWindow(first_child, GW_CHILD)) { 276 first_child = ::GetWindow(first_child, GW_CHILD)) {
277 child_window = first_child; 277 child_window = first_child;
278 GetClassName(child_window, class_name, arraysize(class_name)); 278 GetClassName(child_window, class_name, arraysize(class_name));
279 if (!_wcsicmp(class_name, L"Chrome_RenderWidgetHostHWND")) { 279 if (!_wcsicmp(class_name, L"Chrome_RenderWidgetHostHWND")) {
280 renderer_window = child_window; 280 renderer_window = child_window;
281 break; 281 break;
282 } 282 }
283 } 283 }
284 } 284 }
285 } else { 285 } else {
286 DCHECK(web_browser2_); 286 DCHECK(web_browser2_);
287 ScopedComPtr<IDispatch> doc; 287 base::win::ScopedComPtr<IDispatch> doc;
288 HRESULT hr = web_browser2_->get_Document(doc.Receive()); 288 HRESULT hr = web_browser2_->get_Document(doc.Receive());
289 EXPECT_HRESULT_SUCCEEDED(hr); 289 EXPECT_HRESULT_SUCCEEDED(hr);
290 EXPECT_TRUE(doc); 290 EXPECT_TRUE(doc);
291 if (doc) { 291 if (doc) {
292 ScopedComPtr<IOleWindow> ole_window; 292 base::win::ScopedComPtr<IOleWindow> ole_window;
293 ole_window.QueryFrom(doc); 293 ole_window.QueryFrom(doc);
294 EXPECT_TRUE(ole_window); 294 EXPECT_TRUE(ole_window);
295 if (ole_window) { 295 if (ole_window) {
296 ole_window->GetWindow(&renderer_window); 296 ole_window->GetWindow(&renderer_window);
297 } 297 }
298 } 298 }
299 } 299 }
300 300
301 EXPECT_TRUE(::IsWindow(renderer_window)); 301 EXPECT_TRUE(::IsWindow(renderer_window));
302 return renderer_window; 302 return renderer_window;
303 } 303 }
304 304
305 HWND IEEventSink::GetRendererWindowSafe() { 305 HWND IEEventSink::GetRendererWindowSafe() {
306 HWND renderer_window = NULL; 306 HWND renderer_window = NULL;
307 if (IsCFRendering()) { 307 if (IsCFRendering()) {
308 DCHECK(chrome_frame_); 308 DCHECK(chrome_frame_);
309 ScopedComPtr<IOleWindow> ole_window; 309 base::win::ScopedComPtr<IOleWindow> ole_window;
310 ole_window.QueryFrom(chrome_frame_); 310 ole_window.QueryFrom(chrome_frame_);
311 311
312 if (ole_window) { 312 if (ole_window) {
313 HWND activex_window = NULL; 313 HWND activex_window = NULL;
314 ole_window->GetWindow(&activex_window); 314 ole_window->GetWindow(&activex_window);
315 315
316 // chrome tab window is the first (and the only) child of activex 316 // chrome tab window is the first (and the only) child of activex
317 for (HWND first_child = activex_window; ::IsWindow(first_child); 317 for (HWND first_child = activex_window; ::IsWindow(first_child);
318 first_child = ::GetWindow(first_child, GW_CHILD)) { 318 first_child = ::GetWindow(first_child, GW_CHILD)) {
319 renderer_window = first_child; 319 renderer_window = first_child;
320 } 320 }
321 wchar_t class_name[MAX_PATH] = {0}; 321 wchar_t class_name[MAX_PATH] = {0};
322 GetClassName(renderer_window, class_name, arraysize(class_name)); 322 GetClassName(renderer_window, class_name, arraysize(class_name));
323 if (_wcsicmp(class_name, L"Chrome_RenderWidgetHostHWND") != 0) 323 if (_wcsicmp(class_name, L"Chrome_RenderWidgetHostHWND") != 0)
324 renderer_window = NULL; 324 renderer_window = NULL;
325 } 325 }
326 } else { 326 } else {
327 DCHECK(web_browser2_); 327 DCHECK(web_browser2_);
328 ScopedComPtr<IDispatch> doc; 328 base::win::ScopedComPtr<IDispatch> doc;
329 web_browser2_->get_Document(doc.Receive()); 329 web_browser2_->get_Document(doc.Receive());
330 if (doc) { 330 if (doc) {
331 ScopedComPtr<IOleWindow> ole_window; 331 base::win::ScopedComPtr<IOleWindow> ole_window;
332 ole_window.QueryFrom(doc); 332 ole_window.QueryFrom(doc);
333 if (ole_window) { 333 if (ole_window) {
334 ole_window->GetWindow(&renderer_window); 334 ole_window->GetWindow(&renderer_window);
335 } 335 }
336 } 336 }
337 } 337 }
338 if (!::IsWindow(renderer_window)) 338 if (!::IsWindow(renderer_window))
339 renderer_window = NULL; 339 renderer_window = NULL;
340 return renderer_window; 340 return renderer_window;
341 } 341 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 void IEEventSink::Refresh() { 375 void IEEventSink::Refresh() {
376 base::win::ScopedVariant refresh_level(REFRESH_COMPLETELY); 376 base::win::ScopedVariant refresh_level(REFRESH_COMPLETELY);
377 web_browser2_->Refresh2(refresh_level.AsInput()); 377 web_browser2_->Refresh2(refresh_level.AsInput());
378 } 378 }
379 379
380 // private methods 380 // private methods
381 void IEEventSink::ConnectToChromeFrame() { 381 void IEEventSink::ConnectToChromeFrame() {
382 DCHECK(web_browser2_); 382 DCHECK(web_browser2_);
383 if (chrome_frame_.get()) 383 if (chrome_frame_.get())
384 return; 384 return;
385 ScopedComPtr<IShellBrowser> shell_browser; 385 base::win::ScopedComPtr<IShellBrowser> shell_browser;
386 DoQueryService(SID_STopLevelBrowser, web_browser2_, 386 DoQueryService(SID_STopLevelBrowser, web_browser2_,
387 shell_browser.Receive()); 387 shell_browser.Receive());
388 388
389 if (shell_browser) { 389 if (shell_browser) {
390 ScopedComPtr<IShellView> shell_view; 390 base::win::ScopedComPtr<IShellView> shell_view;
391 shell_browser->QueryActiveShellView(shell_view.Receive()); 391 shell_browser->QueryActiveShellView(shell_view.Receive());
392 if (shell_view) { 392 if (shell_view) {
393 shell_view->GetItemObject(SVGIO_BACKGROUND, __uuidof(IChromeFrame), 393 shell_view->GetItemObject(SVGIO_BACKGROUND, __uuidof(IChromeFrame),
394 reinterpret_cast<void**>(chrome_frame_.Receive())); 394 reinterpret_cast<void**>(chrome_frame_.Receive()));
395 } 395 }
396 396
397 if (chrome_frame_) { 397 if (chrome_frame_) {
398 base::win::ScopedVariant onmessage(onmessage_.ToDispatch()); 398 base::win::ScopedVariant onmessage(onmessage_.ToDispatch());
399 base::win::ScopedVariant onloaderror(onloaderror_.ToDispatch()); 399 base::win::ScopedVariant onloaderror(onloaderror_.ToDispatch());
400 base::win::ScopedVariant onload(onload_.ToDispatch()); 400 base::win::ScopedVariant onload(onload_.ToDispatch());
401 EXPECT_HRESULT_SUCCEEDED(chrome_frame_->put_onmessage(onmessage)); 401 EXPECT_HRESULT_SUCCEEDED(chrome_frame_->put_onmessage(onmessage));
402 EXPECT_HRESULT_SUCCEEDED(chrome_frame_->put_onloaderror(onloaderror)); 402 EXPECT_HRESULT_SUCCEEDED(chrome_frame_->put_onloaderror(onloaderror));
403 EXPECT_HRESULT_SUCCEEDED(chrome_frame_->put_onload(onload)); 403 EXPECT_HRESULT_SUCCEEDED(chrome_frame_->put_onload(onload));
404 } 404 }
405 } 405 }
406 } 406 }
407 407
408 void IEEventSink::DisconnectFromChromeFrame() { 408 void IEEventSink::DisconnectFromChromeFrame() {
409 if (chrome_frame_) { 409 if (chrome_frame_) {
410 // Use a local ref counted copy of the IChromeFrame interface as the 410 // Use a local ref counted copy of the IChromeFrame interface as the
411 // outgoing calls could cause the interface to be deleted due to a message 411 // outgoing calls could cause the interface to be deleted due to a message
412 // pump running in the context of the outgoing call. 412 // pump running in the context of the outgoing call.
413 ScopedComPtr<IChromeFrame> chrome_frame(chrome_frame_); 413 base::win::ScopedComPtr<IChromeFrame> chrome_frame(chrome_frame_);
414 chrome_frame_.Release(); 414 chrome_frame_.Release();
415 base::win::ScopedVariant dummy(static_cast<IDispatch*>(NULL)); 415 base::win::ScopedVariant dummy(static_cast<IDispatch*>(NULL));
416 chrome_frame->put_onmessage(dummy); 416 chrome_frame->put_onmessage(dummy);
417 chrome_frame->put_onload(dummy); 417 chrome_frame->put_onload(dummy);
418 chrome_frame->put_onloaderror(dummy); 418 chrome_frame->put_onloaderror(dummy);
419 } 419 }
420 } 420 }
421 421
422 void IEEventSink::FindIEProcessId() { 422 void IEEventSink::FindIEProcessId() {
423 HWND hwnd = NULL; 423 HWND hwnd = NULL;
(...skipping 19 matching lines...) Expand all
443 return; 443 return;
444 444
445 if (listener_) 445 if (listener_)
446 listener_->OnNewWindow2(dispatch, s); 446 listener_->OnNewWindow2(dispatch, s);
447 447
448 // Note that |dispatch| is an [in/out] argument. IE is asking listeners if 448 // Note that |dispatch| is an [in/out] argument. IE is asking listeners if
449 // they want to use a IWebBrowser2 of their choice for the new window. 449 // they want to use a IWebBrowser2 of their choice for the new window.
450 // Since we need to listen on events on the new browser, we create one 450 // Since we need to listen on events on the new browser, we create one
451 // if needed. 451 // if needed.
452 if (!*dispatch) { 452 if (!*dispatch) {
453 ScopedComPtr<IDispatch> new_browser; 453 base::win::ScopedComPtr<IDispatch> new_browser;
454 HRESULT hr = new_browser.CreateInstance(CLSID_InternetExplorer, NULL, 454 HRESULT hr = new_browser.CreateInstance(CLSID_InternetExplorer, NULL,
455 CLSCTX_LOCAL_SERVER); 455 CLSCTX_LOCAL_SERVER);
456 DCHECK(SUCCEEDED(hr) && new_browser); 456 DCHECK(SUCCEEDED(hr) && new_browser);
457 *dispatch = new_browser.Detach(); 457 *dispatch = new_browser.Detach();
458 } 458 }
459 459
460 if (*dispatch && listener_) 460 if (*dispatch && listener_)
461 listener_->OnNewBrowserWindow(*dispatch, ScopedBstr()); 461 listener_->OnNewBrowserWindow(*dispatch, ScopedBstr());
462 } 462 }
463 463
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 return; 521 return;
522 522
523 if (listener_) 523 if (listener_)
524 listener_->OnNewWindow3(dispatch, cancel, flags, url_context, url); 524 listener_->OnNewWindow3(dispatch, cancel, flags, url_context, url);
525 525
526 // Note that |dispatch| is an [in/out] argument. IE is asking listeners if 526 // Note that |dispatch| is an [in/out] argument. IE is asking listeners if
527 // they want to use a IWebBrowser2 of their choice for the new window. 527 // they want to use a IWebBrowser2 of their choice for the new window.
528 // Since we need to listen on events on the new browser, we create one 528 // Since we need to listen on events on the new browser, we create one
529 // if needed. 529 // if needed.
530 if (!*dispatch) { 530 if (!*dispatch) {
531 ScopedComPtr<IDispatch> new_browser; 531 base::win::ScopedComPtr<IDispatch> new_browser;
532 HRESULT hr = new_browser.CreateInstance(CLSID_InternetExplorer, NULL, 532 HRESULT hr = new_browser.CreateInstance(CLSID_InternetExplorer, NULL,
533 CLSCTX_LOCAL_SERVER); 533 CLSCTX_LOCAL_SERVER);
534 DCHECK(SUCCEEDED(hr) && new_browser); 534 DCHECK(SUCCEEDED(hr) && new_browser);
535 *dispatch = new_browser.Detach(); 535 *dispatch = new_browser.Detach();
536 } 536 }
537 537
538 if (*dispatch && listener_) 538 if (*dispatch && listener_)
539 listener_->OnNewBrowserWindow(*dispatch, url); 539 listener_->OnNewBrowserWindow(*dispatch, url);
540 } 540 }
541 541
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 source.Receive(), NULL, NULL)); 602 source.Receive(), NULL, NULL));
603 } 603 }
604 } 604 }
605 605
606 if (listener_) 606 if (listener_)
607 listener_->OnMessage(V_BSTR(&data), V_BSTR(&origin), V_BSTR(&source)); 607 listener_->OnMessage(V_BSTR(&data), V_BSTR(&origin), V_BSTR(&source));
608 return S_OK; 608 return S_OK;
609 } 609 }
610 610
611 } // namespace chrome_frame_test 611 } // namespace chrome_frame_test
OLDNEW
« no previous file with comments | « chrome_frame/test/ie_event_sink.h ('k') | chrome_frame/test/mock_ie_event_sink_actions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698