Bug 1350646: Part 16 - Remove SDK notifications module. r?Mossop draft
authorKris Maglione <maglione.k@gmail.com>
Sat, 05 Aug 2017 22:39:51 -0700
changeset 641197 5b0f7cf452fa7f6b39e2087e1727d4311bbaa24b
parent 641196 62c90f58350cc4b72bbba5975d8f1f6e167117db
child 641198 3d3d526ec262bc79d40cc2b6ef192bd40b24a042
push id72469
push usermaglione.k@gmail.com
push dateSun, 06 Aug 2017 07:23:41 +0000
reviewersMossop
bugs1350646
milestone57.0a1
Bug 1350646: Part 16 - Remove SDK notifications module. r?Mossop MozReview-Commit-ID: EoOMXp70MQo
addon-sdk/moz.build
addon-sdk/source/lib/sdk/notifications.js
--- a/addon-sdk/moz.build
+++ b/addon-sdk/moz.build
@@ -61,17 +61,16 @@ modules = [
     'sdk/lang/functional/concurrent.js',
     'sdk/lang/functional/core.js',
     'sdk/lang/functional/helpers.js',
     'sdk/lang/type.js',
     'sdk/lang/weak-set.js',
     'sdk/messaging.js',
     'sdk/model/core.js',
     'sdk/net/url.js',
-    'sdk/notifications.js',
     'sdk/output/system.js',
     'sdk/passwords.js',
     'sdk/passwords/utils.js',
     'sdk/platform/xpcom.js',
     'sdk/preferences/service.js',
     'sdk/preferences/utils.js',
     'sdk/private-browsing.js',
     'sdk/private-browsing/utils.js',
deleted file mode 100644
--- a/addon-sdk/source/lib/sdk/notifications.js
+++ /dev/null
@@ -1,112 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-module.metadata = {
-  "stability": "stable"
-};
-
-const { Cc, Ci, Cr } = require("chrome");
-const apiUtils = require("./deprecated/api-utils");
-const { isString, isUndefined, instanceOf } = require('./lang/type');
-const { URL, isLocalURL } = require('./url');
-const { data } = require('./self');
-
-const NOTIFICATION_DIRECTIONS  = ["auto", "ltr", "rtl"];
-
-try {
-  let alertServ = Cc["@mozilla.org/alerts-service;1"].
-                  getService(Ci.nsIAlertsService);
-
-  // The unit test sets this to a mock notification function.
-  var notify = alertServ.showAlertNotification.bind(alertServ);
-}
-catch (err) {
-  // An exception will be thrown if the platform doesn't provide an alert
-  // service, e.g., if Growl is not installed on OS X.  In that case, use a
-  // mock notification function that just logs to the console.
-  notify = notifyUsingConsole;
-}
-
-exports.notify = function notifications_notify(options) {
-  let valOpts = validateOptions(options);
-  let clickObserver = !valOpts.onClick ? null : {
-    observe: (subject, topic, data) => {
-      if (topic === "alertclickcallback") {
-        try {
-          valOpts.onClick.call(exports, valOpts.data);
-        }
-        catch(e) {
-          console.exception(e);
-        }
-      }
-    }
-  };
-  function notifyWithOpts(notifyFn) {
-    let { iconURL } = valOpts;
-    iconURL = iconURL && isLocalURL(iconURL) ? data.url(iconURL) : iconURL;
-
-    notifyFn(iconURL, valOpts.title, valOpts.text, !!clickObserver,
-             valOpts.data, clickObserver, valOpts.tag, valOpts.dir, valOpts.lang);
-  }
-  try {
-    notifyWithOpts(notify);
-  }
-  catch (err) {
-    if (err instanceof Ci.nsIException && err.result == Cr.NS_ERROR_FILE_NOT_FOUND) {
-      console.warn("The notification icon named by " + iconURL +
-                   " does not exist.  A default icon will be used instead.");
-      delete valOpts.iconURL;
-      notifyWithOpts(notify);
-    }
-    else {
-      notifyWithOpts(notifyUsingConsole);
-    }
-  }
-};
-
-function notifyUsingConsole(iconURL, title, text) {
-  title = title ? "[" + title + "]" : "";
-  text = text || "";
-  let str = [title, text].filter(s => s).join(" ");
-  console.log(str);
-}
-
-function validateOptions(options) {
-  return apiUtils.validateOptions(options, {
-    data: {
-      is: ["string", "undefined"]
-    },
-    iconURL: {
-      is: ["string", "undefined", "object"],
-      ok: function(value) {
-        return isUndefined(value) || isString(value) || (value instanceof URL);
-      },
-      msg: "`iconURL` must be a string or an URL instance."
-    },
-    onClick: {
-      is: ["function", "undefined"]
-    },
-    text: {
-      is: ["string", "undefined", "number"]
-    },
-    title: {
-      is: ["string", "undefined", "number"]
-    },
-    tag: {
-      is: ["string", "undefined", "number"]
-    },
-    dir: {
-      is: ["string", "undefined"],
-      ok: function(value) {
-        return isUndefined(value) || ~NOTIFICATION_DIRECTIONS.indexOf(value);
-      },
-      msg: '`dir` option must be one of: "auto", "ltr" or "rtl".'
-    },
-    lang: {
-      is: ["string", "undefined"]
-    }
-  });
-}