Bug 1287007 - Adjust state test in browser_ext_windows_update.js on Linux draft
authorRob Wu <rob@robwu.nl>
Mon, 03 Oct 2016 01:13:32 +0200
changeset 428452 100d147b27929695f5d24ed36798fa7b3e443ae7
parent 428451 b0e4dc4ba30a4be964fbcbe9ca00ca72f4fe136f
child 428453 e25f596cc55fbdc4f5b2af3b70bf7dbc54f9c876
push id33305
push userbmo:rob@robwu.nl
push dateSun, 23 Oct 2016 20:56:25 +0000
bugs1287007, 1307759
milestone52.0a1
Bug 1287007 - Adjust state test in browser_ext_windows_update.js on Linux The test/browser/browser_ext_windows_update.js test fails on Linux. The window ID is not expected to change, add assertion for it to eliminate causes for test failures. Ultimately, it turns out that the test failure is caused by a defect in the implementation, not the test itself, see bugzil.la/1307759 MozReview-Commit-ID: Lo8IIvcfYQ2
browser/components/extensions/test/browser/browser_ext_windows_update.js
--- a/browser/components/extensions/test/browser/browser_ext_windows_update.js
+++ b/browser/components/extensions/test/browser/browser_ext_windows_update.js
@@ -63,18 +63,20 @@ add_task(function* testWindowUpdate() {
       let os;
       function checkWindow(expected) {
         return new Promise(resolve => {
           _checkWindowPromise = {resolve};
           browser.test.sendMessage("check-window", expected);
         });
       }
 
+      let currentWindowId;
       function updateWindow(windowId, params, expected) {
         return browser.windows.update(windowId, params).then(window => {
+          browser.test.assertEq(currentWindowId, window.id, "Expected WINDOW_ID_CURRENT to refer to the same window");
           for (let key of Object.keys(params)) {
             if (key == "state" && os == "mac" && params.state == "normal") {
               // OS-X doesn't have a hard distinction between "normal" and
               // "maximized" states.
               browser.test.assertTrue(window.state == "normal" || window.state == "maximized",
                                       `Expected window.state (currently ${window.state}) to be "normal" but will accept "maximized"`);
             } else {
               browser.test.assertEq(params[key], window[key], `Got expected value for window.${key}`);
@@ -83,16 +85,17 @@ add_task(function* testWindowUpdate() {
 
           return checkWindow(expected);
         });
       }
 
       let windowId = browser.windows.WINDOW_ID_CURRENT;
 
       browser.runtime.getPlatformInfo().then(info => { os = info.os; })
+      .then(() => browser.windows.getCurrent().then(window => { currentWindowId = window.id; }))
       .then(() => updateWindow(windowId, {state: "maximized"}, {state: "STATE_MAXIMIZED"}))
       .then(() => updateWindow(windowId, {state: "minimized"}, {state: "STATE_MINIMIZED"}))
       .then(() => updateWindow(windowId, {state: "normal"}, {state: "STATE_NORMAL"}))
       .then(() => updateWindow(windowId, {state: "fullscreen"}, {state: "STATE_FULLSCREEN"}))
       .then(() => updateWindow(windowId, {state: "normal"}, {state: "STATE_NORMAL"}))
       .then(() => {
         browser.test.notifyPass("window-update");
       }).catch(e => {
@@ -104,17 +107,18 @@ add_task(function* testWindowUpdate() {
 
   extension.onMessage("check-window", expected => {
     if (expected.state != null) {
       let {windowState} = window;
       if (window.fullScreen) {
         windowState = window.STATE_FULLSCREEN;
       }
 
-      if (expected.state == "STATE_NORMAL" && AppConstants.platform == "macosx") {
+      // Temporarily accepting STATE_MAXIMIZED on Linux because of bug 1307759.
+      if (expected.state == "STATE_NORMAL" && (AppConstants.platform == "macosx" || AppConstants.platform == "linux")) {
         ok(windowState == window.STATE_NORMAL || windowState == window.STATE_MAXIMIZED,
            `Expected windowState (currently ${windowState}) to be STATE_NORMAL but will accept STATE_MAXIMIZED`);
       } else {
         is(windowState, window[expected.state],
            `Expected window state to be ${expected.state}`);
       }
     }