From 5743b4f558eb91abcacbb6bf5ad77e067c2e8fbc Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 27 May 2015 12:55:45 +0200 Subject: [PATCH] [Firefox] Fix newChannel/asyncFetch fallout from bug 1167053 For some reason, https://bugzilla.mozilla.org/show_bug.cgi?id=1167053 changed methods of `NetUtil` yet *again*. This patch thus attempts to handle those changes, while keeping the addon backwards compatible. I've tested this using all current Firefox versions (Nightly, Aurora/DevEdition, Beta, Release, ESR), and things still appears to work correctly. --- .../firefox/content/PdfStreamConverter.jsm | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/extensions/firefox/content/PdfStreamConverter.jsm b/extensions/firefox/content/PdfStreamConverter.jsm index 0acce8e26..61e0c16c3 100644 --- a/extensions/firefox/content/PdfStreamConverter.jsm +++ b/extensions/firefox/content/PdfStreamConverter.jsm @@ -183,27 +183,38 @@ function makeContentReadable(obj, window) { function createNewChannel(uri, node, principal) { //#if !MOZCENTRAL - if (!NetUtil.newChannel2) { + if (NetUtil.newChannel2) { + return NetUtil.newChannel2(uri, + null, + null, + node, // aLoadingNode + principal, // aLoadingPrincipal + null, // aTriggeringPrincipal + Ci.nsILoadInfo.SEC_NORMAL, + Ci.nsIContentPolicy.TYPE_OTHER); + } + // The signature of `NetUtil.newChannel` changed in Firefox 38, + // see https://bugzilla.mozilla.org/show_bug.cgi?id=1125618. + var ffVersion = parseInt(Services.appinfo.platformVersion); + if (ffVersion < 38) { 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); + return NetUtil.newChannel({ + uri: uri, + loadingNode: node, + loadingPrincipal: principal, + contentPolicyType: Ci.nsIContentPolicy.TYPE_OTHER, + }); } function asyncFetchChannel(channel, callback) { //#if !MOZCENTRAL - if (!NetUtil.newChannel2) { - return NetUtil.asyncFetch(channel, callback); + if (NetUtil.asyncFetch2) { + return NetUtil.asyncFetch2(channel, callback); } //#endif - return NetUtil.asyncFetch2(channel, callback); + return NetUtil.asyncFetch(channel, callback); } // PDF data storage