Bug 1346682 - Set title to document name for print to file. r?brsun
MozReview-Commit-ID: ATNXpc5xM0C
--- a/browser/extensions/mortar/host/common/ppapi-runtime.jsm
+++ b/browser/extensions/mortar/host/common/ppapi-runtime.jsm
@@ -1813,17 +1813,18 @@ class PPAPIInstance {
case 'save':
this.mm.sendAsyncMessage("ppapipdf.js:save");
break;
case 'setHash':
this.mm.sendAsyncMessage("ppapipdf.js:setHash", message.hash);
break;
case 'startPrint':
// We need permission for showing print dialog to get print settings
- this.mm.sendAsyncMessage("ppapipdf.js:getPrintSettings");
+ this.mm.sendAsyncMessage("ppapipdf.js:getPrintSettings", {
+ url: this.info.url });
break;
case 'openLink':
this.mm.sendAsyncMessage("ppapipdf.js:openLink", {
url: message.url,
disposition: message.disposition
});
break;
case 'viewport':
--- a/browser/extensions/mortar/host/pdf/ppapi-content-sandbox.js
+++ b/browser/extensions/mortar/host/pdf/ppapi-content-sandbox.js
@@ -39,16 +39,29 @@ if (isSynthetic) {
pluginElement.ownerDocument.body.addEventListener(
"selectstart", function(event) { event.preventDefault(); });
}
function mapValue(v, instance) {
return instance.rt.toPP_Var(v, instance);
}
+function getFileName(url) {
+ let filename = "document.pdf";
+ let regex = /[^\/#\?]+\.pdf$/i;
+
+ let result = regex.exec(url.hash) ||
+ regex.exec(url.search) ||
+ regex.exec(url.pathname);
+ if (result) {
+ filename = result[0];
+ }
+ return filename;
+}
+
dump("<>>>>>>>>>>>>>>>>>>>> AHA <<<<<<<<<<<<<<<<<<<<<>\n");
dump(`pluginElement: ${pluginElement.toSource()}\n`);
dump(`pluginElement.frameLoader: ${pluginElement.frameLoader.toSource()}\n`);
dump(`pluginElement.frameLoader.messageManager: ${pluginElement.frameLoader.messageManager.toSource()}\n`);
dump("<>>>>>>>>>>>>>>>>>>>> AHA2 <<<<<<<<<<<<<<<<<<<<<>\n");
mm.addMessageListener("ppapi.js:frameLoaded", ({ target }) => {
let tagName = pluginElement.nodeName;
@@ -111,17 +124,21 @@ mm.addMessageListener("ppapi.js:setFulls
});
mm.addMessageListener("ppapipdf.js:setHash", ({ data }) => {
if (data) {
containerWindow.location.hash = data;
}
});
-mm.addMessageListener("ppapipdf.js:getPrintSettings", () => {
+mm.addMessageListener("ppapipdf.js:getPrintSettings", ({ data }) => {
+ // Set the title to pdf file name for the default print to file name.
+ let url = new containerWindow.URL(data.url);
+ containerWindow.document.title = getFileName(url);
+
let PSSVC = Cc["@mozilla.org/gfx/printsettings-service;1"].
getService(Ci.nsIPrintSettingsService);
printSettings = PSSVC.globalPrintSettings;
let webBrowserPrint =
containerWindow.QueryInterface(Ci.nsIInterfaceRequestor).
getInterface(Ci.nsIWebBrowserPrint);
let PPSVC = Cc["@mozilla.org/embedcomp/printingprompt-service;1"].
getService(Ci.nsIPrintingPromptService);
@@ -202,26 +219,17 @@ mm.addMessageListener("ppapipdf.js:openL
"noopener=1,menubar=1,toolbar=1," +
"location=1,personalbar=1,status=1,resizable");
break;
}
});
mm.addMessageListener("ppapipdf.js:save", () => {
let url = containerWindow.document.location;
- let filename = "document.pdf";
- let regex = /[^\/#\?]+\.pdf$/i;
-
- let result = regex.exec(url.hash) ||
- regex.exec(url.search) ||
- regex.exec(url.pathname);
- if (result) {
- filename = result[0];
- }
-
+ let filename = getFileName(url);
let originalUri = NetUtil.newURI(url.href);
let extHelperAppSvc =
Cc["@mozilla.org/uriloader/external-helper-app-service;1"].
getService(Ci.nsIExternalHelperAppService);
let docIsPrivate =
PrivateBrowsingUtils.isContentWindowPrivate(containerWindow);
let netChannel = NetUtil.newChannel({