Bug 1294220 - part4: Add chrome:// protocol when loading raw properties files;r=tromey
MozReview-Commit-ID: HJfFoqNso2J
--- a/devtools/shared/loader-plugin-raw.jsm
+++ b/devtools/shared/loader-plugin-raw.jsm
@@ -9,24 +9,31 @@ const { NetUtil } = Cu.import("resource:
/**
* A function that can be used as part of a require hook for a
* loader.js Loader. This function only handles webpack-style "raw!"
* requires; other requires should not be passed to this. See
* https://github.com/webpack/raw-loader.
*/
function requireRawId(id, require) {
+ // Add the chrome:// protocol for properties files if missing (see Bug 1294220)
+ if (id.endsWith(".properties") && !id.startsWith("raw!chrome://")) {
+ id = id.replace("raw!", "raw!chrome://");
+ }
+
let uri = require.resolve(id.slice(4));
// If the original string did not end with ".js", then
// require.resolve might have added the suffix. We don't want to
// add a suffix for a raw load (if needed the caller can specify it
// manually), so remove it here.
if (!id.endsWith(".js") && uri.endsWith(".js")) {
uri = uri.slice(0, -3);
}
+
+
let stream = NetUtil.newChannel({
uri: NetUtil.newURI(uri, "UTF-8"),
loadUsingSystemPrincipal: true
}).open2();
let count = stream.available();
let data = NetUtil.readInputStreamToString(stream, count, {
charset: "UTF-8"
--- a/devtools/shared/tests/unit/test_require_raw.js
+++ b/devtools/shared/tests/unit/test_require_raw.js
@@ -4,9 +4,16 @@
// Test require using "raw!".
function run_test() {
let loader = new DevToolsLoader();
let require = loader.require;
let variableFileContents = require("raw!devtools/client/themes/variables.css");
ok(variableFileContents.length > 0, "raw browserRequire worked");
+
+ let propertiesFileContents = require("raw!devtools/locale/shared.properties");
+ ok(propertiesFileContents.length > 0, "unprefixed properties raw require worked");
+
+ let chromePropertiesFileContents =
+ require("raw!chrome://devtools/locale/shared.properties");
+ ok(chromePropertiesFileContents.length > 0, "prefixed properties raw require worked");
}