Merge pull request #7400 from Snuffleupagus/addon-minimum-firefox38

[Firefox addon] Change the minimum supported version to Firefox 38 and remove a bunch old no longer necessary fallback code
This commit is contained in:
Yury Delendik 2016-06-15 13:27:33 +01:00 committed by GitHub
commit a0a6e6d688
4 changed files with 27 additions and 102 deletions

View File

@ -65,34 +65,17 @@ function getFindBar(domWindow) {
if (PdfjsContentUtils.isRemote) { if (PdfjsContentUtils.isRemote) {
throw new Error('FindBar is not accessible from the content process.'); throw new Error('FindBar is not accessible from the content process.');
} }
var browser = getContainingBrowser(domWindow);
try { try {
var browser = getContainingBrowser(domWindow);
var tabbrowser = browser.getTabBrowser(); var tabbrowser = browser.getTabBrowser();
var tab; var tab = tabbrowser.getTabForBrowser(browser);
//#if MOZCENTRAL
tab = tabbrowser.getTabForBrowser(browser);
//#else
if (tabbrowser.getTabForBrowser) {
tab = tabbrowser.getTabForBrowser(browser);
} else {
// _getTabForBrowser is depreciated in Firefox 35, see
// https://bugzilla.mozilla.org/show_bug.cgi?id=1039500.
tab = tabbrowser._getTabForBrowser(browser);
}
//#endif
return tabbrowser.getFindBar(tab); return tabbrowser.getFindBar(tab);
} catch (e) { } catch (e) {
try {
// FF22 has no _getTabForBrowser, and FF24 has no getFindBar
var chromeWindow = browser.ownerDocument.defaultView;
return chromeWindow.gFindBar;
} catch (ex) {
// Suppress errors for PDF files opened in the bookmark sidebar, see // Suppress errors for PDF files opened in the bookmark sidebar, see
// https://bugzilla.mozilla.org/show_bug.cgi?id=1248959. // https://bugzilla.mozilla.org/show_bug.cgi?id=1248959.
return null; return null;
} }
} }
}
function getBoolPref(pref, def) { function getBoolPref(pref, def) {
try { try {
@ -165,26 +148,6 @@ function getLocalizedString(strings, id, property) {
return id; return id;
} }
function makeContentReadable(obj, window) {
//#if MOZCENTRAL
/* jshint -W027 */
return Cu.cloneInto(obj, window);
//#else
if (Cu.cloneInto) {
return Cu.cloneInto(obj, window);
}
if (typeof obj !== 'object' || obj === null) {
return obj;
}
var expose = {};
for (let k in obj) {
expose[k] = 'r';
}
obj.__exposedProps__ = expose;
return obj;
//#endif
}
function createNewChannel(uri, node, principal) { function createNewChannel(uri, node, principal) {
//#if !MOZCENTRAL //#if !MOZCENTRAL
if (NetUtil.newChannel2) { if (NetUtil.newChannel2) {
@ -197,12 +160,6 @@ function createNewChannel(uri, node, principal) {
Ci.nsILoadInfo.SEC_NORMAL, Ci.nsILoadInfo.SEC_NORMAL,
Ci.nsIContentPolicy.TYPE_OTHER); 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 //#endif
return NetUtil.newChannel({ return NetUtil.newChannel({
uri: uri, uri: uri,
@ -294,13 +251,6 @@ function ChromeActions(domWindow, contentDispositionFilename) {
ChromeActions.prototype = { ChromeActions.prototype = {
isInPrivateBrowsing: function() { isInPrivateBrowsing: function() {
//#if !MOZCENTRAL
if (!PrivateBrowsingUtils.isContentWindowPrivate) {
// pbu.isContentWindowPrivate was not supported prior Firefox 35.
// (https://bugzilla.mozilla.org/show_bug.cgi?id=1069059)
return PrivateBrowsingUtils.isWindowPrivate(this.domWindow);
}
//#endif
return PrivateBrowsingUtils.isContentWindowPrivate(this.domWindow); return PrivateBrowsingUtils.isContentWindowPrivate(this.domWindow);
}, },
download: function(data, sendResponse) { download: function(data, sendResponse) {
@ -423,11 +373,7 @@ ChromeActions.prototype = {
return (!!prefBrowser && prefGfx); return (!!prefBrowser && prefGfx);
}, },
supportsDocumentColors: function() { supportsDocumentColors: function() {
if (getIntPref('browser.display.document_color_use', 0) === 2 || return getIntPref('browser.display.document_color_use', 0) !== 2;
!getBoolPref('browser.display.use_document_colors', true)) {
return false;
}
return true;
}, },
supportedMouseWheelZoomModifierKeys: function() { supportedMouseWheelZoomModifierKeys: function() {
return { return {
@ -839,7 +785,7 @@ RequestListener.prototype.receive = function(event) {
var response; var response;
if (sync) { if (sync) {
response = actions[action].call(this.actions, data); response = actions[action].call(this.actions, data);
event.detail.response = makeContentReadable(response, doc.defaultView); event.detail.response = Cu.cloneInto(response, doc.defaultView);
} else { } else {
if (!event.detail.responseExpected) { if (!event.detail.responseExpected) {
doc.documentElement.removeChild(message); doc.documentElement.removeChild(message);
@ -848,8 +794,7 @@ RequestListener.prototype.receive = function(event) {
response = function sendResponse(response) { response = function sendResponse(response) {
try { try {
var listener = doc.createEvent('CustomEvent'); var listener = doc.createEvent('CustomEvent');
let detail = makeContentReadable({response: response}, let detail = Cu.cloneInto({ response: response }, doc.defaultView);
doc.defaultView);
listener.initCustomEvent('pdf.js.response', true, false, detail); listener.initCustomEvent('pdf.js.response', true, false, detail);
return message.dispatchEvent(listener); return message.dispatchEvent(listener);
} catch (e) { } catch (e) {
@ -893,7 +838,7 @@ FindEventManager.prototype.receiveMessage = function(msg) {
var type = msg.data.type; var type = msg.data.type;
var contentWindow = this.contentWindow; var contentWindow = this.contentWindow;
detail = makeContentReadable(detail, contentWindow); detail = Cu.cloneInto(detail, contentWindow);
var forward = contentWindow.document.createEvent('CustomEvent'); var forward = contentWindow.document.createEvent('CustomEvent');
forward.initCustomEvent(type, true, true, detail); forward.initCustomEvent(type, true, true, detail);
contentWindow.dispatchEvent(forward); contentWindow.dispatchEvent(forward);
@ -1016,11 +961,6 @@ PdfStreamConverter.prototype = {
aRequest.setResponseHeader('Content-Security-Policy', '', false); aRequest.setResponseHeader('Content-Security-Policy', '', false);
aRequest.setResponseHeader('Content-Security-Policy-Report-Only', '', aRequest.setResponseHeader('Content-Security-Policy-Report-Only', '',
false); false);
//#if !MOZCENTRAL
aRequest.setResponseHeader('X-Content-Security-Policy', '', false);
aRequest.setResponseHeader('X-Content-Security-Policy-Report-Only', '',
false);
//#endif
} }
PdfJsTelemetry.onViewerIsUsed(); PdfJsTelemetry.onViewerIsUsed();
@ -1085,26 +1025,22 @@ PdfStreamConverter.prototype = {
channel.loadGroup = aRequest.loadGroup; channel.loadGroup = aRequest.loadGroup;
channel.loadInfo.originAttributes = aRequest.loadInfo.originAttributes; channel.loadInfo.originAttributes = aRequest.loadInfo.originAttributes;
// We can use resource principal when data is fetched by the chrome // We can use the resource principal when data is fetched by the chrome,
// make sure we reuse the origin attributes from the request channel to keep // e.g. useful for NoScript. Make make sure we reuse the origin attributes
// isolation consistent. // from the request channel to keep isolation consistent.
// e.g. useful for NoScript
var ssm = Cc['@mozilla.org/scriptsecuritymanager;1'] var ssm = Cc['@mozilla.org/scriptsecuritymanager;1']
.getService(Ci.nsIScriptSecurityManager); .getService(Ci.nsIScriptSecurityManager);
var uri = NetUtil.newURI(PDF_VIEWER_WEB_PAGE, null, null); var uri = NetUtil.newURI(PDF_VIEWER_WEB_PAGE, null, null);
var attrs = aRequest.loadInfo.originAttributes;
var resourcePrincipal; var resourcePrincipal;
//#if MOZCENTRAL //#if MOZCENTRAL
resourcePrincipal = ssm.createCodebasePrincipal(uri, attrs); resourcePrincipal =
ssm.createCodebasePrincipal(uri, aRequest.loadInfo.originAttributes);
//#else //#else
// FF16 and below had getCodebasePrincipal, it was replaced by // FF43 replaced `getCodebasePrincipal` with `createCodebasePrincipal`,
// getNoAppCodebasePrincipal (bug 758258). // see https://bugzilla.mozilla.org/show_bug.cgi?id=1165272.
// FF43 then replaced getNoAppCodebasePrincipal with
// createCodebasePrincipal (bug 1165272).
if ('createCodebasePrincipal' in ssm) { if ('createCodebasePrincipal' in ssm) {
resourcePrincipal = ssm.createCodebasePrincipal(uri, attrs); resourcePrincipal =
} else if ('getNoAppCodebasePrincipal' in ssm) { ssm.createCodebasePrincipal(uri, aRequest.loadInfo.originAttributes);
resourcePrincipal = ssm.getNoAppCodebasePrincipal(uri);
} else { } else {
resourcePrincipal = ssm.getCodebasePrincipal(uri); resourcePrincipal = ssm.getCodebasePrincipal(uri);
} }

View File

@ -170,18 +170,7 @@ var PdfjsChromeUtils = {
_findbarFromMessage: function(aMsg) { _findbarFromMessage: function(aMsg) {
let browser = aMsg.target; let browser = aMsg.target;
let tabbrowser = browser.getTabBrowser(); let tabbrowser = browser.getTabBrowser();
let tab; let tab = tabbrowser.getTabForBrowser(browser);
//#if MOZCENTRAL
tab = tabbrowser.getTabForBrowser(browser);
//#else
if (tabbrowser.getTabForBrowser) {
tab = tabbrowser.getTabForBrowser(browser);
} else {
// _getTabForBrowser is deprecated in Firefox 35, see
// https://bugzilla.mozilla.org/show_bug.cgi?id=1039500.
tab = tabbrowser._getTabForBrowser(browser);
}
//#endif
return tabbrowser.getFindBar(tab); return tabbrowser.getFindBar(tab);
}, },

View File

@ -13,8 +13,8 @@
<em:targetApplication> <em:targetApplication>
<Description> <Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>10.0</em:minVersion> <em:minVersion>38.0</em:minVersion>
<em:maxVersion>46.0a1</em:maxVersion> <em:maxVersion>50.0a1</em:maxVersion>
</Description> </Description>
</em:targetApplication> </em:targetApplication>
@ -31,8 +31,8 @@
<em:targetApplication> <em:targetApplication>
<Description> <Description>
<em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id> <em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id>
<em:minVersion>11.0</em:minVersion> <em:minVersion>38.0</em:minVersion>
<em:maxVersion>46.0a1</em:maxVersion> <em:maxVersion>50.0a1</em:maxVersion>
</Description> </Description>
</em:targetApplication> </em:targetApplication>

View File

@ -14,8 +14,8 @@
<em:targetApplication> <em:targetApplication>
<RDF:Description> <RDF:Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>10.0</em:minVersion> <em:minVersion>38.0</em:minVersion>
<em:maxVersion>46.0</em:maxVersion> <em:maxVersion>50.0</em:maxVersion>
<!-- Use the raw link for updates so we we can use SSL. --> <!-- Use the raw link for updates so we we can use SSL. -->
<em:updateLink>https://raw.githubusercontent.com/mozilla/pdf.js/gh-pages/extensions/firefox/pdf.js.xpi</em:updateLink> <em:updateLink>https://raw.githubusercontent.com/mozilla/pdf.js/gh-pages/extensions/firefox/pdf.js.xpi</em:updateLink>
</RDF:Description> </RDF:Description>
@ -25,8 +25,8 @@
<em:targetApplication> <em:targetApplication>
<RDF:Description> <RDF:Description>
<em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id> <em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id>
<em:minVersion>10.0</em:minVersion> <em:minVersion>38.0</em:minVersion>
<em:maxVersion>46.0</em:maxVersion> <em:maxVersion>50.0</em:maxVersion>
<!-- Use the raw link for updates so we we can use SSL. --> <!-- Use the raw link for updates so we we can use SSL. -->
<em:updateLink>https://raw.githubusercontent.com/mozilla/pdf.js/gh-pages/extensions/firefox/pdf.js.xpi</em:updateLink> <em:updateLink>https://raw.githubusercontent.com/mozilla/pdf.js/gh-pages/extensions/firefox/pdf.js.xpi</em:updateLink>
</RDF:Description> </RDF:Description>