browser/devtools/scratchpad/test/browser_scratchpad_browser_last_window_closing.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* vim: set ts=2 et sw=2 tw=80: */
     2 /* Any copyright is dedicated to the Public Domain.
     3    http://creativecommons.org/publicdomain/zero/1.0/ */
     5 const BUTTON_POSITION_CANCEL     = 1;
     6 const BUTTON_POSITION_DONT_SAVE  = 2;
     9 function test()
    10 {
    11   waitForExplicitFinish();
    13   // Observer must be attached *before* Scratchpad is opened.
    14   CloseObserver.init();
    16   gBrowser.selectedTab = gBrowser.addTab();
    17   gBrowser.selectedBrowser.addEventListener("load", function onTabLoad() {
    18     gBrowser.selectedBrowser.removeEventListener("load", onTabLoad, true);
    19     openScratchpad(runTests);
    20   }, true);
    22   content.location = "data:text/html;charset=utf8,<p>test browser last window closing</p>";
    23 }
    27 function runTests({ Scratchpad })
    28 {
    29   let browser = Services.wm.getEnumerator("navigator:browser").getNext();
    30   let oldPrompt = Services.prompt;
    31   let button;
    33   Services.prompt = {
    34     confirmEx: () => button
    35   };
    38   Scratchpad.dirty = true;
    40   // Test canceling close.
    41   button = BUTTON_POSITION_CANCEL;
    42   CloseObserver.expectedValue = true;
    43   browser.BrowserTryToCloseWindow();
    45   // Test accepting close.
    46   button = BUTTON_POSITION_DONT_SAVE;
    47   CloseObserver.expectedValue = false;
    48   browser.BrowserTryToCloseWindow();
    50   // Test closing without prompt needed.
    51   Scratchpad.dirty = false;
    52   browser.BrowserTryToCloseWindow();
    54   Services.prompt = oldPrompt;
    55   CloseObserver.uninit();
    56   finish();
    57 }
    60 let CloseObserver = {
    61   expectedValue: null,
    62   init: function()
    63   {
    64     Services.obs.addObserver(this, "browser-lastwindow-close-requested", false);
    65   },
    67   observe: function(aSubject)
    68   {
    69     aSubject.QueryInterface(Ci.nsISupportsPRBool);
    70     let message = this.expectedValue ? "close" : "stay open";
    71     ok(this.expectedValue === aSubject.data, "Expected browser to " + message);
    72     aSubject.data = true;
    73   },
    75   uninit: function()
    76   {
    77     Services.obs.removeObserver(this, "browser-lastwindow-close-requested", false);
    78   },
    79 };

mercurial