From ed243cf02ff1646bf760c4c2745cd9f7b7af07de Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Mon, 9 Mar 2015 19:40:19 -0500 Subject: [PATCH] Using newChannel2 instead of newChannel in the extension. --- .../firefox/content/PdfStreamConverter.jsm | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/extensions/firefox/content/PdfStreamConverter.jsm b/extensions/firefox/content/PdfStreamConverter.jsm index 8ca76c995..c8e97b4a3 100644 --- a/extensions/firefox/content/PdfStreamConverter.jsm +++ b/extensions/firefox/content/PdfStreamConverter.jsm @@ -188,6 +188,31 @@ function makeContentReadable(obj, window) { //#endif } +function createNewChannel(uri, node, principal) { +//#if !MOZCENTRAL + if (!NetUtil.newChannel2) { + return NetUtil.newChannel(uri); + } +//#endif + return NetUtil.newChannel2(uri, + null, + null, + node, // aLoadingNode + principal, // aLoadingPrincipal + null, // aTriggeringPrincipal + Ci.nsILoadInfo.SEC_NORMAL, + Ci.nsIContentPolicy.TYPE_OTHER); +} + +function asyncFetchChannel(channel, callback) { +//#if !MOZCENTRAL + if (!NetUtil.newChannel2) { + return NetUtil.asyncFetch(channel, callback); + } +//#endif + return NetUtil.asyncFetch2(channel, callback); +} + // PDF data storage function PdfDataListener(length) { this.length = length; // less than 0, if length is unknown @@ -273,15 +298,16 @@ ChromeActions.prototype = { download: function(data, sendResponse) { var self = this; var originalUrl = data.originalUrl; + var blobUrl = data.blobUrl || originalUrl; // The data may not be downloaded so we need just retry getting the pdf with // the original url. - var originalUri = NetUtil.newURI(data.originalUrl); + var originalUri = NetUtil.newURI(originalUrl); var filename = data.filename; if (typeof filename !== 'string' || (!/\.pdf$/i.test(filename) && !data.isAttachment)) { filename = 'document.pdf'; } - var blobUri = data.blobUrl ? NetUtil.newURI(data.blobUrl) : originalUri; + var blobUri = NetUtil.newURI(blobUrl); var extHelperAppSvc = Cc['@mozilla.org/uriloader/external-helper-app-service;1']. getService(Ci.nsIExternalHelperAppService); @@ -289,12 +315,12 @@ ChromeActions.prototype = { getService(Ci.nsIWindowWatcher).activeWindow; var docIsPrivate = this.isInPrivateBrowsing(); - var netChannel = NetUtil.newChannel(blobUri); + var netChannel = createNewChannel(blobUri, frontWindow.document, null); if ('nsIPrivateBrowsingChannel' in Ci && netChannel instanceof Ci.nsIPrivateBrowsingChannel) { netChannel.setPrivate(docIsPrivate); } - NetUtil.asyncFetch(netChannel, function(aInputStream, aResult) { + asyncFetchChannel(netChannel, function(aInputStream, aResult) { if (!Components.isSuccessCode(aResult)) { if (sendResponse) { sendResponse(true); @@ -959,9 +985,8 @@ PdfStreamConverter.prototype = { .createInstance(Ci.nsIBinaryInputStream); // Create a new channel that is viewer loaded as a resource. - var ioService = Services.io; - var channel = ioService.newChannel( - PDF_VIEWER_WEB_PAGE, null, null); + var systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal(); + var channel = createNewChannel(PDF_VIEWER_WEB_PAGE, null, systemPrincipal); var listener = this.listener; var dataListener = this.dataListener; @@ -1019,7 +1044,7 @@ PdfStreamConverter.prototype = { // e.g. useful for NoScript var securityManager = Cc['@mozilla.org/scriptsecuritymanager;1'] .getService(Ci.nsIScriptSecurityManager); - var uri = ioService.newURI(PDF_VIEWER_WEB_PAGE, null, null); + var uri = NetUtil.newURI(PDF_VIEWER_WEB_PAGE, null, null); // FF16 and below had getCodebasePrincipal, it was replaced by // getNoAppCodebasePrincipal (bug 758258). var resourcePrincipal = 'getNoAppCodebasePrincipal' in securityManager ?