Debugging patch for bug 857427
authorEhsan Akhgari <ehsan@mozilla.com>
Fri, 14 Mar 2014 14:00:29 -0400
changeset 191909 dd25a11b9f63b928c187e80102686600546ed2ea
parent 191908 6bf817013e40d1f54f0f9a8b6110b03f45caa463
child 191910 256dfb415f148bb6aa2ec109bd7108b091bc72b5
push id474
push userasasaki@mozilla.com
push dateMon, 02 Jun 2014 21:01:02 +0000
treeherdermozilla-release@967f4cf1b31c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs857427
milestone30.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Debugging patch for bug 857427
browser/base/content/test/general/browser_save_link-perwindowpb.js
--- a/browser/base/content/test/general/browser_save_link-perwindowpb.js
+++ b/browser/base/content/test/general/browser_save_link-perwindowpb.js
@@ -8,141 +8,178 @@ let tempScope = {};
 Cu.import("resource://gre/modules/NetUtil.jsm", tempScope);
 let NetUtil = tempScope.NetUtil;
 
 // Trigger a save of a link in public mode, then trigger an identical save
 // in private mode and ensure that the second request is differentiated from
 // the first by checking that cookies set by the first response are not sent
 // during the second request.
 function triggerSave(aWindow, aCallback) {
+  info("started triggerSave");
   var fileName;
   let testBrowser = aWindow.gBrowser.selectedBrowser;
   // This page sets a cookie if and only if a cookie does not exist yet
   let testURI = "http://mochi.test:8888/browser/browser/base/content/test/general/bug792517-2.html";
   testBrowser.loadURI(testURI);
   testBrowser.addEventListener("pageshow", function pageShown(event) {
+    info("got pageshow with " + event.target.location);
     if (event.target.location != testURI) {
+      info("try again!");
       testBrowser.loadURI(testURI);
       return;
     }
+    info("found our page!");
     testBrowser.removeEventListener("pageshow", pageShown, false);
 
     executeSoon(function () {
+      info("register to handle popupshown");
       aWindow.document.addEventListener("popupshown", function(e) contextMenuOpened(aWindow, e), false);
 
       var link = testBrowser.contentDocument.getElementById("fff");
+      info("link: " + link);
       EventUtils.synthesizeMouseAtCenter(link,
                                          { type: "contextmenu", button: 2 },
                                          testBrowser.contentWindow);
+      info("right clicked!");
     });
   }, false);
 
   function contextMenuOpened(aWindow, event) {
+    info("contextMenuOpened");
     event.currentTarget.removeEventListener("popupshown", contextMenuOpened, false);
 
     // Create the folder the link will be saved into.
     var destDir = createTemporarySaveDirectory();
     var destFile = destDir.clone();
 
     MockFilePicker.displayDirectory = destDir;
     MockFilePicker.showCallback = function(fp) {
+      info("showCallback");
       fileName = fp.defaultString;
+      info("fileName: " + fileName);
       destFile.append (fileName);
       MockFilePicker.returnFiles = [destFile];
       MockFilePicker.filterIndex = 1; // kSaveAsType_URL
+      info("done showCallback");
     };
 
     mockTransferCallback = function(downloadSuccess) {
+      info("mockTransferCallback");
       onTransferComplete(aWindow, downloadSuccess, destDir);
       destDir.remove(true);
       ok(!destDir.exists(), "Destination dir should be removed");
       ok(!destFile.exists(), "Destination file should be removed");
       mockTransferCallback = function(){};
+      info("done mockTransferCallback");
     }
 
     // Select "Save Link As" option from context menu
     var saveLinkCommand = aWindow.document.getElementById("context-savelink");
+    info("saveLinkCommand: " + saveLinkCommand);
     saveLinkCommand.doCommand();
 
     event.target.hidePopup();
+    info("popup hidden");
   }
 
   function onTransferComplete(aWindow, downloadSuccess, destDir) {
     ok(downloadSuccess, "Link should have been downloaded successfully");
     aWindow.gBrowser.removeCurrentTab();
 
     executeSoon(function() aCallback());
   }
 }
 
 function test() {
+  info("Start the test");
   waitForExplicitFinish();
 
   var windowsToClose = [];
   var gNumSet = 0;
   function testOnWindow(options, callback) {
+    info("testOnWindow(" + options + ")");
     var win = OpenBrowserWindow(options);
+    info("got " + win);
     whenDelayedStartupFinished(win, () => callback(win));
   }
 
   function whenDelayedStartupFinished(aWindow, aCallback) {
+    info("whenDelayedStartupFinished");
     Services.obs.addObserver(function observer(aSubject, aTopic) {
+      info("whenDelayedStartupFinished, got topic: " + aTopic + ", got subject: " + aSubject + ", waiting for " + aWindow);
       if (aWindow == aSubject) {
         Services.obs.removeObserver(observer, aTopic);
         executeSoon(aCallback);
+        info("whenDelayedStartupFinished found our window");
       }
     }, "browser-delayed-startup-finished", false);
   }
 
   mockTransferRegisterer.register();
 
   registerCleanupFunction(function () {
+    info("Running the cleanup code");
     mockTransferRegisterer.unregister();
     MockFilePicker.cleanup();
     windowsToClose.forEach(function(win) {
       win.close();
     });
     Services.obs.removeObserver(observer, "http-on-modify-request");
     Services.obs.removeObserver(observer, "http-on-examine-response");
+    info("Finished running the cleanup code");
   });
  
   function observer(subject, topic, state) {
+    info("observer called with " + topic);
     if (topic == "http-on-modify-request") {
       onModifyRequest(subject);
     } else if (topic == "http-on-examine-response") {
       onExamineResponse(subject);
     }
   }
 
   function onExamineResponse(subject) {
     let channel = subject.QueryInterface(Ci.nsIHttpChannel);
+    info("onExamineResponse with " + channel.URI.spec);
     if (channel.URI.spec != "http://mochi.test:8888/browser/browser/base/content/test/general/bug792517.sjs") {
+      info("returning");
       return;
     }
     try {
       let cookies = channel.getResponseHeader("set-cookie");
       // From browser/base/content/test/general/bug792715.sjs, we receive a Set-Cookie
       // header with foopy=1 when there are no cookies for that domain.
       is(cookies, "foopy=1", "Cookie should be foopy=1");
       gNumSet += 1;
-    } catch (ex if ex.result == Cr.NS_ERROR_NOT_AVAILABLE) { }
+      info("gNumSet = " + gNumSet);
+    } catch (ex if ex.result == Cr.NS_ERROR_NOT_AVAILABLE) {
+      info("onExamineResponse caught NOTAVAIL" + ex);
+    } catch (ex) {
+      info("ionExamineResponse caught " + ex);
+    }
   }
 
   function onModifyRequest(subject) {
     let channel = subject.QueryInterface(Ci.nsIHttpChannel);
+    info("onModifyRequest with " + channel.URI.spec);
     if (channel.URI.spec != "http://mochi.test:8888/browser/browser/base/content/test/general/bug792517.sjs") {
       return;
     }
     try {
       let cookies = channel.getRequestHeader("cookie");
+      info("cookies: " + cookies);
       // From browser/base/content/test/general/bug792715.sjs, we should never send a
       // cookie because we are making only 2 requests: one in public mode, and
       // one in private mode.
       throw "We should never send a cookie in this test";
-    } catch (ex if ex.result == Cr.NS_ERROR_NOT_AVAILABLE) { }
+    } catch (ex if ex.result == Cr.NS_ERROR_NOT_AVAILABLE) {
+      info("onModifyRequest caught NOTAVAIL" + ex);
+    } catch (ex) {
+      info("ionModifyRequest caught " + ex);
+    }
   }
 
   Services.obs.addObserver(observer, "http-on-modify-request", false);
   Services.obs.addObserver(observer, "http-on-examine-response", false);
 
   testOnWindow(undefined, function(win) {
     // The first save from a regular window sets a cookie.
     triggerSave(win, function() {
@@ -164,12 +201,15 @@ Cc["@mozilla.org/moz/jssubscript-loader;
   .loadSubScript("chrome://mochitests/content/browser/toolkit/content/tests/browser/common/mockTransfer.js",
                  this);
 
 function createTemporarySaveDirectory() {
   var saveDir = Cc["@mozilla.org/file/directory_service;1"]
                   .getService(Ci.nsIProperties)
                   .get("TmpD", Ci.nsIFile);
   saveDir.append("testsavedir");
-  if (!saveDir.exists())
+  if (!saveDir.exists()) {
+    info("create testsavedir!");
     saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
+  }
+  info("return from createTempSaveDir: " + saveDir.path);
   return saveDir;
 }