Bug 1200524 - Warn when the canvas is too large to save. r=mconley draft
authorBenoit Girard <b56girard@gmail.com>
Mon, 08 Feb 2016 15:24:39 -0500
changeset 329626 e15431649aa13b930fa20e64a7e491a19faf5053
parent 329145 1dbe350b57b17ec1ce2887441b79c6f51b429378
child 514002 87c6f4d27de0d819944bc7dfa636d541e5322fc1
push id10572
push userb56girard@gmail.com
push dateMon, 08 Feb 2016 20:24:56 +0000
reviewersmconley
bugs1200524
milestone47.0a1
Bug 1200524 - Warn when the canvas is too large to save. r=mconley
browser/base/content/content.js
browser/locales/en-US/chrome/browser/downloads/downloads.properties
--- a/browser/base/content/content.js
+++ b/browser/base/content/content.js
@@ -721,17 +721,32 @@ addMessageListener("ContextMenu:MediaCom
     case "fullscreen":
       if (content.document.mozFullScreenEnabled)
         media.mozRequestFullScreen();
       break;
   }
 });
 
 addMessageListener("ContextMenu:Canvas:ToDataURL", (message) => {
-  let dataURL = message.objects.target.toDataURL();
+  try {
+    let dataURL = message.objects.target.toDataURL();
+  } catch (e) {
+    try {
+      const sbs = Cc["@mozilla.org/intl/stringbundle;1"].
+                  getService(Ci.nsIStringBundleService);
+      const bundle = sbs.createBundle(
+                       "chrome://browser/locale/downloads/downloads.properties");
+      const title = bundle.GetStringFromName("canvasSaveAsErrorTitle");
+      const msg = bundle.GetStringFromName("canvasSaveAsError");
+      const promptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+                        getService(Ci.nsIPromptService);
+      promptSvc.alert(content.window, title, msg);
+    } catch (e) {}
+    return;
+  }
   sendAsyncMessage("ContextMenu:Canvas:ToDataURL:Result", { dataURL });
 });
 
 addMessageListener("ContextMenu:ReloadFrame", (message) => {
   message.objects.target.ownerDocument.location.reload();
 });
 
 addMessageListener("ContextMenu:ReloadImage", (message) => {
--- a/browser/locales/en-US/chrome/browser/downloads/downloads.properties
+++ b/browser/locales/en-US/chrome/browser/downloads/downloads.properties
@@ -99,8 +99,11 @@ fileExecutableSecurityWarningTitle=Open 
 fileExecutableSecurityWarningDontAsk=Don't ask me this again
 
 # LOCALIZATION NOTE (otherDownloads2):
 # This is displayed in an item at the bottom of the Downloads Panel when
 # there are more downloads than can fit in the list in the panel. Use a
 # semi-colon list of plural forms.
 # See: http://developer.mozilla.org/en/Localization_and_Plurals
 otherDownloads2=+ %1$S other download; + %1$S other downloads
+
+canvasSaveAsErrorTitle=Failed to save
+canvasSaveAsError=Could not save the canvas as an image. The canvas might be too large.