summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/extensions/cross_origin_xhr_apitest.cc12
-rw-r--r--chrome/browser/extensions/extension_apitest.cc7
-rw-r--r--chrome/browser/renderer_host/chrome_render_view_host_observer.cc7
3 files changed, 22 insertions, 4 deletions
diff --git a/chrome/browser/extensions/cross_origin_xhr_apitest.cc b/chrome/browser/extensions/cross_origin_xhr_apitest.cc
index 43fa257..7f67897 100644
--- a/chrome/browser/extensions/cross_origin_xhr_apitest.cc
+++ b/chrome/browser/extensions/cross_origin_xhr_apitest.cc
@@ -17,9 +17,17 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CrossOriginXHRAllURLs) {
ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/all_urls")) << message_;
}
-// Flaky on the trybots. See http://crbug.com/96725.
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, FLAKY_CrossOriginXHRContentScript) {
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CrossOriginXHRContentScript) {
host_resolver()->AddRule("*.com", "127.0.0.1");
ASSERT_TRUE(StartTestServer());
ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/content_script")) << message_;
}
+
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CrossOriginXHRFileAccess) {
+ ASSERT_TRUE(RunExtensionTest("cross_origin_xhr/file_access")) << message_;
+}
+
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CrossOriginXHRNoFileAccess) {
+ ASSERT_TRUE(RunExtensionTestNoFileAccess(
+ "cross_origin_xhr/no_file_access")) << message_;
+}
diff --git a/chrome/browser/extensions/extension_apitest.cc b/chrome/browser/extensions/extension_apitest.cc
index 0631151..893a25d 100644
--- a/chrome/browser/extensions/extension_apitest.cc
+++ b/chrome/browser/extensions/extension_apitest.cc
@@ -18,6 +18,7 @@
namespace {
const char kTestServerPort[] = "testServer.port";
+const char kTestDataDirectory[] = "testDataDirectory";
}; // namespace
@@ -93,6 +94,8 @@ void ExtensionApiTest::ResultCatcher::Observe(
void ExtensionApiTest::SetUpInProcessBrowserTestFixture() {
DCHECK(!test_config_.get()) << "Previous test did not clear config state.";
test_config_.reset(new DictionaryValue());
+ test_config_->SetString(kTestDataDirectory,
+ net::FilePathToFileURL(test_data_dir_).spec());
ExtensionTestGetConfigFunction::set_test_config_state(test_config_.get());
}
@@ -233,8 +236,8 @@ bool ExtensionApiTest::StartTestServer() {
return false;
// Build a dictionary of values that tests can use to build URLs that
- // access the test server. Tests can see these values using the extension
- // API function chrome.test.getConfig().
+ // access the test server and local file system. Tests can see these values
+ // using the extension API function chrome.test.getConfig().
test_config_->SetInteger(kTestServerPort,
test_server()->host_port_pair().port());
diff --git a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc
index cb924d3..eb0646c 100644
--- a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc
+++ b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc
@@ -116,6 +116,13 @@ void ChromeRenderViewHostObserver::InitRenderViewForExtensions() {
process->id(), chrome::kChromeUIScheme);
}
+ if (type == Extension::TYPE_EXTENSION &&
+ profile_->GetExtensionService()->extension_prefs()->AllowFileAccess(
+ extension->id())) {
+ ChildProcessSecurityPolicy::GetInstance()->GrantScheme(
+ process->id(), chrome::kFileScheme);
+ }
+
if (type == Extension::TYPE_EXTENSION ||
type == Extension::TYPE_USER_SCRIPT ||
type == Extension::TYPE_PACKAGED_APP ||