Bug 1323399 - Fix the stylo-vs-gecko reftest harness. r?heycam draft
authorShing Lyu <shing.lyu@gmail.com>
Wed, 14 Dec 2016 15:44:39 +0800
changeset 450254 9e7a25e136af823b002df4ac54da854a04fb7162
parent 450025 10ac81fb6185037648c6694889aa030d28a5e8a5
child 456278 d448f91d134c3cacbf557f26f1bc9363b756c0d8
push id38815
push userbmo:slyu@mozilla.com
push dateFri, 16 Dec 2016 08:36:02 +0000
reviewersheycam
bugs1323399
milestone53.0a1
Bug 1323399 - Fix the stylo-vs-gecko reftest harness. r?heycam MozReview-Commit-ID: 7htc3KOGGl6
layout/tools/reftest/reftest.jsm
testing/mozharness/configs/unittests/linux_unittest.py
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -50,16 +50,17 @@ var gTotalChunks = 0;
 var gThisChunk = 0;
 var gContainingWindow = null;
 var gURLFilterRegex = {};
 var gContentGfxInfo = null;
 const FOCUS_FILTER_ALL_TESTS = "all";
 const FOCUS_FILTER_NEEDS_FOCUS_TESTS = "needs-focus";
 const FOCUS_FILTER_NON_NEEDS_FOCUS_TESTS = "non-needs-focus";
 var gFocusFilterMode = FOCUS_FILTER_ALL_TESTS;
+var gCompareStyloToGecko = false;
 
 // "<!--CLEAR-->"
 const BLANK_URL_FOR_CLEARING = "data:text/html;charset=UTF-8,%3C%21%2D%2DCLEAR%2D%2D%3E";
 
 var gBrowser;
 // Are we testing web content loaded in a separate process?
 var gBrowserIsRemote;           // bool
 var gB2GisMulet;                // bool
@@ -404,16 +405,22 @@ function InitAndStartRefTests()
         gTotalChunks = 0;
         gThisChunk = 0;
     }
 
     try {
         gFocusFilterMode = prefs.getCharPref("reftest.focusFilterMode");
     } catch(e) {}
 
+#ifdef MOZ_STYLO
+    try {
+        gCompareStyloToGecko = prefs.getBoolPref("reftest.compareStyloToGecko");
+    } catch(e) {}
+#endif
+
     gWindowUtils = gContainingWindow.QueryInterface(CI.nsIInterfaceRequestor).getInterface(CI.nsIDOMWindowUtils);
     if (!gWindowUtils || !gWindowUtils.compareCanvases)
         throw "nsIDOMWindowUtils inteface missing";
 
     gIOService = CC[IO_SERVICE_CONTRACTID].getService(CI.nsIIOService);
     gDebug = CC[DEBUG_CONTRACTID].getService(CI.nsIDebug2);
 
     RegisterProcessCrashObservers();
@@ -1301,20 +1308,31 @@ function StartCurrentTest()
 
 function StartCurrentURI(aState)
 {
     gState = aState;
     gCurrentURL = gURLs[0]["url" + aState].spec;
 
     RestoreChangedPreferences();
 
+    var prefs = Components.classes["@mozilla.org/preferences-service;1"].
+        getService(Components.interfaces.nsIPrefBranch);
+
+    if (gCompareStyloToGecko) {
+        if (gState == 2){
+            logger.info("Disabling Servo-backed style system");
+            prefs.setBoolPref('layout.css.servo.enabled', false);
+        } else {
+            logger.info("Enabling Servo-backed style system");
+            prefs.setBoolPref('layout.css.servo.enabled', true);
+        }
+    }
+
     var prefSettings = gURLs[0]["prefSettings" + aState];
     if (prefSettings.length > 0) {
-        var prefs = Components.classes["@mozilla.org/preferences-service;1"].
-                    getService(Components.interfaces.nsIPrefBranch);
         var badPref = undefined;
         try {
             prefSettings.forEach(function(ps) {
                 var oldVal;
                 if (ps.type == PREF_BOOLEAN) {
                     try {
                         oldVal = prefs.getBoolPref(ps.name);
                     } catch (e) {
--- a/testing/mozharness/configs/unittests/linux_unittest.py
+++ b/testing/mozharness/configs/unittests/linux_unittest.py
@@ -220,17 +220,18 @@ config = {
             "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]
         },
         "reftest-no-accel": {
             "options": ["--suite=reftest",
                         "--setpref=layers.acceleration.force-enabled=disabled"],
             "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]},
         "reftest-stylo": {
             "options": ["--suite=reftest",
-                        "--disable-e10s"],
+                        "--disable-e10s",
+                        "--setpref=reftest.compareStyloToGecko=true"],
             "tests": ["tests/reftest/tests/layout/reftests/reftest-stylo.list"],
         },
     },
     "all_xpcshell_suites": {
         "xpcshell": {
             "options": ["--xpcshell=%(abs_app_dir)s/" + XPCSHELL_NAME,
                         "--manifest=tests/xpcshell/tests/xpcshell.ini"],
             "tests": []