[PATCH] Bug 1346682 - Set title to document name for print to file. r?brsun draft
authorlochang <ghoo1125@yahoo.com.tw>
Tue, 09 May 2017 11:11:30 +0800
changeset 574643 cae574cdd34dcf201130f5491e2e037b0fb6f55e
parent 574582 7397223d9e3980110e44cf4946d8e6125c53bb27
child 627667 00e1f82e983d100e1b981f8d5d6454485f450675
push id57783
push userlochang@mozilla.com
push dateTue, 09 May 2017 07:19:19 +0000
reviewersbrsun
bugs1346682
milestone55.0a1
[PATCH] Bug 1346682 - Set title to document name for print to file. r?brsun --- .../mortar/host/pdf/ppapi-content-sandbox.js | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) MozReview-Commit-ID: 4DO3q6n0lol
browser/extensions/mortar/host/pdf/ppapi-content-sandbox.js
--- a/browser/extensions/mortar/host/pdf/ppapi-content-sandbox.js
+++ b/browser/extensions/mortar/host/pdf/ppapi-content-sandbox.js
@@ -38,16 +38,30 @@ if (isSynthetic) {
   pluginElement.ownerDocument.body.addEventListener(
     "selectstart", function(event) { event.preventDefault(); });
 }
 
 function mapValue(v, instance) {
   return instance.rt.toPP_Var(v, instance);
 }
 
+function getFileName() {
+  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];
+  }
+  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,16 +125,19 @@ mm.addMessageListener("ppapi.js:setFulls
 
 mm.addMessageListener("ppapipdf.js:setHash", ({ data }) => {
   if (data) {
     containerWindow.location.hash = data;
   }
 });
 
 mm.addMessageListener("ppapipdf.js:getPrintSettings", () => {
+  // Set the title to pdf file name for the default print to file name.
+  containerWindow.document.title = getFileName();
+
   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);
@@ -201,27 +218,18 @@ mm.addMessageListener("ppapipdf.js:openL
       containerWindow.open(data.url, "",
         "noopener=1,menubar=1,toolbar=1," +
         "location=1,personalbar=1,status=1,resizable");
       break;
   }
 });
 
 mm.addMessageListener("ppapipdf.js:save", () => {
+  let filename = getFileName();
   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 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({