searchEnabled: function() {
return getBoolPref(PREF_PREFIX + '.searchEnabled', false);
},
- fallback: function(url) {
+ fallback: function(url, sendResponse) {
var self = this;
var domWindow = this.domWindow;
var strings = getLocalizedStrings('chrome.properties');
var win = Services.wm.getMostRecentWindow('navigator:browser');
var browser = win.gBrowser.getBrowserForDocument(domWindow.top.document);
var notificationBox = win.gBrowser.getNotificationBox(browser);
+ // Flag so we don't call the response callback twice, since if the user
+ // clicks open with different viewer both the button callback and
+ // eventCallback will be called.
+ var sentResponse = false;
var buttons = [{
label: getLocalizedString(strings, 'open_with_different_viewer'),
accessKey: getLocalizedString(strings, 'open_with_different_viewer',
'accessKey'),
callback: function() {
- self.download(url);
+ sentResponse = true;
+ sendResponse(true);
}
}];
notificationBox.appendNotification(message, 'pdfjs-fallback', null,
notificationBox.PRIORITY_WARNING_LOW,
- buttons);
+ buttons,
+ function eventsCallback(eventType) {
+ // Currently there is only one event "removed" but if there are any other
+ // added in the future we still only care about removed at the moment.
+ if (eventType !== 'removed')
+ return;
+ // Don't send a response again if we already responded when the button was
+ // clicked.
+ if (!sentResponse)
+ sendResponse(false);
+ });
}
};
return;
this.fellback = true;
var url = this.url.split('#')[0];
- FirefoxCom.request('fallback', url);
+ FirefoxCom.request('fallback', url, function response(download) {
+ if (!download)
+ return;
+ PDFView.download();
+ });
},
navigateTo: function pdfViewNavigateTo(dest) {