dom/system/gonk/tests/test_ril_worker_ecm.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 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this);
     6 function run_test() {
     7   run_next_test();
     8 }
    10 function _getWorker() {
    11   let _postedMessage;
    12   let _worker = newWorker({
    13     postRILMessage: function(data) {
    14     },
    15     postMessage: function(message) {
    16       _postedMessage = message;
    17     }
    18   });
    19   return {
    20     get postedMessage() {
    21       return _postedMessage;
    22     },
    23     get worker() {
    24       return _worker;
    25     }
    26   };
    27 }
    29 var timeoutCallback = null;
    30 var timeoutDelayMs = 0;
    31 const TIMER_ID = 1234;
    32 const TIMEOUT_VALUE = 300000;  // 5 mins.
    34 // No window in xpcshell-test. Create our own timer mechanism.
    36 function setTimeout(callback, timeoutMs) {
    37   timeoutCallback = callback;
    38   timeoutDelayMs = timeoutMs;
    39   do_check_eq(timeoutMs, TIMEOUT_VALUE);
    40   return TIMER_ID;
    41 }
    43 function clearTimeout(timeoutId) {
    44   do_check_eq(timeoutId, TIMER_ID);
    45   timeoutCallback = null;
    46 }
    48 function fireTimeout() {
    49   do_check_neq(timeoutCallback, null);
    50   if (timeoutCallback) {
    51     timeoutCallback();
    52     timeoutCallback = null;
    53   }
    54 }
    56 add_test(function test_enter_emergencyCbMode() {
    57   let workerHelper = _getWorker();
    58   let worker = workerHelper.worker;
    59   let context = worker.ContextPool._contexts[0];
    61   // Do it twice. Should always send the event.
    62   for (let i = 0; i < 2; ++i) {
    63     context.RIL[UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE]();
    64     let postedMessage = workerHelper.postedMessage;
    66     // Should store the mode.
    67     do_check_eq(context.RIL._isInEmergencyCbMode, true);
    69     // Should notify change.
    70     do_check_eq(postedMessage.rilMessageType, "emergencyCbModeChange");
    71     do_check_eq(postedMessage.active, true);
    72     do_check_eq(postedMessage.timeoutMs, TIMEOUT_VALUE);
    74     // Should start timer.
    75     do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, TIMER_ID);
    76   }
    78   run_next_test();
    79 });
    81 add_test(function test_exit_emergencyCbMode() {
    82   let workerHelper = _getWorker();
    83   let worker = workerHelper.worker;
    84   let context = worker.ContextPool._contexts[0];
    86   context.RIL[UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE]();
    87   context.RIL[UNSOLICITED_EXIT_EMERGENCY_CALLBACK_MODE]();
    88   let postedMessage = workerHelper.postedMessage;
    90   // Should store the mode.
    91   do_check_eq(context.RIL._isInEmergencyCbMode, false);
    93   // Should notify change.
    94   do_check_eq(postedMessage.rilMessageType, "emergencyCbModeChange");
    95   do_check_eq(postedMessage.active, false);
    97   // Should clear timer.
    98   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, null);
   100   run_next_test();
   101 });
   103 add_test(function test_request_exit_emergencyCbMode_when_timeout() {
   104   let workerHelper = _getWorker();
   105   let worker = workerHelper.worker;
   106   let context = worker.ContextPool._contexts[0];
   108   context.RIL[UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE]();
   109   do_check_eq(context.RIL._isInEmergencyCbMode, true);
   110   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, TIMER_ID);
   112   let parcelTypes = [];
   113   context.Buf.newParcel = function(type, options) {
   114     parcelTypes.push(type);
   115   };
   117   // Timeout.
   118   fireTimeout();
   120   // Should clear timeout event.
   121   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, null);
   123   // Check indeed sent out REQUEST_EXIT_EMERGENCY_CALLBACK_MODE.
   124   do_check_neq(parcelTypes.indexOf(REQUEST_EXIT_EMERGENCY_CALLBACK_MODE), -1);
   126   run_next_test();
   127 });
   129 add_test(function test_request_exit_emergencyCbMode_when_dial() {
   130   let workerHelper = _getWorker();
   131   let worker = workerHelper.worker;
   132   let context = worker.ContextPool._contexts[0];
   134   context.RIL[UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE]();
   135   do_check_eq(context.RIL._isInEmergencyCbMode, true);
   136   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, TIMER_ID);
   138   let parcelTypes = [];
   139   context.Buf.newParcel = function(type, options) {
   140     parcelTypes.push(type);
   141   };
   143   // Dial non-emergency call.
   144   context.RIL.dial({number: "0912345678",
   145                   isDialEmergency: false});
   147   // Should clear timeout event.
   148   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, null);
   150   // Check indeed sent out REQUEST_EXIT_EMERGENCY_CALLBACK_MODE.
   151   do_check_neq(parcelTypes.indexOf(REQUEST_EXIT_EMERGENCY_CALLBACK_MODE), -1);
   153   run_next_test();
   154 });
   156 add_test(function test_request_exit_emergencyCbMode_explicitly() {
   157   let workerHelper = _getWorker();
   158   let worker = workerHelper.worker;
   159   let context = worker.ContextPool._contexts[0];
   161   context.RIL[UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE]();
   162   do_check_eq(context.RIL._isInEmergencyCbMode, true);
   163   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, TIMER_ID);
   165   let parcelTypes = [];
   166   context.Buf.newParcel = function(type, options) {
   167     parcelTypes.push(type);
   168   };
   170   context.RIL.handleChromeMessage({rilMessageType: "exitEmergencyCbMode"});
   171   context.RIL[REQUEST_EXIT_EMERGENCY_CALLBACK_MODE](1, {
   172     rilMessageType: "exitEmergencyCbMode",
   173     rilRequestError: ERROR_SUCCESS
   174   });
   175   let postedMessage = workerHelper.postedMessage;
   177   // Should clear timeout event.
   178   do_check_eq(context.RIL._exitEmergencyCbModeTimeoutID, null);
   180   // Check indeed sent out REQUEST_EXIT_EMERGENCY_CALLBACK_MODE.
   181   do_check_neq(parcelTypes.indexOf(REQUEST_EXIT_EMERGENCY_CALLBACK_MODE), -1);
   183   // Send back the response.
   184   do_check_eq(postedMessage.rilMessageType, "exitEmergencyCbMode");
   186   run_next_test();
   187 });

mercurial