diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-16 13:00:33 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-16 13:00:33 +0000 |
commit | b16b2a9d2f8107b6803c990cebf92f910ae238d5 (patch) | |
tree | 3140930ab7c5b5045aecfc06e25e21c8ea017215 /chrome/browser/extensions/extension_webnavigation_api.cc | |
parent | 4c028ff10f9a8a025d1490909ea257056bae0ad9 (diff) | |
download | chromium_src-b16b2a9d2f8107b6803c990cebf92f910ae238d5.zip chromium_src-b16b2a9d2f8107b6803c990cebf92f910ae238d5.tar.gz chromium_src-b16b2a9d2f8107b6803c990cebf92f910ae238d5.tar.bz2 |
Revert 59641 - Add the onBeforeNavigate and onErrorOccured events to the webNavigation API.
Also, rewrite the onCommitted event such that AUTO_SUBFRAME events are also registered.
The frameId and the requestId fields are still unimplemented.
Also, there occur navigation events after an error is reported.
BUG=50943
TEST=WebNavigationEvents
Review URL: http://codereview.chromium.org/3436002
TBR=jochen@chromium.org
Review URL: http://codereview.chromium.org/3389012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59642 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_webnavigation_api.cc')
-rw-r--r-- | chrome/browser/extensions/extension_webnavigation_api.cc | 84 |
1 files changed, 13 insertions, 71 deletions
diff --git a/chrome/browser/extensions/extension_webnavigation_api.cc b/chrome/browser/extensions/extension_webnavigation_api.cc index de2442f..4a545fd 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.cc +++ b/chrome/browser/extensions/extension_webnavigation_api.cc @@ -13,11 +13,9 @@ #include "chrome/browser/extensions/extension_tabs_module.h" #include "chrome/browser/extensions/extension_webnavigation_api_constants.h" #include "chrome/browser/profile.h" -#include "chrome/browser/tab_contents/navigation_controller.h" -#include "chrome/browser/tab_contents/provisional_load_details.h" +#include "chrome/browser/tab_contents/navigation_entry.h" #include "chrome/common/notification_type.h" #include "chrome/common/notification_service.h" -#include "net/base/net_errors.h" namespace keys = extension_webnavigation_api_constants; @@ -30,13 +28,7 @@ ExtensionWebNavigationEventRouter::GetInstance() { void ExtensionWebNavigationEventRouter::Init() { if (registrar_.IsEmpty()) { registrar_.Add(this, - NotificationType::FRAME_PROVISIONAL_LOAD_START, - NotificationService::AllSources()); - registrar_.Add(this, - NotificationType::FRAME_PROVISIONAL_LOAD_COMMITTED, - NotificationService::AllSources()); - registrar_.Add(this, - NotificationType::FAIL_PROVISIONAL_LOAD_WITH_ERROR, + NotificationType::NAV_ENTRY_COMMITTED, NotificationService::AllSources()); } } @@ -46,64 +38,35 @@ void ExtensionWebNavigationEventRouter::Observe( const NotificationSource& source, const NotificationDetails& details) { switch (type.value) { - case NotificationType::FRAME_PROVISIONAL_LOAD_START: - FrameProvisionalLoadStart( - Source<NavigationController>(source).ptr(), - Details<ProvisionalLoadDetails>(details).ptr()); - break; - case NotificationType::FRAME_PROVISIONAL_LOAD_COMMITTED: - FrameProvisionalLoadCommitted( - Source<NavigationController>(source).ptr(), - Details<ProvisionalLoadDetails>(details).ptr()); - break; - case NotificationType::FAIL_PROVISIONAL_LOAD_WITH_ERROR: - FailProvisionalLoadWithError( + case NotificationType::NAV_ENTRY_COMMITTED: + NavEntryCommitted( Source<NavigationController>(source).ptr(), - Details<ProvisionalLoadDetails>(details).ptr()); + Details<NavigationController::LoadCommittedDetails>(details).ptr()); break; default: NOTREACHED(); } } -void ExtensionWebNavigationEventRouter::FrameProvisionalLoadStart( - NavigationController* controller, - ProvisionalLoadDetails* details) { - ListValue args; - DictionaryValue* dict = new DictionaryValue(); - dict->SetInteger(keys::kTabIdKey, - ExtensionTabUtil::GetTabId(controller->tab_contents())); - dict->SetString(keys::kUrlKey, - details->url().spec()); - dict->SetInteger(keys::kFrameIdKey, 0); - dict->SetInteger(keys::kRequestIdKey, 0); - dict->SetReal(keys::kTimeStampKey, - (base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds()); - args.Append(dict); - std::string json_args; - base::JSONWriter::Write(&args, false, &json_args); - DispatchEvent(controller->profile(), keys::kOnBeforeNavigate, json_args); -} - -void ExtensionWebNavigationEventRouter::FrameProvisionalLoadCommitted( +void ExtensionWebNavigationEventRouter::NavEntryCommitted( NavigationController* controller, - ProvisionalLoadDetails* details) { + NavigationController::LoadCommittedDetails* details) { ListValue args; DictionaryValue* dict = new DictionaryValue(); dict->SetInteger(keys::kTabIdKey, ExtensionTabUtil::GetTabId(controller->tab_contents())); dict->SetString(keys::kUrlKey, - details->url().spec()); - dict->SetInteger(keys::kFrameIdKey, 0); + details->entry->url().spec()); + dict->SetInteger(keys::kFrameIdKey, + details->is_main_frame ? 0 : details->entry->page_id()); dict->SetString(keys::kTransitionTypeKey, PageTransition::CoreTransitionString( - details->transition_type())); + details->entry->transition_type())); dict->SetString(keys::kTransitionQualifiersKey, PageTransition::QualifierString( - details->transition_type())); - dict->SetReal(keys::kTimeStampKey, - (base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds()); + details->entry->transition_type())); + dict->SetReal(keys::kTimeStampKey, base::Time::Now().ToDoubleT()); args.Append(dict); std::string json_args; @@ -111,27 +74,6 @@ void ExtensionWebNavigationEventRouter::FrameProvisionalLoadCommitted( DispatchEvent(controller->profile(), keys::kOnCommitted, json_args); } -void ExtensionWebNavigationEventRouter::FailProvisionalLoadWithError( - NavigationController* controller, - ProvisionalLoadDetails* details) { - ListValue args; - DictionaryValue* dict = new DictionaryValue(); - dict->SetInteger(keys::kTabIdKey, - ExtensionTabUtil::GetTabId(controller->tab_contents())); - dict->SetString(keys::kUrlKey, - details->url().spec()); - dict->SetInteger(keys::kFrameIdKey, 0); - dict->SetString(keys::kErrorKey, - std::string(net::ErrorToString(details->error_code()))); - dict->SetReal(keys::kTimeStampKey, - (base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds()); - args.Append(dict); - - std::string json_args; - base::JSONWriter::Write(&args, false, &json_args); - DispatchEvent(controller->profile(), keys::kOnErrorOccurred, json_args); -} - void ExtensionWebNavigationEventRouter::DispatchEvent( Profile* profile, const char* event_name, |