Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(722)

Side by Side Diff: chrome/browser/extensions/content_script_apitest.cc

Issue 2847313002: Update some host_resolver()->AddRules in chrome/browser. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 public testing::WithParamInterface<TestConfig> { 244 public testing::WithParamInterface<TestConfig> {
245 public: 245 public:
246 void SetUpCommandLine(base::CommandLine* command_line) override { 246 void SetUpCommandLine(base::CommandLine* command_line) override {
247 ExtensionApiTest::SetUpCommandLine(command_line); 247 ExtensionApiTest::SetUpCommandLine(command_line);
248 command_line->AppendSwitchASCII( 248 command_line->AppendSwitchASCII(
249 switches::kYieldBetweenContentScriptRuns, 249 switches::kYieldBetweenContentScriptRuns,
250 (GetParam() == TestConfig::kYieldBetweenContentScriptRunsEnabled) 250 (GetParam() == TestConfig::kYieldBetweenContentScriptRunsEnabled)
251 ? "1" 251 ? "1"
252 : "0"); 252 : "0");
253 } 253 }
254
255 void SetUpOnMainThread() override {
256 ExtensionApiTest::SetUpOnMainThread();
257 host_resolver()->AddRule("*", "127.0.0.1");
258 }
254 }; 259 };
255 260
256 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptAllFrames) { 261 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptAllFrames) {
257 ASSERT_TRUE(StartEmbeddedTestServer()); 262 ASSERT_TRUE(StartEmbeddedTestServer());
258 ASSERT_TRUE(RunExtensionTest("content_scripts/all_frames")) << message_; 263 ASSERT_TRUE(RunExtensionTest("content_scripts/all_frames")) << message_;
259 } 264 }
260 265
261 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptAboutBlankIframes) { 266 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptAboutBlankIframes) {
262 const char* testArg = 267 const char* testArg =
263 GetParam() == TestConfig::kYieldBetweenContentScriptRunsEnabled 268 GetParam() == TestConfig::kYieldBetweenContentScriptRunsEnabled
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 ASSERT_TRUE(StartEmbeddedTestServer()); 317 ASSERT_TRUE(StartEmbeddedTestServer());
313 ASSERT_TRUE(RunExtensionTest("content_scripts/isolated_world1")) << message_; 318 ASSERT_TRUE(RunExtensionTest("content_scripts/isolated_world1")) << message_;
314 319
315 // Now load a different extension, inject into same page, verify worlds aren't 320 // Now load a different extension, inject into same page, verify worlds aren't
316 // shared. 321 // shared.
317 ASSERT_TRUE(RunExtensionTest("content_scripts/isolated_world2")) << message_; 322 ASSERT_TRUE(RunExtensionTest("content_scripts/isolated_world2")) << message_;
318 } 323 }
319 324
320 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, 325 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest,
321 ContentScriptIgnoreHostPermissions) { 326 ContentScriptIgnoreHostPermissions) {
322 host_resolver()->AddRule("a.com", "127.0.0.1");
323 host_resolver()->AddRule("b.com", "127.0.0.1");
324 ASSERT_TRUE(StartEmbeddedTestServer()); 327 ASSERT_TRUE(StartEmbeddedTestServer());
325 ASSERT_TRUE(RunExtensionTest( 328 ASSERT_TRUE(RunExtensionTest(
326 "content_scripts/dont_match_host_permissions")) << message_; 329 "content_scripts/dont_match_host_permissions")) << message_;
327 } 330 }
328 331
329 // crbug.com/39249 -- content scripts js should not run on view source. 332 // crbug.com/39249 -- content scripts js should not run on view source.
330 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptViewSource) { 333 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptViewSource) {
331 ASSERT_TRUE(StartEmbeddedTestServer()); 334 ASSERT_TRUE(StartEmbeddedTestServer());
332 ASSERT_TRUE(RunExtensionTest("content_scripts/view_source")) << message_; 335 ASSERT_TRUE(RunExtensionTest("content_scripts/view_source")) << message_;
333 } 336 }
334 337
335 // crbug.com/126257 -- content scripts should not get injected into other 338 // crbug.com/126257 -- content scripts should not get injected into other
336 // extensions. 339 // extensions.
337 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptOtherExtensions) { 340 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptOtherExtensions) {
338 host_resolver()->AddRule("a.com", "127.0.0.1");
339 ASSERT_TRUE(StartEmbeddedTestServer()); 341 ASSERT_TRUE(StartEmbeddedTestServer());
340 // First, load extension that sets up content script. 342 // First, load extension that sets up content script.
341 ASSERT_TRUE(RunExtensionTest("content_scripts/other_extensions/injector")) 343 ASSERT_TRUE(RunExtensionTest("content_scripts/other_extensions/injector"))
342 << message_; 344 << message_;
343 // Then load targeted extension to make sure its content isn't changed. 345 // Then load targeted extension to make sure its content isn't changed.
344 ASSERT_TRUE(RunExtensionTest("content_scripts/other_extensions/victim")) 346 ASSERT_TRUE(RunExtensionTest("content_scripts/other_extensions/victim"))
345 << message_; 347 << message_;
346 } 348 }
347 349
348 class ContentScriptCssInjectionTest : public ExtensionApiTest { 350 class ContentScriptCssInjectionTest : public ExtensionApiTest {
349 protected: 351 protected:
350 // TODO(rdevlin.cronin): Make a testing switch that looks like FeatureSwitch, 352 // TODO(rdevlin.cronin): Make a testing switch that looks like FeatureSwitch,
351 // but takes in an optional value so that we don't have to do this. 353 // but takes in an optional value so that we don't have to do this.
352 void SetUpCommandLine(base::CommandLine* command_line) override { 354 void SetUpCommandLine(base::CommandLine* command_line) override {
353 ExtensionApiTest::SetUpCommandLine(command_line); 355 ExtensionApiTest::SetUpCommandLine(command_line);
354 // We change the Webstore URL to be http://cws.com. We need to do this so 356 // We change the Webstore URL to be http://cws.com. We need to do this so
355 // we can check that css injection is not allowed on the webstore (which 357 // we can check that css injection is not allowed on the webstore (which
356 // could lead to spoofing). Unfortunately, host_resolver seems to have 358 // could lead to spoofing). Unfortunately, host_resolver seems to have
357 // problems with redirecting "chrome.google.com" to the test server, so we 359 // problems with redirecting "chrome.google.com" to the test server, so we
358 // can't use the real Webstore's URL. If this changes, we could clean this 360 // can't use the real Webstore's URL. If this changes, we could clean this
359 // up. 361 // up.
360 command_line->AppendSwitchASCII( 362 command_line->AppendSwitchASCII(
361 ::switches::kAppsGalleryURL, 363 ::switches::kAppsGalleryURL,
362 base::StringPrintf("http://%s", kWebstoreDomain)); 364 base::StringPrintf("http://%s", kWebstoreDomain));
363 } 365 }
366
367 void SetUpOnMainThread() override {
368 ExtensionApiTest::SetUpOnMainThread();
369 host_resolver()->AddRule("*", "127.0.0.1");
370 }
364 }; 371 };
365 372
366 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, 373 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest,
367 ContentScriptDuplicateScriptInjection) { 374 ContentScriptDuplicateScriptInjection) {
368 host_resolver()->AddRule("maps.google.com", "127.0.0.1");
369 ASSERT_TRUE(StartEmbeddedTestServer()); 375 ASSERT_TRUE(StartEmbeddedTestServer());
370 376
371 GURL url( 377 GURL url(
372 base::StringPrintf("http://maps.google.com:%i/extensions/test_file.html", 378 base::StringPrintf("http://maps.google.com:%i/extensions/test_file.html",
373 embedded_test_server()->port())); 379 embedded_test_server()->port()));
374 380
375 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII( 381 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(
376 "content_scripts/duplicate_script_injection"))); 382 "content_scripts/duplicate_script_injection")));
377 383
378 ui_test_utils::NavigateToURL(browser(), url); 384 ui_test_utils::NavigateToURL(browser(), url);
(...skipping 17 matching lines...) Expand all
396 "window.domAutomationController.send(" 402 "window.domAutomationController.send("
397 "document.getElementsByClassName('injected-twice')" 403 "document.getElementsByClassName('injected-twice')"
398 ".length == 2)", 404 ".length == 2)",
399 &scripts_injected_twice)); 405 &scripts_injected_twice));
400 ASSERT_TRUE(scripts_injected_twice); 406 ASSERT_TRUE(scripts_injected_twice);
401 } 407 }
402 408
403 IN_PROC_BROWSER_TEST_F(ContentScriptCssInjectionTest, 409 IN_PROC_BROWSER_TEST_F(ContentScriptCssInjectionTest,
404 ContentScriptInjectsStyles) { 410 ContentScriptInjectsStyles) {
405 ASSERT_TRUE(StartEmbeddedTestServer()); 411 ASSERT_TRUE(StartEmbeddedTestServer());
406 host_resolver()->AddRule(kWebstoreDomain, "127.0.0.1");
407 412
408 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("content_scripts") 413 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("content_scripts")
409 .AppendASCII("css_injection"))); 414 .AppendASCII("css_injection")));
410 415
411 // CSS injection should be allowed on an aribitrary web page. 416 // CSS injection should be allowed on an aribitrary web page.
412 GURL url = 417 GURL url =
413 embedded_test_server()->GetURL("/extensions/test_file_with_body.html"); 418 embedded_test_server()->GetURL("/extensions/test_file_with_body.html");
414 EXPECT_TRUE(CheckStyleInjection(browser(), url, true)); 419 EXPECT_TRUE(CheckStyleInjection(browser(), url, true));
415 420
416 // The loaded extension has an exclude match for "extensions/test_file.html", 421 // The loaded extension has an exclude match for "extensions/test_file.html",
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 // Flaky on Windows. http://crbug.com/248418 498 // Flaky on Windows. http://crbug.com/248418
494 #if defined(OS_WIN) 499 #if defined(OS_WIN)
495 #define MAYBE_ContentScriptPermissionsApi DISABLED_ContentScriptPermissionsApi 500 #define MAYBE_ContentScriptPermissionsApi DISABLED_ContentScriptPermissionsApi
496 #else 501 #else
497 #define MAYBE_ContentScriptPermissionsApi ContentScriptPermissionsApi 502 #define MAYBE_ContentScriptPermissionsApi ContentScriptPermissionsApi
498 #endif 503 #endif
499 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, 504 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest,
500 MAYBE_ContentScriptPermissionsApi) { 505 MAYBE_ContentScriptPermissionsApi) {
501 extensions::PermissionsRequestFunction::SetIgnoreUserGestureForTests(true); 506 extensions::PermissionsRequestFunction::SetIgnoreUserGestureForTests(true);
502 extensions::PermissionsRequestFunction::SetAutoConfirmForTests(true); 507 extensions::PermissionsRequestFunction::SetAutoConfirmForTests(true);
503 host_resolver()->AddRule("*.com", "127.0.0.1");
504 ASSERT_TRUE(StartEmbeddedTestServer()); 508 ASSERT_TRUE(StartEmbeddedTestServer());
505 ASSERT_TRUE(RunExtensionTest("content_scripts/permissions")) << message_; 509 ASSERT_TRUE(RunExtensionTest("content_scripts/permissions")) << message_;
506 } 510 }
507 511
508 IN_PROC_BROWSER_TEST_F(ExtensionApiTestWithManagementPolicy, 512 IN_PROC_BROWSER_TEST_F(ExtensionApiTestWithManagementPolicy,
509 ContentScriptPolicy) { 513 ContentScriptPolicy) {
510 // Set enterprise policy to block injection to policy specified host. 514 // Set enterprise policy to block injection to policy specified host.
511 { 515 {
512 ExtensionManagementPolicyUpdater pref(&policy_provider_); 516 ExtensionManagementPolicyUpdater pref(&policy_provider_);
513 pref.AddRuntimeBlockedHost("*", "*://example.com/*"); 517 pref.AddRuntimeBlockedHost("*", "*://example.com/*");
514 } 518 }
515 host_resolver()->AddRule("*.com", "127.0.0.1");
516 ASSERT_TRUE(StartEmbeddedTestServer()); 519 ASSERT_TRUE(StartEmbeddedTestServer());
517 ASSERT_TRUE(RunExtensionTest("content_scripts/policy")) << message_; 520 ASSERT_TRUE(RunExtensionTest("content_scripts/policy")) << message_;
518 } 521 }
519 522
520 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptBypassPageCSP) { 523 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, ContentScriptBypassPageCSP) {
521 ASSERT_TRUE(StartEmbeddedTestServer()); 524 ASSERT_TRUE(StartEmbeddedTestServer());
522 ASSERT_TRUE(RunExtensionTest("content_scripts/bypass_page_csp")) << message_; 525 ASSERT_TRUE(RunExtensionTest("content_scripts/bypass_page_csp")) << message_;
523 } 526 }
524 527
525 // Test that when injecting a blocking content script, other scripts don't run 528 // Test that when injecting a blocking content script, other scripts don't run
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 ui_test_utils::NavigateToURLWithDisposition( 688 ui_test_utils::NavigateToURLWithDisposition(
686 browser(), embedded_test_server()->GetURL("/empty.html"), 689 browser(), embedded_test_server()->GetURL("/empty.html"),
687 WindowOpenDisposition::CURRENT_TAB, 690 WindowOpenDisposition::CURRENT_TAB,
688 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 691 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
689 base::RunLoop().RunUntilIdle(); 692 base::RunLoop().RunUntilIdle();
690 EXPECT_TRUE(listener.was_satisfied()); 693 EXPECT_TRUE(listener.was_satisfied());
691 } 694 }
692 695
693 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest, 696 IN_PROC_BROWSER_TEST_P(ContentScriptApiTest,
694 DontInjectContentScriptsInBackgroundPages) { 697 DontInjectContentScriptsInBackgroundPages) {
695 host_resolver()->AddRule("a.com", "127.0.0.1");
696 ASSERT_TRUE(StartEmbeddedTestServer()); 698 ASSERT_TRUE(StartEmbeddedTestServer());
697 // Load two extensions, one with an iframe to a.com in its background page, 699 // Load two extensions, one with an iframe to a.com in its background page,
698 // the other, a content script for a.com. The latter should never be able to 700 // the other, a content script for a.com. The latter should never be able to
699 // inject the script, because scripts aren't allowed to run on foreign 701 // inject the script, because scripts aren't allowed to run on foreign
700 // extensions' pages. 702 // extensions' pages.
701 base::FilePath data_dir = test_data_dir_.AppendASCII("content_scripts"); 703 base::FilePath data_dir = test_data_dir_.AppendASCII("content_scripts");
702 ExtensionTestMessageListener iframe_loaded_listener("iframe loaded", false); 704 ExtensionTestMessageListener iframe_loaded_listener("iframe loaded", false);
703 ExtensionTestMessageListener content_script_listener("script injected", 705 ExtensionTestMessageListener content_script_listener("script injected",
704 false); 706 false);
705 LoadExtension(data_dir.AppendASCII("script_a_com")); 707 LoadExtension(data_dir.AppendASCII("script_a_com"));
706 LoadExtension(data_dir.AppendASCII("background_page_iframe")); 708 LoadExtension(data_dir.AppendASCII("background_page_iframe"));
707 iframe_loaded_listener.WaitUntilSatisfied(); 709 iframe_loaded_listener.WaitUntilSatisfied();
708 EXPECT_FALSE(content_script_listener.was_satisfied()); 710 EXPECT_FALSE(content_script_listener.was_satisfied());
709 } 711 }
710 712
711 INSTANTIATE_TEST_CASE_P( 713 INSTANTIATE_TEST_CASE_P(
712 ContentScriptApiTests, 714 ContentScriptApiTests,
713 ContentScriptApiTest, 715 ContentScriptApiTest,
714 testing::Values(TestConfig::kDefault, 716 testing::Values(TestConfig::kDefault,
715 TestConfig::kYieldBetweenContentScriptRunsEnabled)); 717 TestConfig::kYieldBetweenContentScriptRunsEnabled));
716 718
717 } // namespace extensions 719 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/content_capabilities_browsertest.cc ('k') | chrome/browser/extensions/cross_origin_xhr_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698