diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-05 12:50:07 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-05 12:50:07 +0000 |
commit | dabb0d1ddd62548ad899caf16ea4ac9a0f68593f (patch) | |
tree | c848ab25304cd520c7dca09083d8872052d88adf /chrome/browser/extensions | |
parent | a22fa6825a1afeace5a9110ab4c732fd3c3ebe2c (diff) | |
download | chromium_src-dabb0d1ddd62548ad899caf16ea4ac9a0f68593f.zip chromium_src-dabb0d1ddd62548ad899caf16ea4ac9a0f68593f.tar.gz chromium_src-dabb0d1ddd62548ad899caf16ea4ac9a0f68593f.tar.bz2 |
Implement the frame id required for the web navigation api.
BUG=50943
TEST=*.WebNavigationEvents
Review URL: http://codereview.chromium.org/3561008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61503 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_webnavigation_api.cc | 33 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_webnavigation_api.h | 3 |
2 files changed, 24 insertions, 12 deletions
diff --git a/chrome/browser/extensions/extension_webnavigation_api.cc b/chrome/browser/extensions/extension_webnavigation_api.cc index 589d5b6..6281a06 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.cc +++ b/chrome/browser/extensions/extension_webnavigation_api.cc @@ -21,6 +21,21 @@ namespace keys = extension_webnavigation_api_constants; +namespace { + +// Returns 0 if the navigation happens in the main frame, or the frame ID +// modulo 32 bits otherwise. +int GetFrameId(ProvisionalLoadDetails* details) { + return details->main_frame() ? 0 : static_cast<int>(details->frame_id()); +} + +// Returns |time| as milliseconds since the epoch. +double MilliSecondsFromTime(const base::Time& time) { + return 1000 * time.ToDoubleT(); +} + +} // namespace + // static ExtensionWebNavigationEventRouter* ExtensionWebNavigationEventRouter::GetInstance() { @@ -75,11 +90,9 @@ void ExtensionWebNavigationEventRouter::FrameProvisionalLoadStart( ExtensionTabUtil::GetTabId(controller->tab_contents())); dict->SetString(keys::kUrlKey, details->url().spec()); - dict->SetInteger(keys::kFrameIdKey, 0); + dict->SetInteger(keys::kFrameIdKey, GetFrameId(details)); dict->SetInteger(keys::kRequestIdKey, 0); - dict->SetReal(keys::kTimeStampKey, - static_cast<double>( - (base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds())); + dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); args.Append(dict); std::string json_args; @@ -96,16 +109,14 @@ void ExtensionWebNavigationEventRouter::FrameProvisionalLoadCommitted( ExtensionTabUtil::GetTabId(controller->tab_contents())); dict->SetString(keys::kUrlKey, details->url().spec()); - dict->SetInteger(keys::kFrameIdKey, 0); + dict->SetInteger(keys::kFrameIdKey, GetFrameId(details)); dict->SetString(keys::kTransitionTypeKey, PageTransition::CoreTransitionString( details->transition_type())); dict->SetString(keys::kTransitionQualifiersKey, PageTransition::QualifierString( details->transition_type())); - dict->SetReal(keys::kTimeStampKey, - static_cast<double>( - (base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds())); + dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); args.Append(dict); std::string json_args; @@ -122,12 +133,10 @@ void ExtensionWebNavigationEventRouter::FailProvisionalLoadWithError( ExtensionTabUtil::GetTabId(controller->tab_contents())); dict->SetString(keys::kUrlKey, details->url().spec()); - dict->SetInteger(keys::kFrameIdKey, 0); + dict->SetInteger(keys::kFrameIdKey, GetFrameId(details)); dict->SetString(keys::kErrorKey, std::string(net::ErrorToString(details->error_code()))); - dict->SetReal(keys::kTimeStampKey, - static_cast<double>( - (base::Time::Now() - base::Time::UnixEpoch()).InMilliseconds())); + dict->SetReal(keys::kTimeStampKey, MilliSecondsFromTime(base::Time::Now())); args.Append(dict); std::string json_args; diff --git a/chrome/browser/extensions/extension_webnavigation_api.h b/chrome/browser/extensions/extension_webnavigation_api.h index 95ba032..21cfb16 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.h +++ b/chrome/browser/extensions/extension_webnavigation_api.h @@ -10,6 +10,8 @@ #define CHROME_BROWSER_EXTENSIONS_EXTENSION_WEBNAVIGATION_API_H_ #pragma once +#include <map> + #include "base/singleton.h" #include "chrome/browser/extensions/extension_function.h" #include "chrome/common/notification_observer.h" @@ -18,6 +20,7 @@ class NavigationController; class ProvisionalLoadDetails; +class TabContents; // Observes navigation notifications and routes them as events to the extension // system. |