dom/base/test/test_bug715041.xul

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 <?xml version="1.0"?>
     2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
     3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
     4 <!--
     5 https://bugzilla.mozilla.org/show_bug.cgi?id=715041
     6 -->
     7     <window title="Mozilla Bug 715041"
     8 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     9     <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
    11     <!-- test results are displayed in the html:body -->
    12     <body xmlns="http://www.w3.org/1999/xhtml">
    13     <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=715041"
    14 target="_blank">Mozilla Bug 715041</a>
    15     </body>
    17     <!-- test code goes here -->
    18     <script type="application/javascript">
    19     <![CDATA[
    21   /** Mock Idle Service Test for Bug 715041 **/
    22   SpecialPowers.setBoolPref("dom.idle-observers-api.fuzz_time.disabled", true);
    24   //class mock javascript idle service
    25   var idleServiceObj = {
    26     observers: [],
    27     windowObservers: [],
    28     idleTimeInMS: 5000,   //in milli seconds
    30     // takes note of the idle observers added as the minimum idle observer
    31     // with the idle service
    32     timesAdded: [],
    34     QueryInterface: function(iid) {
    35       if (iid.equals(Components.interfaces.nsISupports) ||
    36           iid.equals(Components.interfaces.nsIFactory) ||
    37           iid.equals(Components.interfaces.nsIIdleService)) {
    38         return this;
    39       }
    40       throw Components.results.NS_ERROR_NO_INTERFACE;
    41     },
    43     createInstance: function(outer, iid) {
    44       return this.QueryInterface(iid);
    45     },
    47     get idleTime() {
    48       return this.idleTimeInMS; //in milli seconds
    49     },
    51     set idleTime(timeInMS) {
    52       this.idleTimeInMS = timeInMS;
    53     },
    55     getWindowFromObserver: function(observer) {
    56       try {
    57         var interfaceRequestor = observer.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
    58         var window = interfaceRequestor.getInterface(Components.interfaces.nsIDOMWindow);
    59         return window;
    60       }
    61       catch (e) {}
    63       return null;
    64     },
    66     testIdleBackService: function(observer, topic) {
    67       dump("\nJS FAKE IDLE SERVICE\n");
    68       dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
    70       if (this.observers.length > 1) {
    71         this.observers[1].observer.observe(observer, topic, '\0');
    72         dump("JS CALLED OBSERVE FUNCTION!!!\n\n");
    73       }
    74     },
    76     addIdleObserver: function(observer, time) {
    77       dump("\nJS FAKE IDLE SERVICE add idle observer before\n");
    78       dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
    80       var window = this.getWindowFromObserver(observer);
    81       dump("window is: " + window + "\n");
    83       if (window) {
    84         this.observers.push({ observer: observer, time: time, });
    85         addedIdleObserver = true;
    86         numIdleObserversAdded++;
    87         this.timesAdded.push(time);
    89         dump ("\nMOCK IDLE SERVICE ADDING idle observer with time: " + time + "\n");
    90         dump("MOCK IDLE SERVICE: num idle observers added: " + numIdleObserversAdded + "\n\n");
    91       }
    92       else {
    93         dump("SHOULD NEVER GET HERE!");
    94         oldIdleService.addIdleObserver(observer, time);
    95         addedIdleObserver = false;
    96       }
    98       dump("\nJS FAKE IDLE SERVICE end of add idle observer\n");
    99       dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
   100     },
   102     removeIdleObserver: function(observer, time) {
   103       dump("\nJS REMOVE IDLE OBSERVER () time to be removed: " + time + "\n");
   104       var window = this.getWindowFromObserver(observer);
   105       if (!window) {
   106         oldIdleService.removeIdleObserver(observer, time);
   107       }
   108       else {
   109         var observerIndex = -1;
   110         for (var i=0; i<this.observers.length; i++) {
   111           dump("JS removeIdleObserver() observer time: " + this.observers[i].time + "\n");
   112           if (this.observers[i].time === time) {
   113             observerIndex = i;
   114             break;
   115           }
   116         }
   118         if (observerIndex != -1 && this.observers.length > 0) {
   119           numIdleObserversRemoved++;
   120           this.observers.splice(observerIndex, 1);
   121           removedIdleObserver = true;
   122           dump("MOCK IDLE SERVICE REMOVING idle observer with time " + time + "\n");
   123           dump("MOCK IDLE SERVICE numIdleObserversRemoved: " + numIdleObserversRemoved + " numIdleObserversAdded: " + numIdleObserversAdded + "\n\n");
   124         }
   125         else {
   126           removedIdleObserver = false;
   127         }
   128       }
   129       dump("\nJS FAKE IDLE SERVICE end of remove idle observer\n");
   130       dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
   131     },
   132   };
   134   /** Test for Bug 715041 **/
   135   dump("\n\n\nJS STARTING TESTING FOR BUG 715041\n");
   137   //bool variables
   138   var addedIdleObserver = removedIdleObserver = passed = cleanUp = false;
   140   //test case enabled
   141   var AddOutOfOrderActiveEnabled = AddOutOfOrderIdleEnabled =
   142       AddShiftLocalEnabled = AddNewLocalWhileAllIdleEnabled =
   143       TestActiveToActiveNotification = ShiftLocalTimerBackEnabled =
   144       AddRemoveIdleObserverWithInvalidTimeEnabled = true;
   146   //msgXCount
   147   var msg0Count = msg1Count = msg2Count = msg3Count = msg4Count = msg5Count =
   148       msg6Count = tcZero = currTestCaseNum = prevMsgNum =
   149       numIdleObserversRemoved = numIdleObserversAdded = 0;
   151   //test case number
   152   var tcZero = 0;
   153   var tcAddOutOfOrderActive = 1;
   154   var tcAddOutOfOrderIdle = 2;
   155   var tcAddShiftLocal = 3;
   156   var tcAddNewLocalWhileAllIdle = 4;
   157   var tcShiftLocalTimerBack = 5;
   158   var tcAddRemoveIdleObserverWithInvalidTime = 6;
   159   var tcTestActiveToActiveNotification = 7;
   161   function ResetMsgCounts() {
   162     msg0Count = msg1Count = msg2Count = msg3Count = msg4Count = msg5Count =
   163     msg6Count = prevMsgNum = 0;
   164   }
   166   function ResetVars() {
   167     msg0Count = msg1Count = msg2Count = msg3Count = msg4Count = msg5Count =
   168     msg6Count = prevMsgNum = 0;
   170     numIdleObserversAdded = numIdleObserversRemoved = 0;
   171     currTestCaseNum = -1;
   172     addedIdleObserver = removedIdleObserver = passed = cleanUp = false;
   173   }
   175   /*
   176    * - function printMsgCounts()
   177    */
   178   function printMsgCounts() {
   179     dump("\nmsg0Count: " + msg0Count +
   180          "\nmsg1Count: " + msg1Count +
   181          "\nmsg2Count: " + msg2Count +
   182          "\nmsg3Count: " + msg3Count +
   183          "\nmsg5Count: " + msg5Count +
   184          "\nmsg6Count: " + msg6Count +
   185          "\n"
   186          );
   187   }
   189   function performNextTest() {
   190     dump("\nfunction performNextTest()\ncurrTestCaseNum: " + currTestCaseNum +
   191          "\ncleanUp: " + cleanUp +
   192          "\npassed: " + passed +
   193          "\nnumIdleObserversRemoved: " + numIdleObserversRemoved +
   194          "\nnumIdleObservesAdded: " + numIdleObserversAdded + "\n");
   196     switch (currTestCaseNum) {
   197       case tcZero:
   198         ok(passed, "Test case 0 failed clean up!");
   199         caseZeroCleanUp();
   200         break;
   201       case tcAddShiftLocal:
   202         if (cleanUp && numIdleObserversRemoved === 1) {
   203           passed = true;
   204           ok(passed, "Failed test case AddShiftLocalCleanUp()");
   205           if (AddNewLocalWhileAllIdleEnabled) {
   206             AddNewLocalWhileAllIdle();
   207           }
   208           else {
   209             SimpleTest.finish();
   210           }
   211         }
   212         break;
   213       case tcAddNewLocalWhileAllIdle:
   214         ok(passed, "Failed test case: AddNewLocalWhileAllIdle()");
   215         AddNewLocalWhileAllIdleCleanUp();
   216         break;
   217       default:
   218         //do nothing.
   219         break;
   220     }
   221   }
   223   //Place Holder.
   224   var idleHandler0 = function() { dump("rmsg 0, should never be used!\n"); };
   226   //idleHandler1
   227   function idleHandler1() {
   228     msg1Count++;
   229     dump("msg 1 Count: " + msg1Count + "\n");
   231     switch (currTestCaseNum) {
   232     case tcAddOutOfOrderIdle:
   233       if (msg1Count === 1 && msg2Count === 1 && msg3Count === 1) {
   234         idleServiceObj.idleTime = 0;
   235         idleServiceObj.testIdleBackService(idleObserversArray[1], "active");
   236       }
   237       else if (msg1Count === 4 && msg2Count === 4 && msg3Count === 4) {
   238         passed = true;
   239         AddOutOfOrderIdleCleanUp();
   240       }
   241       break;
   242     case tcTestActiveToActiveNotification:
   243       if (msg1Count === 1 && !msg2Count && !msg3Count && !msg4Count && !msg5Count) {
   244         idleServiceObj.idleTime = 500;
   245         idleServiceObj.testIdleBackService(idleObserversArray[1], "active");
   246         return;
   247       }
   249       if (msg1Count === 2 && !msg2Count && !msg3Count && !msg4Count && !msg5Count) {        
   250         idleServiceObj.idleTime = 1000;
   251         idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
   252         return;
   253       }
   255       if (msg1Count === 3 && !msg2Count && !msg3Count && !msg4Count && !msg5Count) {
   256         return;
   257       }
   258       ok(false, "Failed test active to active notification.");
   259       SimpleTest.finish();
   260       break;  
   261     default:
   262       break;
   263     }
   264   }
   266   //idleHandler2
   267   function idleHandler2() {
   268     msg2Count++;
   269     dump("msg 2 Count: " + msg2Count + "\n");
   271     switch (currTestCaseNum) {
   272     case tcZero:
   273       switch (msg2Count) {
   274       case 2:
   275         passed = true;
   276         performNextTest();
   277         break;
   278       default:
   279         break;
   280       }
   281       break;
   282     case tcAddOutOfOrderIdle:
   283       if (msg3Count === 1 && msg2Count === 1 && !msg1Count) {
   284         idleServiceObj.idleTime = 4000;
   285         window.navigator.addIdleObserver(idleObserversArray[1]);
   286       }
   287       break;
   288     case tcAddShiftLocal:
   289       if (!msg1Count && msg2Count === 1 && !msg3Count && !msg4Count) {
   290         window.navigator.addIdleObserver(idleObserversArray[3]);
   291       }
   292       AddShiftLocalCleanUp();
   293       break;
   294     case tcAddNewLocalWhileAllIdle:
   295       if (msg1Count === 1 && msg2Count === 2) {
   296         idleServiceObj.idleTime = 3500;
   297         window.navigator.addIdleObserver(idleObserversArray[5]);
   298       }
   299       break;
   300     case (tcShiftLocalTimerBack):
   301       if (!msg1Count && msg2Count === 1 && !msg3Count && !msg4Count && !msg5Count) {
   302         window.navigator.addIdleObserver(idleObserversArray[5]);
   303         window.navigator.addIdleObserver(idleObserversArray[4]);
   304       }
   305       break;
   306     default:
   307       //do nothing.
   308       break;
   309     }
   310   }
   312   //idleHandler3
   313   function idleHandler3() {
   314     msg3Count++;
   315     dump("msg 3 Count: " + msg3Count + "\n");
   317     switch (currTestCaseNum) {
   318     case (tcAddOutOfOrderIdle):
   319       if (msg3Count === 1) {
   320         idleServiceObj.idleTime = 3500;
   321         window.navigator.addIdleObserver(idleObserversArray[2]);
   322       }
   323       if (msg1Count === 2 && msg2Count === 2 && msg3Count === 2) {
   324         idleServiceObj.idleTime = 1000;
   325         idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
   326       }
   327       else if (msg1Count === 3 && msg2Count === 3 && msg3Count === 3) {
   328         AddOutOfOrderIdle();
   329       }
   330       else if (msg1Count === 3 && msg2Count === 3 && msg3Count === 4) {
   331         passed = true;
   332         AddOutOfOrderIdleCleanUp();
   333       }
   334       break;
   335     default:
   336       break;
   337     }
   338   }
   340   //idleHandler4
   341   function idleHandler4() {
   342     msg4Count++;
   343     dump("msg 4 Count: " + msg4Count + "\n");
   345     switch (currTestCaseNum) {
   346     case tcAddOutOfOrderActive:
   347       if (msg1Count && msg2Count && msg3Count && msg4Count) {
   348         passed = true;
   349         ok(passed, "idleHandler4: failed AddOutOfOrderActive()");
   350         AddOutOfOrderActiveCleanUp();
   351         cleanUp = true;
   352       }
   353       break;
   354     case tcAddShiftLocal:
   355       if (msg1Count === 1 && msg3Count === 1 && msg4Count === 1) {
   356         idleServiceObj.idleTime = 3200;
   357         window.navigator.addIdleObserver(idleObserversArray[2]);
   358       }
   359       break;
   360     default:
   361       //do nothing.
   362       break;
   363     }
   364   }
   366   //idleHandler5
   367   function idleHandler5() {
   368     msg5Count++;
   369     dump("msg 5 Count: " + msg5Count + "\n");
   371     switch (currTestCaseNum) {
   372     case tcAddNewLocalWhileAllIdle:
   373       if (msg1Count === 1 && msg2Count === 2 && msg5Count === 1) {
   374         passed = true;
   375         performNextTest();
   376       }
   377       break;
   378     case tcShiftLocalTimerBack:
   379       if (!msg1Count && msg2Count === 1 && !msg3Count && msg4Count === 1 && msg5Count === 1) {
   380         passed = true;
   381         ShiftLocalTimerBackCleanUp();
   382       }
   383       break;
   384     case tcTestActiveToActiveNotification:
   385       passed = false;
   386       if (msg1Count === 3 && !msg2Count && !msg3Count && !msg4Count && msg5Count === 1) {
   387         passed = true;
   388       }
   389       ok(passed, "Failed TestActiveToActiveNotification.");
   390           TestActiveNotificationCleanUp();
   391       break;  
   392     default:
   393       //do nothing.
   394       break;
   395     }
   396   }
   398   //idleHandler6
   399   function idleHandler6() {
   400     dump("msg 6 Count: " + msg6Count + "\n");
   401   }
   403   var  idleObserversArray = [];
   404   idleObserversArray[0] = {time: 0, onidle: idleHandler0, onactive: idleHandler0};
   405   idleObserversArray[1] = {time: 1, onidle: idleHandler1, onactive: idleHandler1};
   406   idleObserversArray[2] = {time: 2, onidle: idleHandler2, onactive: idleHandler2};
   407   idleObserversArray[3] = {time: 3, onidle: idleHandler3, onactive: idleHandler3};
   408   idleObserversArray[4] = {time: 4, onidle: idleHandler4, onactive: idleHandler4};
   409   idleObserversArray[5] = {time: 5, onidle: idleHandler5, onactive: idleHandler5};
   410   idleObserversArray[6] = {time: 0, onidle: idleHandler6, onactive: idleHandler6};
   411   idleObserversArray[7] = {time: 2, onidle: null, onactive: null};
   413   idleServiceObj.observers.push( {observer: idleObserversArray[0], time: 0, } );
   415   /*
   416    * - case 0
   417    * - AddSingleIdleObserver
   418    * - takes care of adding duplicate local too
   419    * - user is currently idle since the
   420    *   requested idle time of 2s < current idle time of 5000ms set below.
   421    */
   422   function caseZero() {
   423     dump("\n\nTESTING CASE 0\n");
   424     dump("==============\n");
   426     ResetVars();
   427     currTestCaseNum = tcZero;
   428     idleServiceObj.idleTime = 5000;
   430     window.navigator.addIdleObserver(idleObserversArray[2]);
   431     idleServiceObj.testIdleBackService(idleObserversArray[2], "idle");
   432     window.navigator.addIdleObserver(idleObserversArray[2]);
   433   }
   435   function caseZeroCleanUp() {
   436     dump("\ncaseZeroCleanUp()\n");
   437     dump("==============\n");
   438     ResetVars();
   439     currTestCaseNum = tcZero;
   440     cleanUp = false;
   442     window.navigator.removeIdleObserver(idleObserversArray[2]);
   443     window.navigator.removeIdleObserver(idleObserversArray[2]);
   445     if (AddOutOfOrderActiveEnabled) {
   446       AddOutOfOrderActive();
   447     }
   448     else {
   449       dump("Finishing testing idle API.\n");
   450       SimpleTest.finish();
   451     }
   452   }
   454   /*
   455     AddOutOfOrderActive()
   456     - Tests if the idle observer with the min time is always registered correctly
   457       with the idle service.
   458   */
   459   function AddOutOfOrderActive() {
   460     dump("\n\nTESTING CASE AddOutOfOrderActive\n");
   461     dump("==============\n");
   463     ResetVars();
   464     currTestCaseNum = tcAddOutOfOrderActive;
   465     idleServiceObj.idleTime = 500;
   467     window.navigator.addIdleObserver(idleObserversArray[3]); //msg3
   468     window.navigator.addIdleObserver(idleObserversArray[4]); //msg4
   469     window.navigator.addIdleObserver(idleObserversArray[1]); //msg1
   470     window.navigator.addIdleObserver(idleObserversArray[2]); //msg2
   471     passed = false;
   473     idleServiceObj.idleTime = 1000;
   474     idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
   475   }
   477   /*
   478     - AddOutOfOrderActiveCleanUp()
   479   */
   480   function AddOutOfOrderActiveCleanUp() {
   481     dump("\nAddOutOfOrderActiveCleanUp()\n");
   482     dump("==============================\n");
   483     ResetVars();
   484     currTestCaseNum = tcAddOutOfOrderActive;
   485     cleanUp = false;
   486     idleServiceObj.idleTime = 4500;
   488     for (var i=1; i<5; i++) {
   489       window.navigator.removeIdleObserver(idleObserversArray[i]);
   490     }
   491     dump("JS AddOutOfOrderActiveCleanUp() DONE\n");
   492     if (AddOutOfOrderIdleEnabled) {
   493       AddOutOfOrderIdle();
   494     }
   495     else {
   496       dump("Finishing testing idle API.\n");
   497       SimpleTest.finish();
   498     }
   499   }
   501   /*
   502     - AddOutOfOrderIdle()
   503   */
   504   function AddOutOfOrderIdle() {
   505     dump("\nAddOutOfOrderIdle()\n");
   506     dump("======================================================================\n");
   508     dump("\nJS AddOutOfOrderIdle\n");
   509     dump("JS NUM OBSERVERS: " + idleServiceObj.observers.length + "\n");
   511     if (!msg1Count && !msg2Count && !msg3Count) {
   512       ResetVars();
   513     }
   514     currTestCaseNum = tcAddOutOfOrderIdle;
   515     cleanUp = false;
   517     if (!msg1Count && !msg2Count && !msg3Count) {
   518       idleServiceObj.idleTime = 3100;
   519     }
   520     window.navigator.addIdleObserver(idleObserversArray[3]);
   521     if (!msg1Count && !msg2Count && !msg3Count) {
   522       idleServiceObj.testIdleBackService(idleObserversArray[3], "idle");
   523     }
   524   }
   526   /*
   527    - AddOutOfOrderIdleCleanUp()
   528   */
   529   function AddOutOfOrderIdleCleanUp() {
   530     ok(passed, "Failed test case: AddOutOfOrderIdle()");
   531     dump("\nAddOutOfOrderIdleCleanUp()\n");
   532     dump("==========================\n");
   533     ResetVars();
   534     currTestCaseNum = tcAddOutOfOrderIdle;
   535     cleanUp = true;
   536     idleServiceObj.idleTime = 4100;
   538     for (var j=1; j<4; j++) {
   539       window.navigator.removeIdleObserver(idleObserversArray[j]);
   540     }
   541     window.navigator.removeIdleObserver(idleObserversArray[3]);
   543     if (idleServiceObj.observers.length === 1) {
   544       passed = true;
   545     }
   546     else {
   547       passed = false;
   548     }
   549     ok(passed, "Failed test case: AddOutOfOrderIdleCleanUp()");
   550     if (AddShiftLocalEnabled) {
   551       AddShiftLocal();
   552     }
   553     else {
   554       dump("Finished AddOutOfOrderIdleCleanUp() test.\n");
   555       SimpleTest.finish();
   556     }
   557   }
   559   /*
   560    * function AddShiftLocal()
   561    * - user is idle
   562    * - check that local idle timer is shifted correctly
   563    * - msg 1 fired when user is idle
   564    * - msg 3 fired when 3000
   565    * - msg 2 fired immediately when added at 3200 ms
   566    * - msg 4 fired by local timer.
   567    */
   568   function AddShiftLocal()
   569   {
   570     dump("\n\nTESTING CASE AddShiftLocal\n");
   571     dump("==============\n");
   573     ResetVars();
   574     currTestCaseNum = tcAddShiftLocal;
   575     idleServiceObj.idleTime = 500;
   577     window.navigator.addIdleObserver(idleObserversArray[1]);
   578     window.navigator.addIdleObserver(idleObserversArray[3]);
   579     window.navigator.addIdleObserver(idleObserversArray[4]);
   581     idleServiceObj.idleTime = 1000;
   582     idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
   583   }
   585   /*
   586    * function AddShiftLocalCleanUp()
   587    */
   588   function AddShiftLocalCleanUp()
   589   {
   590     dump("\n\nTESTING CASE AddShiftLocalCleanUp\n");
   591     dump("==============\n");
   593     ResetVars();
   594     currTestCaseNum = tcAddShiftLocal;
   596     for (var i=1; i<5; i++) {
   597       window.navigator.removeIdleObserver(idleObserversArray[i]);
   598     }
   599     dump("AddShiftLocalCleanUp() done clean up\n");
   600     if (AddNewLocalWhileAllIdleEnabled) {
   601       AddNewLocalWhileAllIdle();
   602     }
   603     else {
   604       dump("Finished testing AddShiftLocal()\n");
   605       SimpleTest.finish();
   606     }
   607   }
   609   /*
   610    * AddNewLocalWhileAllIdle()
   611    * - no local idle timer exists because all of the idle observers that were added had a requested
   612    *   idle time of < curr user idle time and so were fired immediately. No local timer was required.
   613    * - now add an idle observer whose requested idle time is > current use idle time and > min idle
   614    *   requested time in the list of idle observers.
   615    */
   616   function AddNewLocalWhileAllIdle()
   617   {
   618     dump("\n\nTESTING CASE AddNewLocalWhileAllIdle\n");
   619     dump("==============\n");
   621     ResetVars();
   622     currTestCaseNum = tcAddNewLocalWhileAllIdle;
   623     idleServiceObj.idleTime = 500;
   625     window.navigator.addIdleObserver(idleObserversArray[1]);
   626     window.navigator.addIdleObserver(idleObserversArray[2]);
   627     window.navigator.addIdleObserver(idleObserversArray[2]);
   629     idleServiceObj.idleTime = 1000;
   630     idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
   631   }
   633   function AddNewLocalWhileAllIdleCleanUp()
   634   {
   635     dump("\n\nTESTING CASE AddNewLocalWhileAllIdleCleanUp\n");
   636     dump("==============\n");
   638     ResetVars();
   639     currTestCaseNum = tcAddNewLocalWhileAllIdle;
   641     window.navigator.removeIdleObserver(idleObserversArray[1]);
   642     window.navigator.removeIdleObserver(idleObserversArray[2]);
   643     window.navigator.removeIdleObserver(idleObserversArray[2]);
   644     window.navigator.removeIdleObserver(idleObserversArray[5]);
   646     if (ShiftLocalTimerBackEnabled) {
   647       ShiftLocalTimerBack();
   648     }
   649     else {
   650       dump("Finished testing TestActiveToActiveNotificationCleanUp()\n");
   651       SimpleTest.finish();
   652     }
   653   }
   655   /*
   656    * ShiftLocalTimerBack()
   657    * - add a new idle observer whose requested time is > current user idle time
   658    *   but < the current local timer that has been set.
   659    * - the local timer will need to be reset to fire the new msg added.
   660    * RESULT
   661    * - should print all of them in order
   662    */
   663   function ShiftLocalTimerBack()
   664   {
   665     dump("\n\nTESTING CASE ShiftLocalTimerBack()\n");
   666     dump("==============\n");
   668     ResetVars();
   669     currTestCaseNum = tcShiftLocalTimerBack;
   670     idleServiceObj.idleTime = 2100;
   672     window.navigator.addIdleObserver(idleObserversArray[2]);
   673     idleServiceObj.testIdleBackService(idleObserversArray[2], "idle");
   674   }
   676   function ShiftLocalTimerBackCleanUp()
   677   {
   678     dump("\n\nTESTING CASE ShiftLocalTimerBackCleanUp\n");
   679     dump("==============\n");
   681     ResetVars();
   682     currTestCaseNum = tcShiftLocalTimerBack;
   683     window.navigator.removeIdleObserver(idleObserversArray[2]);
   684     window.navigator.removeIdleObserver(idleObserversArray[4]);
   685     window.navigator.removeIdleObserver(idleObserversArray[5]);
   686     dump("ShiftLocalTimerBackCleanUp() done clean up\n");
   688     if (TestActiveToActiveNotificationEnabled) {
   689       TestActiveNotification();
   690     }
   691     else {
   692       dump("Finished testing AddNewLocalWhileAllIdle()\n");
   693       SimpleTest.finish();
   694     }   
   695   }
   697   function TestActiveNotification()
   698   {
   699     dump("\n\nTESTING CASE TestActiveNotification\n");
   700     dump("===============================================\n");
   702     ResetVars();
   703     currTestCaseNum = tcTestActiveToActiveNotification;
   705     idleServiceObj.idleTime = 500;
   706     window.navigator.addIdleObserver(idleObserversArray[1]);
   707     window.navigator.addIdleObserver(idleObserversArray[5]);
   708     idleServiceObj.idleTime = 1000;
   709     idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");    
   710   }
   712   function TestActiveNotificationCleanUp()
   713   {
   714     dump("\n\nTESTING CASE TestActiveNotificationCleanUp\n");
   715     dump("===============================================\n");
   717     try {
   718       componentMgr.unregisterFactory(idleServiceCID, idleServiceObj);
   719     }
   720     catch(err) {
   721       dump("test_bug715041.xul: ShiftLocalTimerBackCleanUp() Failed to unregister factory, mock idle service!\n");
   722     }
   724     try {
   725       componentMgr.registerFactory(oldIdleServiceCID, "Re registering old idle service", idleServiceContractID, oldIdleServiceFactoryObj);
   726     }
   727     catch(err) {
   728       dump("test_bug715041.xul: ShiftLocalTimerBackCleanUp() Failed to register factory, original idle service!\n");
   729     }
   731     SimpleTest.finish();
   732   }
   734   /*
   735    * function AddRemoveIdleObserverWithInvalidTime()
   736    */
   737   function AddRemoveIdleObserverWithInvalidTime()
   738   {
   739     dump("\n\nTESTING CASE AddRemoveIdleObserverWithInvalidTime()\n");
   740     dump("==============\n");
   742     ResetVars();
   743     currTestCaseNum = tcAddRemoveIdleObserverWithInvalidTime;
   745     //while idle
   746     idleServiceObj.idleTime = 2100;
   747     var rv = window.navigator.addIdleObserver(idleObserversArray[6]);
   748     dump("rv: " + rv + "\n");
   749     rv = window.navigator.removeIdleObserver(idleObserversArray[6]);
   751     idleServiceObj.idleTime = 0;
   752     window.navigator.addIdleObserver(idleObserversArray[6]);
   753     window.navigator.removeIdleObserver(idleObserversArray[6]);
   755     SimpleTest.finish();
   756   }
   758   try {
   759     var idleServiceCID = Components.ID("287075a6-f968-4516-8043-406c46f503b4");
   760     var idleServiceContractID = "@mozilla.org/widget/idleservice;1";
   761     var oldIdleService = Components.classes[idleServiceContractID].getService(Components.interfaces.nsIIdleService);
   762   }
   763   catch(ex) {
   764     dump("test_bug715041.xul: 1) Failed to get old idle service.\n");
   765   }
   767   try {
   768     // Registering new moch JS idle service
   769     var componentMgr = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
   770   }
   771   catch(err) {
   772     dump("test_bug715041.xul: Failed to query component registrar interface.\n");
   773   }
   775   try {
   776     var oldIdleServiceFactoryObj = componentMgr.getClassObjectByContractID(idleServiceContractID, Components.interfaces.nsIFactory);
   777   }
   778   catch(err) {
   779     dump("test_bug715041.xul: Failed to get old idle service.\n");
   780   }
   782   try {
   783     var oldIdleServiceCID = componentMgr.contractIDToCID(idleServiceContractID);
   784   }
   785   catch(err) {
   786     dump("test_bug715041.xul: Failed to convert ID to CID for old idle service.\n");
   787   }
   789   try {
   790     componentMgr.unregisterFactory(oldIdleServiceCID, oldIdleServiceFactoryObj);
   791   }
   792   catch(err) {
   793     dump("test_bug715041.xul: Failed to unregister old idle service factory object!\n");
   794   }
   796   try {
   797     componentMgr.registerFactory(idleServiceCID, "Test Simple Idle/Back Notifications", idleServiceContractID, idleServiceObj);
   798   }
   799   catch(err) {
   800     dump("test_bug715041.xul: Failed to register mock idle service.\n");
   801   }
   803   SimpleTest.waitForExplicitFinish();
   804   SimpleTest.requestLongerTimeout(10);
   806   AddOutOfOrderActiveEnabled = true;
   807   AddOutOfOrderIdleEnabled = true;
   808   AddNewLocalWhileAllIdleEnabled = true;
   809   TestActiveToActiveNotificationEnabled = true;
   810   AddShiftLocalEnabled = true;
   811   AddIdleObserverWithInvalidTimeEnabled = false;
   813   caseZero();  
   815     ]]>
   816     </script>
   817     </window>

mercurial