Index: chrome/browser/extensions/extension_webnavigation_api.cc |
diff --git a/chrome/browser/extensions/extension_webnavigation_api.cc b/chrome/browser/extensions/extension_webnavigation_api.cc |
index 589d5b63077db74685d570f885c718db7ce805bb..6281a06e5fd066338fb03aa4230117fc916d5b97 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; |