Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- navigator.registerProtocolHandler('mailto','http://mail.live.com/secure/start?action=compose&to=%s','Live Mail');
- var nsiwchr = Cc["@mozilla.org/embeddor.implemented/web-content-handler-registrar;1"].getService(Ci.nsIWebContentHandlerRegistrar);
- nsiwchr.registerProtocolHandler('mailto','http://mail.live.com/secure/start?action=compose&to=%s','Live Mail', null);
- var uri = this._checkAndGetURI(aURIString, aContentWindow);
- aContentWindow.location.hostname != uri.host)
- var fakeContentWindow = {
- document: {
- baseURIObject: {
- asciiHost:"mail.live.com",
- asciiSpec:"http://mail.live.com/secure",
- hasRef:true,
- host:"mail.live.com",
- hostPort:"mail.live.com",
- originCharset:"UTF-8",
- password:"",
- path:"/secure",
- port:-1,
- prePath:"http://mail.live.com",
- ref:"", //369
- scheme:"http",
- spec:"http://mail.live.com/secure",
- specIgnoringRef:"http://mail.live.com",
- userPass:"",
- username:""
- }
- },
- location: {
- hash:"", //#369
- host:"mail.live.com",
- hostname:"mail.live.com",
- href:"http://mail.live.com/secure",
- origin:"http://mxr.mozilla.org",
- pathname:"/secure",
- port:"",
- protocol:"http:",
- search:""
- }
- };
- nsiwchr.registerProtocolHandler('mailto','http://mail.live.com/secure/start?action=compose&to=%s','Live Mail', fakeContentWindow);
- "[object XPCWrappedNative_NoHelper]" scratchpad.js:999
- SP_writeAsErrorComment/<() scratchpad.js:999
- Handler.prototype.process() Promise-backend.js:863
- this.PromiseWalker.walkerLoop() Promise-backend.js:742
- var protocolScheme = "mailtoorsomething";
- var uri = Services.io.newURI("someuri?with_%s_replacement", null, null);
- var name = "Some Name";
- var desc = "Some description";
- var protocolHandler = Services.io.getProtocolHandler(protocolScheme);
- if (!(protocolHandler instanceof Ci.nsIExternalProtocolHandler)) {
- throw new Error("Cannot register handler for built-in protocol");
- }
- var eps = Cc["@mozilla.org/uriloader/external-protocol-service;1"].
- getService(Ci.nsIExternalProtocolService);
- var handlerInfo = eps.getProtocolHandlerInfo(protocolScheme);
- var handlers = handlerInfo.possibleApplicationHandlers;
- for (let i = 0; i < handlers.length; i++) {
- let h = handlers.queryElementAt(i, Ci.nsIWebHandlerApp);
- if (h.uriTemplate == uri.spec) {
- throw new Error("Already registered");
- }
- }
- var handler = Cc["@mozilla.org/uriloader/web-handler-app;1"].
- createInstance(Ci.nsIWebHandlerApp);
- handler.name = name;
- handler.detailedDescription = desc;
- handler.uriTemplate = uri.spec;
- handlerInfo.possibleApplicationHandlers.appendElement(handler, false);
- handlerInfo.alwaysAskBeforeHandling = false;
- handlerInfo.preferredApplicationHandler = handler;
- handlerInfo.preferredAction = Ci.nsIHandlerInfo.useHelperApp;
- var hs = Cc["@mozilla.org/uriloader/handler-service;1"].
- getService(Ci.nsIHandlerService);
- hs.store(handlerInfo);
Add Comment
Please, Sign In to add comment