| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/extensions/extension_apitest.h" |
| #include "content/public/test/browser_test.h" |
| #include "extensions/buildflags/buildflags.h" |
| #include "net/dns/mock_host_resolver.h" |
| |
| static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE)); |
| |
| namespace extensions { |
| |
| class CrossOriginXhrTest : public ExtensionApiTest { |
| public: |
| void SetUpOnMainThread() override { |
| ExtensionApiTest::SetUpOnMainThread(); |
| host_resolver()->AddRule("*.com", "127.0.0.1"); |
| ASSERT_TRUE(StartEmbeddedTestServer()); |
| } |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(CrossOriginXhrTest, BackgroundPage) { |
| ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/background_page")) << message_; |
| } |
| |
| IN_PROC_BROWSER_TEST_F(CrossOriginXhrTest, ContentScript) { |
| ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/content_script")) << message_; |
| } |
| |
| // Tests that an extension frame can xhr a file url if it has file access and |
| // "<all_urls>" host permissions. |
| IN_PROC_BROWSER_TEST_F(CrossOriginXhrTest, FileAccessAllURLs) { |
| ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/file_access_all_urls", {}, |
| {.allow_file_access = true})) |
| << message_; |
| } |
| |
| // Tests that an extension frame can't xhr a file url if it has no file access |
| // even with the "<all_urls>" host permissions. |
| IN_PROC_BROWSER_TEST_F(CrossOriginXhrTest, NoFileAccessAllURLs) { |
| ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/no_file_access_all_urls")) |
| << message_; |
| } |
| |
| // Ensures that an extension tab having no corresponding background page can xhr |
| // a file URL. Regression test for crbug.com/40749878. |
| IN_PROC_BROWSER_TEST_F(CrossOriginXhrTest, FileAccessNoBackgroundPage) { |
| ASSERT_TRUE(RunExtensionTest( |
| "cross_origin_xhr/file_access_no_background_page", |
| {.extension_url = "test.html"}, {.allow_file_access = true})) |
| << message_; |
| } |
| |
| // Tests that an extension frame can't xhr a file url if it does not have host |
| // permissions to the file scheme even though it has file access. |
| IN_PROC_BROWSER_TEST_F(CrossOriginXhrTest, FileAccessNoHosts) { |
| ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/file_access_no_hosts", {}, |
| {.allow_file_access = true})) |
| << message_; |
| } |
| |
| } // namespace extensions |