1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/tests/mochitest/notification/MockServices.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,81 @@ 1.4 +var MockServices = (function () { 1.5 + "use strict"; 1.6 + 1.7 + const MOCK_ALERTS_CID = SpecialPowers.wrap(SpecialPowers.Components) 1.8 + .ID("{48068bc2-40ab-4904-8afd-4cdfb3a385f3}"); 1.9 + const ALERTS_SERVICE_CONTRACT_ID = "@mozilla.org/alerts-service;1"; 1.10 + 1.11 + const MOCK_SYSTEM_ALERTS_CID = SpecialPowers.wrap(SpecialPowers.Components) 1.12 + .ID("{e86d888c-e41b-4b78-9104-2f2742a532de}"); 1.13 + const SYSTEM_ALERTS_SERVICE_CONTRACT_ID = "@mozilla.org/system-alerts-service;1"; 1.14 + 1.15 + var registrar = SpecialPowers.wrap(SpecialPowers.Components).manager 1.16 + .QueryInterface(SpecialPowers.Ci.nsIComponentRegistrar); 1.17 + 1.18 + var activeNotifications = Object.create(null); 1.19 + 1.20 + var mockAlertsService = { 1.21 + showAlertNotification: function(imageUrl, title, text, textClickable, 1.22 + cookie, alertListener, name) { 1.23 + var listener = SpecialPowers.wrap(alertListener); 1.24 + activeNotifications[name] = { 1.25 + listener: listener, 1.26 + cookie: cookie 1.27 + }; 1.28 + 1.29 + // fake async alert show event 1.30 + setTimeout(function () { 1.31 + listener.observe(null, "alertshow", cookie); 1.32 + }, 100); 1.33 + 1.34 + // ?? SpecialPowers.wrap(alertListener).observe(null, "alertclickcallback", cookie); 1.35 + }, 1.36 + 1.37 + showAppNotification: function(imageUrl, title, text, textClickable, 1.38 + manifestURL, alertListener, name) { 1.39 + this.showAlertNotification(imageUrl, title, text, textClickable, "", alertListener, name); 1.40 + }, 1.41 + 1.42 + closeAlert: function(name) { 1.43 + var notification = activeNotifications[name]; 1.44 + if (notification) { 1.45 + notification.listener.observe(null, "alertfinished", notification.cookie); 1.46 + delete activeNotifications[name]; 1.47 + } 1.48 + }, 1.49 + 1.50 + QueryInterface: function(aIID) { 1.51 + if (SpecialPowers.wrap(aIID).equals(SpecialPowers.Ci.nsISupports) || 1.52 + SpecialPowers.wrap(aIID).equals(SpecialPowers.Ci.nsIAlertsService)) { 1.53 + return this; 1.54 + } 1.55 + throw SpecialPowers.Components.results.NS_ERROR_NO_INTERFACE; 1.56 + }, 1.57 + 1.58 + createInstance: function(aOuter, aIID) { 1.59 + if (aOuter != null) { 1.60 + throw SpecialPowers.Components.results.NS_ERROR_NO_AGGREGATION; 1.61 + } 1.62 + return this.QueryInterface(aIID); 1.63 + } 1.64 + }; 1.65 + mockAlertsService = SpecialPowers.wrapCallbackObject(mockAlertsService); 1.66 + 1.67 + // MockServices API 1.68 + return { 1.69 + register: function () { 1.70 + registrar.registerFactory(MOCK_ALERTS_CID, "alerts service", 1.71 + ALERTS_SERVICE_CONTRACT_ID, 1.72 + mockAlertsService); 1.73 + 1.74 + registrar.registerFactory(MOCK_SYSTEM_ALERTS_CID, "system alerts service", 1.75 + SYSTEM_ALERTS_SERVICE_CONTRACT_ID, 1.76 + mockAlertsService); 1.77 + }, 1.78 + 1.79 + unregister: function () { 1.80 + registrar.unregisterFactory(MOCK_ALERTS_CID, mockAlertsService); 1.81 + registrar.unregisterFactory(MOCK_SYSTEM_ALERTS_CID, mockAlertsService); 1.82 + }, 1.83 + }; 1.84 +})();