Index: chrome/browser/extensions/activity_log.cc |
diff --git a/chrome/browser/extensions/activity_log.cc b/chrome/browser/extensions/activity_log.cc |
index 92c46d38f6a04cc578665317e28617dae9ff0c57..6fe5f522c2a7c7bfc6f30305ad8777e881554080 100644 |
--- a/chrome/browser/extensions/activity_log.cc |
+++ b/chrome/browser/extensions/activity_log.cc |
@@ -356,6 +356,50 @@ void ActivityLog::LogDOMAction(const Extension* extension, |
DOMAction::MODIFIED); |
} |
+void ActivityLog::LogWebRequestAction(const Extension* extension, |
+ const GURL& url, |
+ const std::string& api_call, |
+ scoped_ptr<DictionaryValue> details, |
+ const std::string& extra) { |
+ string16 null_title; |
+ if (!IsLogEnabled()) return; |
+ |
+ // Strip details of the web request modifications (for privacy reasons), |
+ // unless testing is enabled. |
+ if (!testing_mode_) { |
+ DictionaryValue::Iterator details_iterator(*details); |
+ while (!details_iterator.IsAtEnd()) { |
+ details->SetBoolean(details_iterator.key(), true); |
+ details_iterator.Advance(); |
+ } |
+ } |
+ std::string details_string; |
+ JSONStringValueSerializer serializer(&details_string); |
+ serializer.SerializeAndOmitBinaryValues(*details); |
+ |
+ scoped_refptr<DOMAction> action = new DOMAction( |
+ extension->id(), |
+ base::Time::Now(), |
+ DOMAction::WEBREQUEST, |
+ url, |
+ null_title, |
+ api_call, |
+ details_string, |
+ extra); |
+ ScheduleAndForget(&ActivityDatabase::RecordAction, action); |
+ |
+ // Display the action. |
+ ObserverMap::const_iterator iter = observers_.find(extension); |
+ if (iter != observers_.end()) { |
+ iter->second->Notify(&Observer::OnExtensionActivity, |
+ extension, |
+ ActivityLog::ACTIVITY_CONTENT_SCRIPT, |
+ action->PrettyPrintForDebug()); |
+ } |
+ if (log_activity_to_stdout_) |
+ LOG(INFO) << action->PrettyPrintForDebug(); |
+} |
+ |
void ActivityLog::GetActions( |
const std::string& extension_id, |
const int day, |