browser/base/content/test/general/browser_bug356571.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 // Bug 356571 - loadOneOrMoreURIs gives up if one of the URLs has an unknown protocol
     3 const Cr = Components.results;
     4 const Cm = Components.manager;
     6 // Set to true when docShell alerts for unknown protocol error
     7 var didFail = false;
     9 // Override Alert to avoid blocking the test due to unknown protocol error
    10 const kPromptServiceUUID = "{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}";
    11 const kPromptServiceContractID = "@mozilla.org/embedcomp/prompt-service;1";
    13 // Save original prompt service factory
    14 const kPromptServiceFactory = Cm.getClassObject(Cc[kPromptServiceContractID],
    15                                                 Ci.nsIFactory);
    17 let fakePromptServiceFactory = {
    18   createInstance: function(aOuter, aIid) {
    19     if (aOuter != null)
    20       throw Cr.NS_ERROR_NO_AGGREGATION;
    21     return promptService.QueryInterface(aIid);
    22   }
    23 };
    25 let promptService = {
    26   QueryInterface: XPCOMUtils.generateQI([Ci.nsIPromptService]),
    27   alert: function() {
    28     didFail = true;
    29   }
    30 };
    32 /* FIXME
    33 Cm.QueryInterface(Ci.nsIComponentRegistrar)
    34   .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
    35                    kPromptServiceContractID, fakePromptServiceFactory);
    36 */
    38 const kCompleteState = Ci.nsIWebProgressListener.STATE_STOP +
    39                        Ci.nsIWebProgressListener.STATE_IS_NETWORK;
    41 const kDummyPage = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
    42 const kURIs = [
    43   "bad://www.mozilla.org/",
    44   kDummyPage,
    45   kDummyPage,
    46 ];
    48 var gProgressListener = {
    49   _runCount: 0,
    50   onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
    51     if ((aStateFlags & kCompleteState) == kCompleteState) {
    52       if (++this._runCount != kURIs.length)
    53         return;
    54       // Check we failed on unknown protocol (received an alert from docShell)
    55       ok(didFail, "Correctly failed on unknown protocol");
    56       // Check we opened all tabs
    57       ok(gBrowser.tabs.length == kURIs.length, "Correctly opened all expected tabs");
    58       finishTest();
    59     }
    60   }
    61 }
    63 function test() {
    64   todo(false, "temp. disabled");
    65   return; /* FIXME */
    66   waitForExplicitFinish();
    67   // Wait for all tabs to finish loading
    68   gBrowser.addTabsProgressListener(gProgressListener);
    69   loadOneOrMoreURIs(kURIs.join("|"));
    70 }
    72 function finishTest() {
    73   // Unregister the factory so we do not leak
    74   Cm.QueryInterface(Ci.nsIComponentRegistrar)
    75     .unregisterFactory(Components.ID(kPromptServiceUUID),
    76                        fakePromptServiceFactory);
    78   // Restore the original factory
    79   Cm.QueryInterface(Ci.nsIComponentRegistrar)
    80     .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
    81                      kPromptServiceContractID, kPromptServiceFactory);
    83   // Remove the listener
    84   gBrowser.removeTabsProgressListener(gProgressListener);
    86   // Close opened tabs
    87   for (var i = gBrowser.tabs.length-1; i > 0; i--)
    88     gBrowser.removeTab(gBrowser.tabs[i]);
    90   finish();
    91 }

mercurial