mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Bug 356571 - loadOneOrMoreURIs gives up if one of the URLs has an unknown protocol
 | |
| 
 | |
| var Cm = Components.manager;
 | |
| 
 | |
| // Set to true when docShell alerts for unknown protocol error
 | |
| var didFail = false;
 | |
| 
 | |
| // Override Alert to avoid blocking the test due to unknown protocol error
 | |
| const kPromptServiceUUID = "{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}";
 | |
| const kPromptServiceContractID = "@mozilla.org/prompter;1";
 | |
| 
 | |
| // Save original prompt service factory
 | |
| const kPromptServiceFactory = Cm.getClassObject(
 | |
|   Cc[kPromptServiceContractID],
 | |
|   Ci.nsIFactory
 | |
| );
 | |
| 
 | |
| var fakePromptServiceFactory = {
 | |
|   createInstance(aIid) {
 | |
|     return promptService.QueryInterface(aIid);
 | |
|   },
 | |
| };
 | |
| 
 | |
| var promptService = {
 | |
|   QueryInterface: ChromeUtils.generateQI(["nsIPromptService"]),
 | |
|   alert() {
 | |
|     didFail = true;
 | |
|   },
 | |
| };
 | |
| 
 | |
| /* FIXME
 | |
| Cm.QueryInterface(Ci.nsIComponentRegistrar)
 | |
|   .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
 | |
|                    kPromptServiceContractID, fakePromptServiceFactory);
 | |
| */
 | |
| 
 | |
| const kCompleteState =
 | |
|   Ci.nsIWebProgressListener.STATE_STOP +
 | |
|   Ci.nsIWebProgressListener.STATE_IS_NETWORK;
 | |
| 
 | |
| const kDummyPage =
 | |
|   // eslint-disable-next-line @microsoft/sdl/no-insecure-url
 | |
|   "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
 | |
| const kURIs = ["bad://www.mozilla.org/", kDummyPage, kDummyPage];
 | |
| 
 | |
| var gProgressListener = {
 | |
|   _runCount: 0,
 | |
|   onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags) {
 | |
|     if ((aStateFlags & kCompleteState) == kCompleteState) {
 | |
|       if (++this._runCount != kURIs.length) {
 | |
|         return;
 | |
|       }
 | |
|       // Check we failed on unknown protocol (received an alert from docShell)
 | |
|       ok(didFail, "Correctly failed on unknown protocol");
 | |
|       // Check we opened all tabs
 | |
|       Assert.equal(
 | |
|         gBrowser.tabs.length,
 | |
|         kURIs.length,
 | |
|         "Correctly opened all expected tabs"
 | |
|       );
 | |
|       finishTest();
 | |
|     }
 | |
|   },
 | |
| };
 | |
| 
 | |
| function test() {
 | |
|   todo(false, "temp. disabled");
 | |
|   /* FIXME */
 | |
|   /*
 | |
|   waitForExplicitFinish();
 | |
|   // Wait for all tabs to finish loading
 | |
|   gBrowser.addTabsProgressListener(gProgressListener);
 | |
|   loadOneOrMoreURIs(kURIs.join("|"));
 | |
|   */
 | |
| }
 | |
| 
 | |
| function finishTest() {
 | |
|   // Unregister the factory so we do not leak
 | |
|   Cm.QueryInterface(Ci.nsIComponentRegistrar).unregisterFactory(
 | |
|     Components.ID(kPromptServiceUUID),
 | |
|     fakePromptServiceFactory
 | |
|   );
 | |
| 
 | |
|   // Restore the original factory
 | |
|   Cm.QueryInterface(Ci.nsIComponentRegistrar).registerFactory(
 | |
|     Components.ID(kPromptServiceUUID),
 | |
|     "Prompt Service",
 | |
|     kPromptServiceContractID,
 | |
|     kPromptServiceFactory
 | |
|   );
 | |
| 
 | |
|   // Remove the listener
 | |
|   gBrowser.removeTabsProgressListener(gProgressListener);
 | |
| 
 | |
|   // Close opened tabs
 | |
|   for (var i = gBrowser.tabs.length - 1; i > 0; i--) {
 | |
|     gBrowser.removeTab(gBrowser.tabs[i]);
 | |
|   }
 | |
| 
 | |
|   finish();
 | |
| }
 | 
