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

Unified Diff: ceee/ie/plugin/bho/browser_helper_object.cc

Issue 5360002: Use BRANDING for IE CEEE. Simplify chrome_dll_version handling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Chrome->Chromium Created 10 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 side-by-side diff with in-line comments
Download patch
Index: ceee/ie/plugin/bho/browser_helper_object.cc
diff --git a/ceee/ie/plugin/bho/browser_helper_object.cc b/ceee/ie/plugin/bho/browser_helper_object.cc
index 2b2478a34598387f09275f32d9d1820d6f78ceaa..8496a3bf5a5baca1183d55824fd5815a817205c0 100644
--- a/ceee/ie/plugin/bho/browser_helper_object.cc
+++ b/ceee/ie/plugin/bho/browser_helper_object.cc
@@ -107,9 +107,8 @@ BrowserHelperObject::BrowserHelperObject()
}
BrowserHelperObject::~BrowserHelperObject() {
- if (broker_rpc_ != NULL) {
+ if (broker_rpc_ != NULL)
broker_rpc_->Disconnect();
- }
TRACE_EVENT_END("ceee.bho", this, "");
}
@@ -127,15 +126,16 @@ STDMETHODIMP BrowserHelperObject::SetSite(IUnknown* site) {
// From experience, we know the site may be set multiple times.
// Let's ignore second and subsequent set or unset.
- if (NULL != site && NULL != m_spUnkSite.p ||
- NULL == site && NULL == m_spUnkSite.p) {
+ if (site != NULL&& m_spUnkSite.p != NULL ||
+ site == NULL && m_spUnkSite.p == NULL ) {
LOG(WARNING) << "Duplicate call to SetSite, previous site "
<< m_spUnkSite.p << " new site " << site;
return S_OK;
}
if (NULL == site) {
- mu::ScopedTimer metrics_timer("ceee/BHO.TearDown", broker_rpc_.get());
+ if (broker_rpc_ != NULL)
MAD 2010/11/24 23:03:56 You'll need to sync and merge again, this should b
Jói 2010/11/25 23:13:41 Done.
+ mu::ScopedTimer metrics_timer("ceee/BHO.TearDown", broker_rpc_.get());
// We're being torn down.
TearDown();
@@ -150,21 +150,6 @@ STDMETHODIMP BrowserHelperObject::SetSite(IUnknown* site) {
return hr;
if (NULL != site) {
- if (broker_rpc_ == NULL) {
- // Unfortunately, we need to connect before taking performance. Including
- // this call in our Timing would be useful. Unit tests make it
- // complicated.
- // TODO(hansl@chromium.org): Change initialization to be able to time
- // this call too.
- hr = ConnectRpcBrokerClient();
- if (FAILED(hr) || !broker_rpc_->is_connected()) {
- NOTREACHED() << "Couldn't connect to the RPC server.";
- TearDown();
- SuperSite::SetSite(NULL);
- }
- }
-
- mu::ScopedTimer metrics_timer("ceee/BHO.Initialize", broker_rpc_.get());
// We're being initialized.
hr = Initialize(site);
@@ -267,9 +252,29 @@ WebProgressNotifier* BrowserHelperObject::CreateWebProgressNotifier() {
HRESULT BrowserHelperObject::Initialize(IUnknown* site) {
TRACE_EVENT_INSTANT("ceee.bho.initialize", this, "");
+ // We need to make sure the Broker is CoCreated BEFORE we try RPC to it.
+ HRESULT hr = GetBrokerRegistrar(&broker_registrar_);
+ DCHECK(SUCCEEDED(hr) && broker_registrar_) << "CoCreating Broker. " <<
+ com::LogHr(hr);
+ if (FAILED(hr) || !broker_registrar_)
+ return com::AlwaysError(hr);
+
+ // Unfortunately, we need to connect before taking performance. Including
+ // this call in our Timing would be useful. Unit tests make it
+ // complicated.
+ // TODO(hansl@chromium.org): Change initialization to be able to time
+ // this call too.
+ DCHECK(broker_rpc_ == NULL);
+ hr = ConnectRpcBrokerClient();
+ if (FAILED(hr) || !broker_rpc_->is_connected()) {
+ NOTREACHED() << "Couldn't connect to the RPC server.";
+ return com::AlwaysError(hr);
+ }
+ mu::ScopedTimer metrics_timer("ceee/BHO.Initialize", broker_rpc_.get());
+
ie7_or_later_ = ie_util::GetIeVersion() > ie_util::IEVERSION_IE6;
- HRESULT hr = InitializeChromeFrameHost();
+ hr = InitializeChromeFrameHost();
DCHECK(SUCCEEDED(hr)) << "InitializeChromeFrameHost failed " <<
com::LogHr(hr);
if (FAILED(hr)) {
@@ -286,24 +291,20 @@ HRESULT BrowserHelperObject::Initialize(IUnknown* site) {
return hr;
// Preemptively feed the broker with an executor in our thread.
- hr = GetBrokerRegistrar(&broker_registrar_);
- LOG_IF(ERROR, FAILED(hr)) << "Failed to create broker, hr=" <<
+ DCHECK(executor_ == NULL);
+ hr = CreateExecutor(&executor_);
+ LOG_IF(ERROR, FAILED(hr)) << "Failed to create Executor, hr=" <<
com::LogHr(hr);
- DCHECK(SUCCEEDED(hr)) << "CoCreating Broker. " << com::LogHr(hr);
+ DCHECK(SUCCEEDED(hr)) << "CoCreating Executor. " << com::LogHr(hr);
if (SUCCEEDED(hr)) {
- DCHECK(executor_ == NULL);
- hr = CreateExecutor(&executor_);
- LOG_IF(ERROR, FAILED(hr)) << "Failed to create Executor, hr=" <<
- com::LogHr(hr);
- DCHECK(SUCCEEDED(hr)) << "CoCreating Executor. " << com::LogHr(hr);
- if (SUCCEEDED(hr)) {
- // TODO(mad@chromium.org): Implement the proper manual/secure
- // registration.
- hr = broker_registrar_->RegisterTabExecutor(::GetCurrentThreadId(),
- executor_);
- DCHECK(SUCCEEDED(hr)) << "Registering Executor. " << com::LogHr(hr);
- }
+ // TODO(mad@chromium.org): Implement the proper manual/secure
+ // registration.
+ hr = broker_registrar_->RegisterTabExecutor(::GetCurrentThreadId(),
+ executor_);
+ DCHECK(SUCCEEDED(hr)) << "Registering Executor. " << com::LogHr(hr);
}
+ if (FAILED(hr))
+ return hr;
// We need the service provider for both the sink connections and
// to get a handle to the tab window.
@@ -420,17 +421,17 @@ HRESULT BrowserHelperObject::InitializeChromeFrameHost() {
}
HRESULT BrowserHelperObject::OnCfReadyStateChanged(LONG state) {
- // If EnsureTabId() returns false, the session_id isn't available.
- // This means that the ExternalTab hasn't been created yet, which is certainly
- // a bug. Calling this here will also ensure we call all the deferred calls if
- // they haven't been called yet.
- bool id_available = EnsureTabId();
- if (!id_available) {
- NOTREACHED();
- return E_UNEXPECTED;
- }
-
if (state == READYSTATE_COMPLETE) {
+ // If EnsureTabId() returns false, the session_id isn't available.
+ // This means that the ExternalTab hasn't been created yet, which is certainly
+ // a bug. Calling this here will also ensure we call all the deferred calls if
+ // they haven't been called yet.
+ bool id_available = EnsureTabId();
+ if (!id_available) {
+ NOTREACHED();
+ return E_UNEXPECTED;
+ }
+
extension_path_ = ceee_module_util::GetExtensionPath();
if (ceee_module_util::IsCrxOrEmpty(extension_path_) &&
@@ -781,7 +782,8 @@ STDMETHODIMP_(void) BrowserHelperObject::OnBeforeNavigate2(
void BrowserHelperObject::OnBeforeNavigate2Impl(
const ScopedDispatchPtr& webbrowser_disp, const CComBSTR& url) {
- mu::ScopedTimer metrics_timer("ceee/BHO.BeforeNavigate", broker_rpc_.get());
+ if (broker_rpc_ != NULL)
+ mu::ScopedTimer metrics_timer("ceee/BHO.BeforeNavigate", broker_rpc_.get());
base::win::ScopedComPtr<IWebBrowser2> webbrowser;
HRESULT hr = webbrowser.QueryFrom(webbrowser_disp);
@@ -846,7 +848,10 @@ STDMETHODIMP_(void) BrowserHelperObject::OnDocumentComplete(
void BrowserHelperObject::OnDocumentCompleteImpl(
const ScopedWebBrowser2Ptr& webbrowser, const CComBSTR& url) {
- mu::ScopedTimer metrics_timer("ceee/BHO.DocumentComplete", broker_rpc_.get());
+ if (broker_rpc_ != NULL) {
+ mu::ScopedTimer metrics_timer("ceee/BHO.DocumentComplete",
+ broker_rpc_.get());
+ }
for (std::vector<Sink*>::iterator iter = sinks_.begin();
iter != sinks_.end(); ++iter) {
(*iter)->OnDocumentComplete(webbrowser, url);
@@ -885,7 +890,10 @@ STDMETHODIMP_(void) BrowserHelperObject::OnNavigateComplete2(
void BrowserHelperObject::OnNavigateComplete2Impl(
const ScopedWebBrowser2Ptr& webbrowser, const CComBSTR& url) {
- mu::ScopedTimer metrics_timer("ceee/BHO.NavigateComplete", broker_rpc_.get());
+ if (broker_rpc_ != NULL) {
+ mu::ScopedTimer metrics_timer("ceee/BHO.NavigateComplete",
+ broker_rpc_.get());
+ }
HandleNavigateComplete(webbrowser, url);
@@ -936,7 +944,8 @@ STDMETHODIMP_(void) BrowserHelperObject::OnNavigateError(
void BrowserHelperObject::OnNavigateErrorImpl(
const ScopedWebBrowser2Ptr& webbrowser, const CComBSTR& url,
LONG status_code) {
- mu::ScopedTimer metrics_timer("ceee/BHO.NavigateError", broker_rpc_.get());
+ if (broker_rpc_ != NULL)
+ mu::ScopedTimer metrics_timer("ceee/BHO.NavigateError", broker_rpc_.get());
for (std::vector<Sink*>::iterator iter = sinks_.begin();
iter != sinks_.end(); ++iter) {

Powered by Google App Engine
This is Rietveld 408576698