| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/activity_log/activity_log.h" |
| 6 |
| 5 #include <stddef.h> | 7 #include <stddef.h> |
| 6 | 8 |
| 9 #include <memory> |
| 10 |
| 7 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 8 #include "base/macros.h" | 12 #include "base/macros.h" |
| 9 #include "base/memory/scoped_ptr.h" | |
| 10 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
| 11 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 12 #include "base/synchronization/waitable_event.h" | 15 #include "base/synchronization/waitable_event.h" |
| 13 #include "build/build_config.h" | 16 #include "build/build_config.h" |
| 14 #include "chrome/browser/extensions/activity_log/activity_action_constants.h" | 17 #include "chrome/browser/extensions/activity_log/activity_action_constants.h" |
| 15 #include "chrome/browser/extensions/activity_log/activity_log.h" | |
| 16 #include "chrome/browser/extensions/extension_service.h" | 18 #include "chrome/browser/extensions/extension_service.h" |
| 17 #include "chrome/browser/extensions/test_extension_system.h" | 19 #include "chrome/browser/extensions/test_extension_system.h" |
| 18 #include "chrome/browser/prerender/prerender_handle.h" | 20 #include "chrome/browser/prerender/prerender_handle.h" |
| 19 #include "chrome/browser/prerender/prerender_manager.h" | 21 #include "chrome/browser/prerender/prerender_manager.h" |
| 20 #include "chrome/browser/prerender/prerender_manager_factory.h" | 22 #include "chrome/browser/prerender/prerender_manager_factory.h" |
| 21 #include "chrome/common/chrome_constants.h" | 23 #include "chrome/common/chrome_constants.h" |
| 22 #include "chrome/common/chrome_switches.h" | 24 #include "chrome/common/chrome_switches.h" |
| 23 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 25 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 24 #include "chrome/test/base/testing_profile.h" | 26 #include "chrome/test/base/testing_profile.h" |
| 25 #include "content/public/browser/web_contents.h" | 27 #include "content/public/browser/web_contents.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 | 79 |
| 78 void TearDown() override { | 80 void TearDown() override { |
| 79 #if defined OS_CHROMEOS | 81 #if defined OS_CHROMEOS |
| 80 test_user_manager_.reset(); | 82 test_user_manager_.reset(); |
| 81 #endif | 83 #endif |
| 82 base::RunLoop().RunUntilIdle(); | 84 base::RunLoop().RunUntilIdle(); |
| 83 ChromeRenderViewHostTestHarness::TearDown(); | 85 ChromeRenderViewHostTestHarness::TearDown(); |
| 84 } | 86 } |
| 85 | 87 |
| 86 static void RetrieveActions_LogAndFetchActions0( | 88 static void RetrieveActions_LogAndFetchActions0( |
| 87 scoped_ptr<std::vector<scoped_refptr<Action> > > i) { | 89 std::unique_ptr<std::vector<scoped_refptr<Action>>> i) { |
| 88 ASSERT_EQ(0, static_cast<int>(i->size())); | 90 ASSERT_EQ(0, static_cast<int>(i->size())); |
| 89 } | 91 } |
| 90 | 92 |
| 91 static void RetrieveActions_LogAndFetchActions2( | 93 static void RetrieveActions_LogAndFetchActions2( |
| 92 scoped_ptr<std::vector<scoped_refptr<Action> > > i) { | 94 std::unique_ptr<std::vector<scoped_refptr<Action>>> i) { |
| 93 ASSERT_EQ(2, static_cast<int>(i->size())); | 95 ASSERT_EQ(2, static_cast<int>(i->size())); |
| 94 } | 96 } |
| 95 | 97 |
| 96 void SetPolicy(bool log_arguments) { | 98 void SetPolicy(bool log_arguments) { |
| 97 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 99 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 98 if (log_arguments) | 100 if (log_arguments) |
| 99 activity_log->SetDatabasePolicy(ActivityLogPolicy::POLICY_FULLSTREAM); | 101 activity_log->SetDatabasePolicy(ActivityLogPolicy::POLICY_FULLSTREAM); |
| 100 else | 102 else |
| 101 activity_log->SetDatabasePolicy(ActivityLogPolicy::POLICY_COUNTS); | 103 activity_log->SetDatabasePolicy(ActivityLogPolicy::POLICY_COUNTS); |
| 102 } | 104 } |
| 103 | 105 |
| 104 bool GetDatabaseEnabled() { | 106 bool GetDatabaseEnabled() { |
| 105 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 107 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 106 return activity_log->IsDatabaseEnabled(); | 108 return activity_log->IsDatabaseEnabled(); |
| 107 } | 109 } |
| 108 | 110 |
| 109 bool GetWatchdogActive() { | 111 bool GetWatchdogActive() { |
| 110 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 112 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 111 return activity_log->IsWatchdogAppActive(); | 113 return activity_log->IsWatchdogAppActive(); |
| 112 } | 114 } |
| 113 | 115 |
| 114 static void Arguments_Prerender( | 116 static void Arguments_Prerender( |
| 115 scoped_ptr<std::vector<scoped_refptr<Action> > > i) { | 117 std::unique_ptr<std::vector<scoped_refptr<Action>>> i) { |
| 116 ASSERT_EQ(1U, i->size()); | 118 ASSERT_EQ(1U, i->size()); |
| 117 scoped_refptr<Action> last = i->front(); | 119 scoped_refptr<Action> last = i->front(); |
| 118 | 120 |
| 119 ASSERT_EQ("odlameecjipmbmbejkplpemijjgpljce", last->extension_id()); | 121 ASSERT_EQ("odlameecjipmbmbejkplpemijjgpljce", last->extension_id()); |
| 120 ASSERT_EQ(Action::ACTION_CONTENT_SCRIPT, last->action_type()); | 122 ASSERT_EQ(Action::ACTION_CONTENT_SCRIPT, last->action_type()); |
| 121 ASSERT_EQ("[\"script\"]", | 123 ASSERT_EQ("[\"script\"]", |
| 122 ActivityLogPolicy::Util::Serialize(last->args())); | 124 ActivityLogPolicy::Util::Serialize(last->args())); |
| 123 ASSERT_EQ("http://www.google.com/", last->SerializePageUrl()); | 125 ASSERT_EQ("http://www.google.com/", last->SerializePageUrl()); |
| 124 ASSERT_EQ("{\"prerender\":true}", | 126 ASSERT_EQ("{\"prerender\":true}", |
| 125 ActivityLogPolicy::Util::Serialize(last->other())); | 127 ActivityLogPolicy::Util::Serialize(last->other())); |
| 126 ASSERT_EQ("", last->api_name()); | 128 ASSERT_EQ("", last->api_name()); |
| 127 ASSERT_EQ("", last->page_title()); | 129 ASSERT_EQ("", last->page_title()); |
| 128 ASSERT_EQ("", last->SerializeArgUrl()); | 130 ASSERT_EQ("", last->SerializeArgUrl()); |
| 129 } | 131 } |
| 130 | 132 |
| 131 static void RetrieveActions_ArgUrlExtraction( | 133 static void RetrieveActions_ArgUrlExtraction( |
| 132 scoped_ptr<std::vector<scoped_refptr<Action> > > i) { | 134 std::unique_ptr<std::vector<scoped_refptr<Action>>> i) { |
| 133 const base::DictionaryValue* other = NULL; | 135 const base::DictionaryValue* other = NULL; |
| 134 int dom_verb = -1; | 136 int dom_verb = -1; |
| 135 | 137 |
| 136 ASSERT_EQ(4U, i->size()); | 138 ASSERT_EQ(4U, i->size()); |
| 137 scoped_refptr<Action> action = i->at(0); | 139 scoped_refptr<Action> action = i->at(0); |
| 138 ASSERT_EQ("XMLHttpRequest.open", action->api_name()); | 140 ASSERT_EQ("XMLHttpRequest.open", action->api_name()); |
| 139 ASSERT_EQ("[\"POST\",\"\\u003Carg_url>\"]", | 141 ASSERT_EQ("[\"POST\",\"\\u003Carg_url>\"]", |
| 140 ActivityLogPolicy::Util::Serialize(action->args())); | 142 ActivityLogPolicy::Util::Serialize(action->args())); |
| 141 ASSERT_EQ("http://api.google.com/", action->arg_url().spec()); | 143 ASSERT_EQ("http://api.google.com/", action->arg_url().spec()); |
| 142 // Test that the dom_verb field was changed to XHR (from METHOD). This | 144 // Test that the dom_verb field was changed to XHR (from METHOD). This |
| (...skipping 18 matching lines...) Expand all Loading... |
| 161 ASSERT_FALSE(action->arg_url().is_valid()); | 163 ASSERT_FALSE(action->arg_url().is_valid()); |
| 162 | 164 |
| 163 action = i->at(3); | 165 action = i->at(3); |
| 164 ASSERT_EQ("windows.create", action->api_name()); | 166 ASSERT_EQ("windows.create", action->api_name()); |
| 165 ASSERT_EQ("[{\"url\":\"\\u003Carg_url>\"}]", | 167 ASSERT_EQ("[{\"url\":\"\\u003Carg_url>\"}]", |
| 166 ActivityLogPolicy::Util::Serialize(action->args())); | 168 ActivityLogPolicy::Util::Serialize(action->args())); |
| 167 ASSERT_EQ("http://www.google.co.uk/", action->arg_url().spec()); | 169 ASSERT_EQ("http://www.google.co.uk/", action->arg_url().spec()); |
| 168 } | 170 } |
| 169 | 171 |
| 170 static void RetrieveActions_ArgUrlApiCalls( | 172 static void RetrieveActions_ArgUrlApiCalls( |
| 171 scoped_ptr<std::vector<scoped_refptr<Action> > > actions) { | 173 std::unique_ptr<std::vector<scoped_refptr<Action>>> actions) { |
| 172 size_t api_calls_size = arraysize(kUrlApiCalls); | 174 size_t api_calls_size = arraysize(kUrlApiCalls); |
| 173 const base::DictionaryValue* other = NULL; | 175 const base::DictionaryValue* other = NULL; |
| 174 int dom_verb = -1; | 176 int dom_verb = -1; |
| 175 | 177 |
| 176 ASSERT_EQ(api_calls_size, actions->size()); | 178 ASSERT_EQ(api_calls_size, actions->size()); |
| 177 | 179 |
| 178 for (size_t i = 0; i < actions->size(); i++) { | 180 for (size_t i = 0; i < actions->size(); i++) { |
| 179 scoped_refptr<Action> action = actions->at(i); | 181 scoped_refptr<Action> action = actions->at(i); |
| 180 ASSERT_EQ(kExtensionId, action->extension_id()); | 182 ASSERT_EQ(kExtensionId, action->extension_id()); |
| 181 ASSERT_EQ(Action::ACTION_DOM_ACCESS, action->action_type()); | 183 ASSERT_EQ(Action::ACTION_DOM_ACCESS, action->action_type()); |
| 182 ASSERT_EQ(kUrlApiCalls[i], action->api_name()); | 184 ASSERT_EQ(kUrlApiCalls[i], action->api_name()); |
| 183 ASSERT_EQ("[\"\\u003Carg_url>\"]", | 185 ASSERT_EQ("[\"\\u003Carg_url>\"]", |
| 184 ActivityLogPolicy::Util::Serialize(action->args())); | 186 ActivityLogPolicy::Util::Serialize(action->args())); |
| 185 ASSERT_EQ("http://www.google.co.uk/", action->arg_url().spec()); | 187 ASSERT_EQ("http://www.google.co.uk/", action->arg_url().spec()); |
| 186 other = action->other(); | 188 other = action->other(); |
| 187 ASSERT_TRUE(other); | 189 ASSERT_TRUE(other); |
| 188 ASSERT_TRUE( | 190 ASSERT_TRUE( |
| 189 other->GetInteger(activity_log_constants::kActionDomVerb, &dom_verb)); | 191 other->GetInteger(activity_log_constants::kActionDomVerb, &dom_verb)); |
| 190 ASSERT_EQ(DomActionType::SETTER, dom_verb); | 192 ASSERT_EQ(DomActionType::SETTER, dom_verb); |
| 191 } | 193 } |
| 192 } | 194 } |
| 193 | 195 |
| 194 ExtensionService* extension_service_; | 196 ExtensionService* extension_service_; |
| 195 | 197 |
| 196 #if defined OS_CHROMEOS | 198 #if defined OS_CHROMEOS |
| 197 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; | 199 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; |
| 198 chromeos::ScopedTestCrosSettings test_cros_settings_; | 200 chromeos::ScopedTestCrosSettings test_cros_settings_; |
| 199 scoped_ptr<chromeos::ScopedTestUserManager> test_user_manager_; | 201 std::unique_ptr<chromeos::ScopedTestUserManager> test_user_manager_; |
| 200 #endif | 202 #endif |
| 201 }; | 203 }; |
| 202 | 204 |
| 203 TEST_F(ActivityLogTest, Construct) { | 205 TEST_F(ActivityLogTest, Construct) { |
| 204 ASSERT_TRUE(GetDatabaseEnabled()); | 206 ASSERT_TRUE(GetDatabaseEnabled()); |
| 205 ASSERT_FALSE(GetWatchdogActive()); | 207 ASSERT_FALSE(GetWatchdogActive()); |
| 206 } | 208 } |
| 207 | 209 |
| 208 TEST_F(ActivityLogTest, LogAndFetchActions) { | 210 TEST_F(ActivityLogTest, LogAndFetchActions) { |
| 209 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 211 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 210 scoped_ptr<base::ListValue> args(new base::ListValue()); | 212 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
| 211 ASSERT_TRUE(GetDatabaseEnabled()); | 213 ASSERT_TRUE(GetDatabaseEnabled()); |
| 212 | 214 |
| 213 // Write some API calls | 215 // Write some API calls |
| 214 scoped_refptr<Action> action = new Action(kExtensionId, | 216 scoped_refptr<Action> action = new Action(kExtensionId, |
| 215 base::Time::Now(), | 217 base::Time::Now(), |
| 216 Action::ACTION_API_CALL, | 218 Action::ACTION_API_CALL, |
| 217 "tabs.testMethod"); | 219 "tabs.testMethod"); |
| 218 activity_log->LogAction(action); | 220 activity_log->LogAction(action); |
| 219 action = new Action(kExtensionId, | 221 action = new Action(kExtensionId, |
| 220 base::Time::Now(), | 222 base::Time::Now(), |
| (...skipping 24 matching lines...) Expand all Loading... |
| 245 extension_service_->AddExtension(extension.get()); | 247 extension_service_->AddExtension(extension.get()); |
| 246 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 248 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 247 ASSERT_TRUE(GetDatabaseEnabled()); | 249 ASSERT_TRUE(GetDatabaseEnabled()); |
| 248 GURL url("http://www.google.com"); | 250 GURL url("http://www.google.com"); |
| 249 | 251 |
| 250 prerender::PrerenderManager* prerender_manager = | 252 prerender::PrerenderManager* prerender_manager = |
| 251 prerender::PrerenderManagerFactory::GetForProfile( | 253 prerender::PrerenderManagerFactory::GetForProfile( |
| 252 Profile::FromBrowserContext(profile())); | 254 Profile::FromBrowserContext(profile())); |
| 253 | 255 |
| 254 const gfx::Size kSize(640, 480); | 256 const gfx::Size kSize(640, 480); |
| 255 scoped_ptr<prerender::PrerenderHandle> prerender_handle( | 257 std::unique_ptr<prerender::PrerenderHandle> prerender_handle( |
| 256 prerender_manager->AddPrerenderFromOmnibox( | 258 prerender_manager->AddPrerenderFromOmnibox( |
| 257 url, | 259 url, |
| 258 web_contents()->GetController().GetDefaultSessionStorageNamespace(), | 260 web_contents()->GetController().GetDefaultSessionStorageNamespace(), |
| 259 kSize)); | 261 kSize)); |
| 260 | 262 |
| 261 const std::vector<content::WebContents*> contentses = | 263 const std::vector<content::WebContents*> contentses = |
| 262 prerender_manager->GetAllPrerenderingContents(); | 264 prerender_manager->GetAllPrerenderingContents(); |
| 263 ASSERT_EQ(1U, contentses.size()); | 265 ASSERT_EQ(1U, contentses.size()); |
| 264 content::WebContents *contents = contentses[0]; | 266 content::WebContents *contents = contentses[0]; |
| 265 ASSERT_TRUE(prerender_manager->IsWebContentsPrerendering(contents, NULL)); | 267 ASSERT_TRUE(prerender_manager->IsWebContentsPrerendering(contents, NULL)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 277 "", | 279 "", |
| 278 "", | 280 "", |
| 279 0, | 281 0, |
| 280 base::Bind(ActivityLogTest::Arguments_Prerender)); | 282 base::Bind(ActivityLogTest::Arguments_Prerender)); |
| 281 | 283 |
| 282 prerender_manager->CancelAllPrerenders(); | 284 prerender_manager->CancelAllPrerenders(); |
| 283 } | 285 } |
| 284 | 286 |
| 285 TEST_F(ActivityLogTest, ArgUrlExtraction) { | 287 TEST_F(ActivityLogTest, ArgUrlExtraction) { |
| 286 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 288 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 287 scoped_ptr<base::ListValue> args(new base::ListValue()); | 289 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
| 288 | 290 |
| 289 base::Time now = base::Time::Now(); | 291 base::Time now = base::Time::Now(); |
| 290 | 292 |
| 291 // Submit a DOM API call which should have its URL extracted into the arg_url | 293 // Submit a DOM API call which should have its URL extracted into the arg_url |
| 292 // field. | 294 // field. |
| 293 scoped_refptr<Action> action = new Action(kExtensionId, | 295 scoped_refptr<Action> action = new Action(kExtensionId, |
| 294 now, | 296 now, |
| 295 Action::ACTION_DOM_ACCESS, | 297 Action::ACTION_DOM_ACCESS, |
| 296 "XMLHttpRequest.open"); | 298 "XMLHttpRequest.open"); |
| 297 action->set_page_url(GURL("http://www.google.com/")); | 299 action->set_page_url(GURL("http://www.google.com/")); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 scoped_refptr<const Extension> extension = | 354 scoped_refptr<const Extension> extension = |
| 353 ExtensionBuilder() | 355 ExtensionBuilder() |
| 354 .SetManifest(DictionaryBuilder() | 356 .SetManifest(DictionaryBuilder() |
| 355 .Set("name", "Test extension") | 357 .Set("name", "Test extension") |
| 356 .Set("version", "1.0.0") | 358 .Set("version", "1.0.0") |
| 357 .Set("manifest_version", 2) | 359 .Set("manifest_version", 2) |
| 358 .Build()) | 360 .Build()) |
| 359 .Build(); | 361 .Build(); |
| 360 | 362 |
| 361 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 363 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 362 scoped_ptr<base::ListValue> args(new base::ListValue()); | 364 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
| 363 ASSERT_TRUE(GetDatabaseEnabled()); | 365 ASSERT_TRUE(GetDatabaseEnabled()); |
| 364 | 366 |
| 365 // Write some API calls | 367 // Write some API calls |
| 366 scoped_refptr<Action> action = new Action(extension->id(), | 368 scoped_refptr<Action> action = new Action(extension->id(), |
| 367 base::Time::Now(), | 369 base::Time::Now(), |
| 368 Action::ACTION_API_CALL, | 370 Action::ACTION_API_CALL, |
| 369 "tabs.testMethod"); | 371 "tabs.testMethod"); |
| 370 activity_log->LogAction(action); | 372 activity_log->LogAction(action); |
| 371 action = new Action(extension->id(), | 373 action = new Action(extension->id(), |
| 372 base::Time::Now(), | 374 base::Time::Now(), |
| 373 Action::ACTION_DOM_ACCESS, | 375 Action::ACTION_DOM_ACCESS, |
| 374 "document.write"); | 376 "document.write"); |
| 375 action->set_page_url(GURL("http://www.google.com")); | 377 action->set_page_url(GURL("http://www.google.com")); |
| 376 | 378 |
| 377 activity_log->OnExtensionUninstalled( | 379 activity_log->OnExtensionUninstalled( |
| 378 NULL, extension.get(), extensions::UNINSTALL_REASON_FOR_TESTING); | 380 NULL, extension.get(), extensions::UNINSTALL_REASON_FOR_TESTING); |
| 379 activity_log->GetFilteredActions( | 381 activity_log->GetFilteredActions( |
| 380 extension->id(), | 382 extension->id(), |
| 381 Action::ACTION_ANY, | 383 Action::ACTION_ANY, |
| 382 "", | 384 "", |
| 383 "", | 385 "", |
| 384 "", | 386 "", |
| 385 -1, | 387 -1, |
| 386 base::Bind(ActivityLogTest::RetrieveActions_LogAndFetchActions0)); | 388 base::Bind(ActivityLogTest::RetrieveActions_LogAndFetchActions0)); |
| 387 } | 389 } |
| 388 | 390 |
| 389 TEST_F(ActivityLogTest, ArgUrlApiCalls) { | 391 TEST_F(ActivityLogTest, ArgUrlApiCalls) { |
| 390 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); | 392 ActivityLog* activity_log = ActivityLog::GetInstance(profile()); |
| 391 scoped_ptr<base::ListValue> args(new base::ListValue()); | 393 std::unique_ptr<base::ListValue> args(new base::ListValue()); |
| 392 base::Time now = base::Time::Now(); | 394 base::Time now = base::Time::Now(); |
| 393 int api_calls_size = arraysize(kUrlApiCalls); | 395 int api_calls_size = arraysize(kUrlApiCalls); |
| 394 scoped_refptr<Action> action; | 396 scoped_refptr<Action> action; |
| 395 | 397 |
| 396 for (int i = 0; i < api_calls_size; i++) { | 398 for (int i = 0; i < api_calls_size; i++) { |
| 397 action = new Action(kExtensionId, | 399 action = new Action(kExtensionId, |
| 398 now - base::TimeDelta::FromSeconds(i), | 400 now - base::TimeDelta::FromSeconds(i), |
| 399 Action::ACTION_DOM_ACCESS, | 401 Action::ACTION_DOM_ACCESS, |
| 400 kUrlApiCalls[i]); | 402 kUrlApiCalls[i]); |
| 401 action->mutable_args()->AppendString("http://www.google.co.uk"); | 403 action->mutable_args()->AppendString("http://www.google.co.uk"); |
| 402 action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb, | 404 action->mutable_other()->SetInteger(activity_log_constants::kActionDomVerb, |
| 403 DomActionType::SETTER); | 405 DomActionType::SETTER); |
| 404 activity_log->LogAction(action); | 406 activity_log->LogAction(action); |
| 405 } | 407 } |
| 406 | 408 |
| 407 activity_log->GetFilteredActions( | 409 activity_log->GetFilteredActions( |
| 408 kExtensionId, | 410 kExtensionId, |
| 409 Action::ACTION_ANY, | 411 Action::ACTION_ANY, |
| 410 "", | 412 "", |
| 411 "", | 413 "", |
| 412 "", | 414 "", |
| 413 -1, | 415 -1, |
| 414 base::Bind(ActivityLogTest::RetrieveActions_ArgUrlApiCalls)); | 416 base::Bind(ActivityLogTest::RetrieveActions_ArgUrlApiCalls)); |
| 415 } | 417 } |
| 416 | 418 |
| 417 } // namespace extensions | 419 } // namespace extensions |
| OLD | NEW |