| Index: ceee/ie/plugin/bho/web_progress_notifier.cc
|
| ===================================================================
|
| --- ceee/ie/plugin/bho/web_progress_notifier.cc (revision 66617)
|
| +++ ceee/ie/plugin/bho/web_progress_notifier.cc (working copy)
|
| @@ -9,6 +9,7 @@
|
| #include "base/string_util.h"
|
| #include "ceee/common/com_utils.h"
|
| #include "ceee/ie/plugin/bho/dom_utils.h"
|
| +#include "ceee/ie/plugin/bho/webnavigation_events_funnel.h"
|
|
|
| namespace {
|
|
|
| @@ -121,8 +122,13 @@
|
| return;
|
|
|
| // TODO(yzshen@google.com): add support for requestId.
|
| - HRESULT hr = webnavigation_events_funnel().OnBeforeNavigate(
|
| - tab_handle_, url, frame_info->frame_id, -1, base::Time::Now());
|
| + HRESULT hr = E_POINTER;
|
| + WebNavigationEventsFunnel* funnel = webnavigation_events_funnel();
|
| + DCHECK(funnel != NULL);
|
| + if (funnel) {
|
| + hr = funnel->OnBeforeNavigate(tab_handle_, url, frame_info->frame_id, -1,
|
| + base::Time::Now());
|
| + }
|
| DCHECK(SUCCEEDED(hr))
|
| << "Failed to fire the webNavigation.onBeforeNavigate event "
|
| << com::LogHr(hr);
|
| @@ -190,8 +196,13 @@
|
| HasPotentialJavaScriptRedirect(browser);
|
| }
|
|
|
| - HRESULT hr = webnavigation_events_funnel().OnCompleted(
|
| - tab_handle_, url, frame_info->frame_id, base::Time::Now());
|
| + HRESULT hr = E_POINTER;
|
| + WebNavigationEventsFunnel* funnel = webnavigation_events_funnel();
|
| + DCHECK(funnel != NULL);
|
| + if (funnel) {
|
| + hr = funnel->OnCompleted(tab_handle_, url, frame_info->frame_id,
|
| + base::Time::Now());
|
| + }
|
| DCHECK(SUCCEEDED(hr)) << "Failed to fire the webNavigation.onCompleted event "
|
| << com::LogHr(hr);
|
| }
|
| @@ -230,11 +241,16 @@
|
| }
|
| }
|
|
|
| - HRESULT hr = webnavigation_events_funnel().OnCommitted(
|
| + HRESULT hr = E_POINTER;
|
| + WebNavigationEventsFunnel* funnel = webnavigation_events_funnel();
|
| + DCHECK(funnel != NULL);
|
| + if (funnel) {
|
| + hr = funnel->OnCommitted(
|
| tab_handle_, url, frame_info->frame_id,
|
| PageTransition::CoreTransitionString(frame_info->transition_type),
|
| TransitionQualifiersString(frame_info->transition_qualifiers).c_str(),
|
| timestamp);
|
| + }
|
| DCHECK(SUCCEEDED(hr)) << "Failed to fire the webNavigation.onCommitted event "
|
| << com::LogHr(hr);
|
|
|
| @@ -254,8 +270,13 @@
|
| if (!GetFrameInfo(browser, &frame_info))
|
| return;
|
|
|
| - HRESULT hr = webnavigation_events_funnel().OnErrorOccurred(
|
| - tab_handle_, url, frame_info->frame_id, CComBSTR(L""), base::Time::Now());
|
| + HRESULT hr = E_POINTER;
|
| + WebNavigationEventsFunnel* funnel = webnavigation_events_funnel();
|
| + DCHECK(funnel != NULL);
|
| + if (funnel) {
|
| + hr = funnel->OnErrorOccurred(tab_handle_, url,
|
| + frame_info->frame_id, CComBSTR(L""), base::Time::Now());
|
| + }
|
| DCHECK(SUCCEEDED(hr))
|
| << "Failed to fire the webNavigation.onErrorOccurred event "
|
| << com::LogHr(hr);
|
| @@ -268,8 +289,13 @@
|
| if (FilterOutWebBrowserEvent(NULL, FilteringInfo::NEW_WINDOW))
|
| return;
|
|
|
| - HRESULT hr = webnavigation_events_funnel().OnBeforeRetarget(
|
| - tab_handle_, url_context, url, base::Time::Now());
|
| + HRESULT hr = E_POINTER;
|
| + WebNavigationEventsFunnel* funnel = webnavigation_events_funnel();
|
| + DCHECK(funnel != NULL);
|
| + if (funnel) {
|
| + hr = funnel->OnBeforeRetarget(tab_handle_, url_context, url,
|
| + base::Time::Now());
|
| + }
|
| DCHECK(SUCCEEDED(hr))
|
| << "Failed to fire the webNavigation.onBeforeRetarget event "
|
| << com::LogHr(hr);
|
| @@ -305,6 +331,19 @@
|
| }
|
| }
|
|
|
| +WebNavigationEventsFunnel* WebProgressNotifier::webnavigation_events_funnel() {
|
| + if (!webnavigation_events_funnel_.get())
|
| + webnavigation_events_funnel_.reset(new WebNavigationEventsFunnel());
|
| + return webnavigation_events_funnel_.get();
|
| +}
|
| +
|
| +WebRequestNotifier* WebProgressNotifier::webrequest_notifier() {
|
| + if (cached_webrequest_notifier_ == NULL) {
|
| + cached_webrequest_notifier_ = ProductionWebRequestNotifier::get();
|
| + }
|
| + return cached_webrequest_notifier_;
|
| +}
|
| +
|
| WindowMessageSource* WebProgressNotifier::CreateWindowMessageSource() {
|
| scoped_ptr<WindowMessageSource> source(new WindowMessageSource());
|
|
|
|
|