Skip to content

Commit

Permalink
Merge pull request #5918 from Snuffleupagus/remove-fallback-cpow
Browse files Browse the repository at this point in the history
[Firefox] Replace the CPOW with asynchronous messages for the Fallback bar
  • Loading branch information
yurydelendik committed Jul 7, 2015
2 parents 31976b9 + 93a6592 commit eb2ad11
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 16 deletions.
16 changes: 15 additions & 1 deletion extensions/firefox/content/PdfStreamConverter.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -493,9 +493,23 @@ ChromeActions.prototype = {
message = getLocalizedString(strings, 'unsupported_feature');
}
PdfJsTelemetry.onFallback();
PdfjsContentUtils.displayWarning(domWindow, message, sendResponse,
PdfjsContentUtils.displayWarning(domWindow, message,
getLocalizedString(strings, 'open_with_different_viewer'),
getLocalizedString(strings, 'open_with_different_viewer', 'accessKey'));

let winmm = domWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDocShell)
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIContentFrameMessageManager);

winmm.addMessageListener('PDFJS:Child:fallbackDownload',
function fallbackDownload(msg) {
let data = msg.data;
sendResponse(data.download);

winmm.removeMessageListener('PDFJS:Child:fallbackDownload',
fallbackDownload);
});
},
updateFindControlState: function(data) {
if (!this.supportsIntegratedFind()) {
Expand Down
30 changes: 18 additions & 12 deletions extensions/firefox/content/PdfjsChromeUtils.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -306,24 +306,30 @@ let PdfjsChromeUtils = {
* a pdf displayed correctly.
*/
_displayWarning: function (aMsg) {
let json = aMsg.data;
let data = aMsg.data;
let browser = aMsg.target;
let cpowCallback = aMsg.objects.callback;

let tabbrowser = browser.getTabBrowser();
let notificationBox = tabbrowser.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

// Flag so we don't send the message twice, since if the user clicks
// "open with different viewer" both the button callback and
// eventCallback will be called.
let responseSent = false;
let messageSent = false;
function sendMessage(download) {
let mm = browser.messageManager;
mm.sendAsyncMessage('PDFJS:Child:fallbackDownload',
{ download: download });
}
let buttons = [{
label: json.label,
accessKey: json.accessKey,
label: data.label,
accessKey: data.accessKey,
callback: function() {
responseSent = true;
cpowCallback(true);
messageSent = true;
sendMessage(true);
}
}];
notificationBox.appendNotification(json.message, 'pdfjs-fallback', null,
notificationBox.appendNotification(data.message, 'pdfjs-fallback', null,
notificationBox.PRIORITY_INFO_LOW,
buttons,
function eventsCallback(eventType) {
Expand All @@ -334,10 +340,10 @@ let PdfjsChromeUtils = {
}
// Don't send a response again if we already responded when the button was
// clicked.
if (responseSent) {
if (messageSent) {
return;
}
cpowCallback(false);
sendMessage(false);
});
}
};
Expand Down
4 changes: 1 addition & 3 deletions extensions/firefox/content/PdfjsContentUtils.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ let PdfjsContentUtils = {
* Request the display of a notification warning in the associated window
* when the renderer isn't sure a pdf displayed correctly.
*/
displayWarning: function (aWindow, aMessage, aCallback, aLabel, accessKey) {
displayWarning: function (aWindow, aMessage, aLabel, accessKey) {
// the child's dom frame mm associated with the window.
let winmm = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDocShell)
Expand All @@ -122,8 +122,6 @@ let PdfjsContentUtils = {
message: aMessage,
label: aLabel,
accessKey: accessKey
}, {
callback: aCallback
});
},

Expand Down

0 comments on commit eb2ad11

Please sign in to comment.