From 894c82cec92d96270666a2425b7e2fee21e76781 Mon Sep 17 00:00:00 2001
From: Yury Delendik <ydelendik@mozilla.com>
Date: Mon, 10 Feb 2014 15:06:03 -0600
Subject: [PATCH] Removes -moz-box-sizing usage

---
 extensions/b2g/viewer.css   |  3 +--
 external/builder/builder.js | 22 +++++++++++++++++-----
 make.js                     |  4 +++-
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/extensions/b2g/viewer.css b/extensions/b2g/viewer.css
index b134b4f79..ab1198d89 100644
--- a/extensions/b2g/viewer.css
+++ b/extensions/b2g/viewer.css
@@ -13,9 +13,8 @@
  * limitations under the License.
  */
 
-* { -moz-box-sizing: border-box; }
-
 * {
+  box-sizing: border-box;
   padding: 0;
   margin: 0;
 }
diff --git a/external/builder/builder.js b/external/builder/builder.js
index 864db8509..a7fd887dc 100644
--- a/external/builder/builder.js
+++ b/external/builder/builder.js
@@ -101,17 +101,28 @@ function preprocess(inFilename, outFilename, defines) {
 }
 exports.preprocess = preprocess;
 
+var deprecatedInMozcentral = new RegExp('(^|\\W)(' + [
+    '-moz-box-sizing',
+    '-moz-grab',
+    '-moz-grabbing'
+  ].join('|') + ')');
+
 function preprocessCSS(mode, source, destination) {
-  function hasPrefixed(line) {
+  function hasPrefixedFirefox(line) {
     return (/(^|\W)-(ms|o|webkit)-\w/.test(line));
   }
 
-  function removePrefixed(content) {
+  function hasPrefixedMozcentral(line) {
+    return (/(^|\W)-(ms|o|webkit)-\w/.test(line) ||
+            deprecatedInMozcentral.test(line));
+  }
+
+  function removePrefixed(content, hasPrefixedFilter) {
     var lines = content.split(/\r?\n/g);
     var i = 0;
     while (i < lines.length) {
       var line = lines[i];
-      if (!hasPrefixed(line)) {
+      if (!hasPrefixedFilter(line)) {
         i++;
         continue;
       }
@@ -151,12 +162,13 @@ function preprocessCSS(mode, source, destination) {
     return lines.join('\n');
   }
 
-  if (mode !== 'firefox') {
+  if (mode !== 'firefox' && mode !== 'mozcentral') {
     throw new Error('Invalid CSS preprocessor mode');
   }
 
   var content = fs.readFileSync(source, 'utf8');
-  var out = removePrefixed(content);
+  var out = removePrefixed(content,
+    mode === 'mozcentral' ? hasPrefixedMozcentral : hasPrefixedFirefox);
   fs.writeFileSync(destination, out);
 }
 exports.preprocessCSS = preprocessCSS;
diff --git a/make.js b/make.js
index eee901647..a9a4c63cc 100644
--- a/make.js
+++ b/make.js
@@ -613,7 +613,9 @@ target.mozcentral = function() {
       [SRC_DIR + 'core/network.js', MOZCENTRAL_CONTENT_DIR]
     ],
     preprocessCSS: [
-      ['firefox', 'web/viewer.css', MOZCENTRAL_CONTENT_DIR + '/web/viewer.css']
+      ['mozcentral',
+       'web/viewer.css',
+       MOZCENTRAL_CONTENT_DIR + '/web/viewer.css']
     ]
   };
   builder.build(setup);