Bug 1294220 - part4: Add chrome:// protocol when loading raw properties files;r=tromey draft
authorJulian Descottes <jdescottes@mozilla.com>
Sat, 20 Aug 2016 20:31:53 +0200
changeset 404093 d2665de41b17f335fd164480fffa2e5c2c4f4945
parent 404092 c6fe88c94206f30a83eea94619fc882100c7f2e4
child 404094 515f68591ec275d4c7202e12dcc8ea06c3b4ba60
push id27113
push userjdescottes@mozilla.com
push dateMon, 22 Aug 2016 22:13:54 +0000
reviewerstromey
bugs1294220
milestone51.0a1
Bug 1294220 - part4: Add chrome:// protocol when loading raw properties files;r=tromey MozReview-Commit-ID: HJfFoqNso2J
devtools/shared/loader-plugin-raw.jsm
devtools/shared/tests/unit/test_require_raw.js
--- 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");
 }