forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: ALslAwZo4K9 --HG-- extra : rebase_source : ca1add0015eea86128c0c5f209252ebb6a228998
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
const RELATIVE_DIR = "browser/extensions/pdfjs/test/";
 | 
						|
const TESTROOT = "http://example.com/browser/" + RELATIVE_DIR;
 | 
						|
 | 
						|
function test() {
 | 
						|
  var oldAction = changeMimeHandler(Ci.nsIHandlerInfo.useSystemDefault, true);
 | 
						|
  var tab = BrowserTestUtils.addTab(gBrowser, TESTROOT + "file_pdfjs_test.pdf");
 | 
						|
  // Test: "Open with" dialog comes up when pdf.js is not selected as the default
 | 
						|
  // handler.
 | 
						|
  addWindowListener("chrome://mozapps/content/downloads/unknownContentType.xul", finish);
 | 
						|
 | 
						|
  waitForExplicitFinish();
 | 
						|
  registerCleanupFunction(function() {
 | 
						|
    changeMimeHandler(oldAction[0], oldAction[1]);
 | 
						|
    gBrowser.removeTab(tab);
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function changeMimeHandler(preferredAction, alwaysAskBeforeHandling) {
 | 
						|
  let handlerService = Cc["@mozilla.org/uriloader/handler-service;1"].getService(Ci.nsIHandlerService);
 | 
						|
  let mimeService = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService);
 | 
						|
  let handlerInfo = mimeService.getFromTypeAndExtension("application/pdf", "pdf");
 | 
						|
  var oldAction = [handlerInfo.preferredAction, handlerInfo.alwaysAskBeforeHandling];
 | 
						|
 | 
						|
  // Change and save mime handler settings
 | 
						|
  handlerInfo.alwaysAskBeforeHandling = alwaysAskBeforeHandling;
 | 
						|
  handlerInfo.preferredAction = preferredAction;
 | 
						|
  handlerService.store(handlerInfo);
 | 
						|
 | 
						|
  Services.obs.notifyObservers(null, "pdfjs:handlerChanged");
 | 
						|
 | 
						|
  // Refresh data
 | 
						|
  handlerInfo = mimeService.getFromTypeAndExtension("application/pdf", "pdf");
 | 
						|
 | 
						|
  // Test: Mime handler was updated
 | 
						|
  is(handlerInfo.alwaysAskBeforeHandling, alwaysAskBeforeHandling, "always-ask prompt change successful");
 | 
						|
  is(handlerInfo.preferredAction, preferredAction, "mime handler change successful");
 | 
						|
 | 
						|
  return oldAction;
 | 
						|
}
 | 
						|
 | 
						|
function addWindowListener(aURL, aCallback) {
 | 
						|
  Services.wm.addListener({
 | 
						|
    onOpenWindow(aXULWindow) {
 | 
						|
      info("window opened, waiting for focus");
 | 
						|
      Services.wm.removeListener(this);
 | 
						|
 | 
						|
      var domwindow = aXULWindow.QueryInterface(Ci.nsIInterfaceRequestor)
 | 
						|
                                .getInterface(Ci.nsIDOMWindow);
 | 
						|
      waitForFocus(function() {
 | 
						|
        is(domwindow.document.location.href, aURL, "should have seen the right window open");
 | 
						|
        domwindow.close();
 | 
						|
        aCallback();
 | 
						|
      }, domwindow);
 | 
						|
    },
 | 
						|
    onCloseWindow(aXULWindow) { },
 | 
						|
  });
 | 
						|
}
 |