mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
66 lines
2.4 KiB
JavaScript
66 lines
2.4 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 = gBrowser.addTab(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', null);
|
|
|
|
// 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: function(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: function(aXULWindow) { },
|
|
onWindowTitleChange: function(aXULWindow, aNewTitle) { }
|
|
});
|
|
}
|