Add firefox ui fallback on error/unsupported feature.

This commit is contained in:
Brendan Dahl 2012-05-10 15:54:58 -07:00
parent 52832894f5
commit fca6f352e4
3 changed files with 45 additions and 2 deletions
extensions/firefox/components
l10n/en-US
web

@ -11,12 +11,14 @@ const Cr = Components.results;
const Cu = Components.utils; const Cu = Components.utils;
const PDFJS_EVENT_ID = 'pdf.js.message'; const PDFJS_EVENT_ID = 'pdf.js.message';
const PDF_CONTENT_TYPE = 'application/pdf'; const PDF_CONTENT_TYPE = 'application/pdf';
const EXT_PREFIX = 'extensions.uriloader@pdf.js'; const EXT_ID = 'uriloader@pdf.js';
const EXT_PREFIX = 'extensions.' + EXT_ID;
const MAX_DATABASE_LENGTH = 4096; const MAX_DATABASE_LENGTH = 4096;
Cu.import('resource://gre/modules/XPCOMUtils.jsm'); Cu.import('resource://gre/modules/XPCOMUtils.jsm');
Cu.import('resource://gre/modules/Services.jsm'); Cu.import('resource://gre/modules/Services.jsm');
Cu.import('resource://gre/modules/NetUtil.jsm'); Cu.import('resource://gre/modules/NetUtil.jsm');
Cu.import('resource://gre/modules/AddonManager.jsm');
let privateBrowsing = Cc['@mozilla.org/privatebrowsing;1'] let privateBrowsing = Cc['@mozilla.org/privatebrowsing;1']
.getService(Ci.nsIPrivateBrowsingService); .getService(Ci.nsIPrivateBrowsingService);
@ -59,6 +61,13 @@ function getDOMWindow(aChannel) {
return win; return win;
} }
// Fake l10n until we get the real l10n sorted out.
var mozL10n = {
get: function(key, args, fallback) {
return fallback;
}
};
// All the priviledged actions. // All the priviledged actions.
function ChromeActions() { function ChromeActions() {
this.inPrivateBrowswing = privateBrowsing.privateBrowsingEnabled; this.inPrivateBrowswing = privateBrowsing.privateBrowsingEnabled;
@ -115,10 +124,36 @@ ChromeActions.prototype = {
}, },
pdfBugEnabled: function() { pdfBugEnabled: function() {
return getBoolPref(EXT_PREFIX + '.pdfBugEnabled', false); return getBoolPref(EXT_PREFIX + '.pdfBugEnabled', false);
},
fallback: function(url) {
var self = this;
var message = mozL10n.get('unsupported_feature', null,
'An unsupported feature was detected in this PDF document.');
var win = Services.wm.getMostRecentWindow('navigator:browser');
var notificationBox = win.gBrowser.getNotificationBox();
var buttons = [{
label: mozL10n.get('download_document', null, 'Download Document'),
accessKey: null,
callback: function() {
self.download(url);
}
}, {
label: mozL10n.get('disable_pdfjs', null,
'Disable Mozilla PDF Viewer'),
accessKey: null,
callback: function() {
AddonManager.getAddonByID(EXT_ID, function(aAddon) {
aAddon.userDisabled = true;
win.gBrowser.contentWindow.location.reload();
});
}
}];
notificationBox.appendNotification(message, 'pdfjs-fallback', null,
notificationBox.PRIORITY_WARNING_LOW,
buttons);
} }
}; };
// Event listener to trigger chrome privedged code. // Event listener to trigger chrome privedged code.
function RequestListener(actions) { function RequestListener(actions) {
this.actions = actions; this.actions = actions;

@ -42,3 +42,6 @@ zoom_in_label=Zoom In
zoom.title=Zoom zoom.title=Zoom
thumb_page_title=Page {{page}} thumb_page_title=Page {{page}}
thumb_page_canvas=Thumbnail of Page {{page}} thumb_page_canvas=Thumbnail of Page {{page}}
unsupported_feature=An unsupported feature was detected in this PDF document.
download_document=Download Document
disable_pdfjs=Disable Mozilla PDF Viewer

@ -374,6 +374,11 @@ var PDFView = {
} }
}, },
fallback: function pdfViewDownload() {
var url = this.url.split('#')[0];
FirefoxCom.request('fallback', url);
},
navigateTo: function pdfViewNavigateTo(dest) { navigateTo: function pdfViewNavigateTo(dest) {
if (typeof dest === 'string') if (typeof dest === 'string')
dest = this.destinations[dest]; dest = this.destinations[dest];