dom/settings/tests/test_settings_service.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 "use strict";
     3 const Cu = Components.utils;
     4 const Cc = Components.classes;
     5 const Ci = Components.interfaces;
     7 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
     8 Cu.import("resource://gre/modules/Services.jsm");
    10 SimpleTest.waitForExplicitFinish();
    12 XPCOMUtils.defineLazyServiceGetter(this, "SettingsService",
    13                                    "@mozilla.org/settingsService;1",
    14                                    "nsISettingsService");
    16 let tests = [
    17   /* Callback tests */
    18   function() {
    19     let callbackCount = 10;
    21     let callback = {
    22       handle: function(name, result) {
    23         switch (callbackCount) {
    24         case 10:
    25         case 9:
    26           is(result, true, "result is true");
    27           break;
    28         case 8:
    29         case 7:
    30           is(result, false, "result is false");
    31           break;
    32         case 6:
    33         case 5:
    34           is(result, 9, "result is 9");
    35           break;
    36         case 4:
    37         case 3:
    38           is(result, 9.4, "result is 9.4");
    39           break;
    40         case 2:
    41           is(result, false, "result is false");
    42           break;
    43         case 1:
    44           is(result, null, "result is null");
    45           break;
    46         default:
    47           ok(false, "Unexpected call: " + callbackCount);
    48         }
    50         --callbackCount;
    51         if (callbackCount === 0) {
    52           next();
    53         }
    54       },
    56       handleError: function(name) {
    57         ok(false, "error: " + name);
    58       }
    59     };
    61     let lock = SettingsService.createLock();
    62     let lock1 = SettingsService.createLock();
    64     lock.set("asdf", true, callback, null);
    65     lock1.get("asdf", callback);
    66     lock.get("asdf", callback);
    67     lock.set("asdf", false, callback, null);
    68     lock.get("asdf", callback);
    69     lock.set("int", 9, callback, null);
    70     lock.get("int", callback);
    71     lock.set("doub", 9.4, callback, null);
    72     lock.get("doub", callback);
    73     lock1.get("asdfxxx", callback);
    74   },
    76   /* Observer tests */
    77   function() {
    78     const XPCOM_SHUTDOWN        = "xpcom-shutdown";
    79     const MOZSETTINGS_CHANGED   = "mozsettings-changed";
    81     const TEST_OBSERVER_KEY     = "test.observer.key";
    82     const TEST_OBSERVER_VALUE   = true;
    83     const TEST_OBSERVER_MESSAGE = "test.observer.message";
    85     let observerCount = 2;
    87     function observer(subject, topic, data) {
    88       if (topic === XPCOM_SHUTDOWN) {
    89         Services.obs.removeObserver(this, XPCOM_SHUTDOWN);
    90         Services.obs.removeObserver(this, MOZSETTINGS_CHANGED);
    91         return;
    92       }
    94       if (topic !== MOZSETTINGS_CHANGED) {
    95         ok(false, "Event is not mozsettings-changed.");
    96         return;
    97       }
    99       data = JSON.parse(data);
   101       function checkProp(name, type, value) {
   102         ok(name in data, "data." + name + " is present");
   103         is(typeof data[name], type, "data." + name + " is " + type);
   104         is(data[name], value, "data." + name + " is " + value);
   105       }
   107       checkProp("key", "string", TEST_OBSERVER_KEY);
   108       checkProp("value", "boolean", TEST_OBSERVER_VALUE);
   109       if (observerCount === 2) {
   110         checkProp("message", "object", null);
   111       } else {
   112         checkProp("message", "string", TEST_OBSERVER_MESSAGE);
   113       }
   114       --observerCount;
   116       if (observerCount === 0) {
   117         next();
   118       }
   119     }
   121     Services.obs.addObserver(observer, XPCOM_SHUTDOWN, false);
   122     Services.obs.addObserver(observer, MOZSETTINGS_CHANGED, false);
   124     let lock = SettingsService.createLock();
   125     lock.set(TEST_OBSERVER_KEY, TEST_OBSERVER_VALUE, null, null);
   126     lock.set(TEST_OBSERVER_KEY, TEST_OBSERVER_VALUE, null, TEST_OBSERVER_MESSAGE);
   127   }
   128 ];
   130 function next() {
   131   let step = tests.shift();
   132   if (step) {
   133     try {
   134       step();
   135     } catch(e) {
   136       ok(false, "Test threw: " + e);
   137     }
   138   } else {
   139     SimpleTest.finish();
   140   }
   141 }
   143 next();

mercurial