Index: chrome/browser/extensions/activity_log/activity_log_unittest.cc |
diff --git a/chrome/browser/extensions/activity_log/activity_log_unittest.cc b/chrome/browser/extensions/activity_log/activity_log_unittest.cc |
index 1c0df01c87b6c3895129d02d0fdfb43c1a4fda76..34dc650aaa6486658b47c3b81a6d1b72efdf5841 100644 |
--- a/chrome/browser/extensions/activity_log/activity_log_unittest.cc |
+++ b/chrome/browser/extensions/activity_log/activity_log_unittest.cc |
@@ -34,6 +34,19 @@ namespace { |
const char kExtensionId[] = "abc"; |
+const char* kUrlApiCalls[] = { |
+ "HTMLButtonElement.formAction", "HTMLEmbedElement.src", |
+ "HTMLFormElement.action", "HTMLFrameElement.src", |
+ "HTMLHtmlElement.manifest", "HTMLIFrameElement.src", |
+ "HTMLImageElement.longDesc", "HTMLImageElement.src", |
+ "HTMLImageElement.lowsrc", "HTMLInputElement.formAction", |
+ "HTMLInputElement.src", "HTMLLinkElement.href", |
+ "HTMLMediaElement.src", "HTMLMediaElement.currentSrc", |
+ "HTMLModElement.cite", "HTMLObjectElement.data", |
+ "HTMLQuoteElement.cite", "HTMLScriptElement.src", |
+ "HTMLSourceElement.src", "HTMLTrackElement.src", |
+ "HTMLVideoElement.poster"}; |
+ |
} // namespace |
namespace extensions { |
@@ -148,6 +161,30 @@ class ActivityLogTest : public ChromeRenderViewHostTestHarness { |
ASSERT_EQ("http://www.google.co.uk/", action->arg_url().spec()); |
} |
+ static void RetrieveActions_ArgUrlApiCalls( |
+ scoped_ptr<std::vector<scoped_refptr<Action> > > actions) { |
+ size_t api_calls_size = arraysize(kUrlApiCalls); |
+ const base::DictionaryValue* other = NULL; |
+ int dom_verb = -1; |
+ |
+ ASSERT_EQ(api_calls_size, actions->size()); |
+ |
+ for (size_t i = 0; i < actions->size(); i++) { |
+ scoped_refptr<Action> action = actions->at(i); |
+ ASSERT_EQ(kExtensionId, action->extension_id()); |
+ ASSERT_EQ(Action::ACTION_DOM_ACCESS, action->action_type()); |
+ ASSERT_EQ(kUrlApiCalls[i], action->api_name()); |
+ ASSERT_EQ("[\"\\u003Carg_url>\"]", |
+ ActivityLogPolicy::Util::Serialize(action->args())); |
+ ASSERT_EQ("http://www.google.co.uk/", action->arg_url().spec()); |
+ other = action->other(); |
+ ASSERT_TRUE(other); |
+ ASSERT_TRUE( |
+ other->GetInteger(activity_log_constants::kActionDomVerb, &dom_verb)); |
+ ASSERT_EQ(DomActionType::SETTER, dom_verb); |
+ } |
+ } |
+ |
ExtensionService* extension_service_; |
#if defined OS_CHROMEOS |
@@ -340,4 +377,32 @@ TEST_F(ActivityLogTest, UninstalledExtension) { |
base::Bind(ActivityLogTest::RetrieveActions_LogAndFetchActions0)); |
} |
+TEST_F(ActivityLogTest, ArgUrlApiCalls) { |
+ ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
+ scoped_ptr<base::ListValue> args(new base::ListValue()); |
+ base::Time now = base::Time::Now(); |
+ int api_calls_size = arraysize(kUrlApiCalls); |
+ scoped_refptr<Action> action; |
+ |
+ for (int i = 0; i < api_calls_size; i++) { |
+ action = new Action(kExtensionId, |
+ now - base::TimeDelta::FromSeconds(i), |
+ Action::ACTION_DOM_ACCESS, |
+ kUrlApiCalls[i]); |
+ action->mutable_args()->AppendString("http://www.google.co.uk"); |
+ action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb, |
+ DomActionType::SETTER); |
+ activity_log->LogAction(action); |
+ } |
+ |
+ activity_log->GetFilteredActions( |
+ kExtensionId, |
+ Action::ACTION_ANY, |
+ "", |
+ "", |
+ "", |
+ -1, |
+ base::Bind(ActivityLogTest::RetrieveActions_ArgUrlApiCalls)); |
+} |
+ |
} // namespace extensions |