dom/phonenumberutils/PhoneNumberService.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 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 "use strict";
     7 const DEBUG = false;
     8 function debug(s) { dump("-*- PhoneNumberService.js: " + s + "\n"); }
    10 const Cc = Components.classes;
    11 const Ci = Components.interfaces;
    12 const Cu = Components.utils;
    14 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
    15 Cu.import("resource://gre/modules/Services.jsm");
    16 Cu.import("resource://gre/modules/DOMRequestHelper.jsm");
    17 Cu.import("resource://gre/modules/PhoneNumberUtils.jsm");
    18 Cu.import("resource://gre/modules/PhoneNumberNormalizer.jsm");
    20 XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
    21                                    "@mozilla.org/childprocessmessagemanager;1",
    22                                    "nsIMessageSender");
    24 // PhoneNumberService
    26 function PhoneNumberService()
    27 {
    28   if (DEBUG) debug("Constructor");
    29 }
    31 PhoneNumberService.prototype = {
    32   __proto__: DOMRequestIpcHelper.prototype,
    34   receiveMessage: function(aMessage) {
    35     if (DEBUG) debug("receiveMessage: " + aMessage.name);
    36     let msg = aMessage.json;
    38     let req = this.getRequest(msg.requestID);
    39     if (!req) {
    40       return;
    41     }
    43     switch (aMessage.name) {
    44       case "PhoneNumberService:FuzzyMatch:Return:KO":
    45         Services.DOMRequest.fireError(req.request, msg.errorMsg);
    46         break;
    47       case "PhoneNumberService:FuzzyMatch:Return:OK":
    48         Services.DOMRequest.fireSuccess(req.request, msg.result);
    49         break;
    50       default:
    51         if (DEBUG) debug("Wrong message: " + aMessage.name);
    52     }
    53     this.removeRequest(msg.requestID);
    54   },
    56   fuzzyMatch: function(aNumber1, aNumber2) {
    57     if (DEBUG) debug("fuzzyMatch: " + aNumber1 + ", " + aNumber2);
    58     let request = this.createRequest();
    60     if ((aNumber1 && !aNumber2) || (aNumber2 && !aNumber1)) {
    61       // if only one of the numbers is empty/null/undefined and the other
    62       // number is not, we can fire false result in next tick
    63       Services.DOMRequest.fireSuccessAsync(request, false);
    64     } else if ((aNumber1 === aNumber2) ||
    65         (PhoneNumberNormalizer.Normalize(aNumber1) === PhoneNumberNormalizer.Normalize(aNumber2))) {
    66       // if we have a simple match fire successful request in next tick
    67       Services.DOMRequest.fireSuccessAsync(request, true);
    68     } else {
    69       // invoke fuzzy matching in the parent
    70       let options = { number1: aNumber1, number2: aNumber2 };
    71       cpmm.sendAsyncMessage("PhoneNumberService:FuzzyMatch",
    72                            {requestID: this.getRequestId({request: request}),
    73                             options: options});
    74     }
    76     return request;
    77   },
    79   normalize: function(aNumber) {
    80     if (DEBUG) debug("normalize: " + aNumber);
    81     return PhoneNumberNormalizer.Normalize(aNumber);
    82   },
    84   init: function(aWindow) {
    85     if (DEBUG) debug("init call");
    86     this.initDOMRequestHelper(aWindow, [
    87       "PhoneNumberService:FuzzyMatch:Return:OK",
    88       "PhoneNumberService:FuzzyMatch:Return:KO"
    89     ]);
    90   },
    92   classID : Components.ID("{e2768710-eb17-11e2-91e2-0800200c9a66}"),
    93   contractID : "@mozilla.org/phoneNumberService;1",
    94   QueryInterface : XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer,
    95                                           Ci.nsISupportsWeakReference,
    96                                           Ci.nsIObserver]),
    97 }
    99 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([PhoneNumberService]);

mercurial