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

Side by Side Diff: ceee/ie/plugin/bho/executor.cc

Issue 5778002: Pin the Module after we register a hook.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years 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 | « no previous file | no next file » | 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 // CeeeExecutor implementation 5 // CeeeExecutor implementation
6 // 6 //
7 // We use interfaces named ITabWindowManager and ITabWindow 7 // We use interfaces named ITabWindowManager and ITabWindow
8 // (documented at 8 // (documented at
9 // http://www.geoffchappell.com/viewer.htm?doc=studies/windows/ie/ieframe/interf aces/itabwindowmanager.htm 9 // http://www.geoffchappell.com/viewer.htm?doc=studies/windows/ie/ieframe/interf aces/itabwindowmanager.htm
10 // and 10 // and
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 94
95 hook_ = ::SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, 95 hook_ = ::SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc,
96 static_cast<HINSTANCE>(_AtlBaseModule.GetModuleInstance()), thread_id); 96 static_cast<HINSTANCE>(_AtlBaseModule.GetModuleInstance()), thread_id);
97 if (hook_ == NULL) { 97 if (hook_ == NULL) {
98 LOG(ERROR) << "Couldn't hook into thread: " << thread_id << " " << 98 LOG(ERROR) << "Couldn't hook into thread: " << thread_id << " " <<
99 com::LogWe(); 99 com::LogWe();
100 current_thread_id_ = 0; 100 current_thread_id_ = 0;
101 return E_FAIL; 101 return E_FAIL;
102 } 102 }
103 103
104 // We have seen a case where a hook may call us in the Broker process
105 // but the DLL is not loaded anymore... This is weird... But to make sure
106 // this doesn't cause a crash when it happens, we pin ourselves here to make
107 // sure we won't be called when unloaded.
108 PinModule();
109
104 // We unfortunately can't Send a synchronous message here. 110 // We unfortunately can't Send a synchronous message here.
105 // If we do, any calls back to the broker fail with the following error: 111 // If we do, any calls back to the broker fail with the following error:
106 // "An outgoing call cannot be made since the application is dispatching an 112 // "An outgoing call cannot be made since the application is dispatching an
107 // input synchronous call." 113 // input synchronous call."
108 BOOL success = ::PostThreadMessage(thread_id, kCreateWindowExecutorMessage, 114 BOOL success = ::PostThreadMessage(thread_id, kCreateWindowExecutorMessage,
109 0, static_cast<LPARAM>(window)); 115 0, static_cast<LPARAM>(window));
110 if (success) 116 if (success)
111 return S_OK; 117 return S_OK;
112 else 118 else
113 return HRESULT_FROM_WIN32(::GetLastError()); 119 return HRESULT_FROM_WIN32(::GetLastError());
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 1025
1020 STDMETHODIMP CeeeExecutor::OnTopFrameBeforeNavigate(BSTR url) { 1026 STDMETHODIMP CeeeExecutor::OnTopFrameBeforeNavigate(BSTR url) {
1021 DCHECK(infobar_manager_ != NULL) << "infobar_manager_ is not initialized"; 1027 DCHECK(infobar_manager_ != NULL) << "infobar_manager_ is not initialized";
1022 if (infobar_manager_ == NULL) 1028 if (infobar_manager_ == NULL)
1023 return E_FAIL; 1029 return E_FAIL;
1024 1030
1025 // According to the specification, tab navigation closes the infobar. 1031 // According to the specification, tab navigation closes the infobar.
1026 infobar_manager_->HideAll(); 1032 infobar_manager_->HideAll();
1027 return S_OK; 1033 return S_OK;
1028 } 1034 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698