mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
819 lines
25 KiB
XML
819 lines
25 KiB
XML
<?xml version="1.0"?>
|
|
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
|
|
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=715041
|
|
-->
|
|
<window title="Mozilla Bug 715041"
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
|
|
|
|
<!-- test results are displayed in the html:body -->
|
|
<body xmlns="http://www.w3.org/1999/xhtml">
|
|
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=715041"
|
|
target="_blank">Mozilla Bug 715041</a>
|
|
</body>
|
|
|
|
<!-- test code goes here -->
|
|
<script type="application/javascript">
|
|
<![CDATA[
|
|
|
|
/** Mock Idle Service Test for Bug 715041 **/
|
|
SpecialPowers.setBoolPref("dom.idle-observers-api.fuzz_time.disabled", true);
|
|
|
|
//class mock javascript idle service
|
|
var idleServiceObj = {
|
|
observers: [],
|
|
windowObservers: [],
|
|
idleTimeInMS: 5000, //in milli seconds
|
|
|
|
// takes note of the idle observers added as the minimum idle observer
|
|
// with the idle service
|
|
timesAdded: [],
|
|
|
|
QueryInterface: function(iid) {
|
|
if (iid.equals(Components.interfaces.nsISupports) ||
|
|
iid.equals(Components.interfaces.nsIFactory) ||
|
|
iid.equals(Components.interfaces.nsIIdleService)) {
|
|
return this;
|
|
}
|
|
throw Components.results.NS_ERROR_NO_INTERFACE;
|
|
},
|
|
|
|
createInstance: function(outer, iid) {
|
|
return this.QueryInterface(iid);
|
|
},
|
|
|
|
get idleTime() {
|
|
return this.idleTimeInMS; //in milli seconds
|
|
},
|
|
|
|
set idleTime(timeInMS) {
|
|
this.idleTimeInMS = timeInMS;
|
|
},
|
|
|
|
getWindowFromObserver: function(observer) {
|
|
try {
|
|
var interfaceRequestor = observer.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
|
|
var window = interfaceRequestor.getInterface(Components.interfaces.nsIDOMWindow);
|
|
return window;
|
|
}
|
|
catch (e) {}
|
|
|
|
return null;
|
|
},
|
|
|
|
testIdleBackService: function(observer, topic) {
|
|
dump("\nJS FAKE IDLE SERVICE\n");
|
|
dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
|
|
|
|
if (this.observers.length > 1) {
|
|
this.observers[1].observer.observe(observer, topic, '\0');
|
|
dump("JS CALLED OBSERVE FUNCTION!!!\n\n");
|
|
}
|
|
},
|
|
|
|
addIdleObserver: function(observer, time) {
|
|
dump("\nJS FAKE IDLE SERVICE add idle observer before\n");
|
|
dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
|
|
|
|
var window = this.getWindowFromObserver(observer);
|
|
dump("window is: " + window + "\n");
|
|
|
|
if (window) {
|
|
this.observers.push({ observer: observer, time: time, });
|
|
addedIdleObserver = true;
|
|
numIdleObserversAdded++;
|
|
this.timesAdded.push(time);
|
|
|
|
dump ("\nMOCK IDLE SERVICE ADDING idle observer with time: " + time + "\n");
|
|
dump("MOCK IDLE SERVICE: num idle observers added: " + numIdleObserversAdded + "\n\n");
|
|
}
|
|
else {
|
|
dump("SHOULD NEVER GET HERE!");
|
|
oldIdleService.addIdleObserver(observer, time);
|
|
addedIdleObserver = false;
|
|
}
|
|
|
|
dump("\nJS FAKE IDLE SERVICE end of add idle observer\n");
|
|
dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
|
|
},
|
|
|
|
removeIdleObserver: function(observer, time) {
|
|
dump("\nJS REMOVE IDLE OBSERVER () time to be removed: " + time + "\n");
|
|
var window = this.getWindowFromObserver(observer);
|
|
if (!window) {
|
|
oldIdleService.removeIdleObserver(observer, time);
|
|
}
|
|
else {
|
|
var observerIndex = -1;
|
|
for (var i=0; i<this.observers.length; i++) {
|
|
dump("JS removeIdleObserver() observer time: " + this.observers[i].time + "\n");
|
|
if (this.observers[i].time === time) {
|
|
observerIndex = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (observerIndex != -1 && this.observers.length > 0) {
|
|
numIdleObserversRemoved++;
|
|
this.observers.splice(observerIndex, 1);
|
|
removedIdleObserver = true;
|
|
dump("MOCK IDLE SERVICE REMOVING idle observer with time " + time + "\n");
|
|
dump("MOCK IDLE SERVICE numIdleObserversRemoved: " + numIdleObserversRemoved + " numIdleObserversAdded: " + numIdleObserversAdded + "\n\n");
|
|
}
|
|
else {
|
|
removedIdleObserver = false;
|
|
}
|
|
}
|
|
dump("\nJS FAKE IDLE SERVICE end of remove idle observer\n");
|
|
dump("JS NUM OBSERVERS: " + this.observers.length + "\n");
|
|
},
|
|
};
|
|
|
|
/** Test for Bug 715041 **/
|
|
dump("\n\n\nJS STARTING TESTING FOR BUG 715041\n");
|
|
|
|
//bool variables
|
|
var addedIdleObserver = removedIdleObserver = passed = cleanUp = false;
|
|
|
|
//test case enabled
|
|
var AddOutOfOrderActiveEnabled = AddOutOfOrderIdleEnabled =
|
|
AddShiftLocalEnabled = AddNewLocalWhileAllIdleEnabled =
|
|
TestActiveToActiveNotification = ShiftLocalTimerBackEnabled =
|
|
AddRemoveIdleObserverWithInvalidTimeEnabled = true;
|
|
|
|
//msgXCount
|
|
var msg0Count = msg1Count = msg2Count = msg3Count = msg4Count = msg5Count =
|
|
msg6Count = tcZero = currTestCaseNum = prevMsgNum =
|
|
numIdleObserversRemoved = numIdleObserversAdded = 0;
|
|
|
|
//test case number
|
|
var tcZero = 0;
|
|
var tcAddOutOfOrderActive = 1;
|
|
var tcAddOutOfOrderIdle = 2;
|
|
var tcAddShiftLocal = 3;
|
|
var tcAddNewLocalWhileAllIdle = 4;
|
|
var tcShiftLocalTimerBack = 5;
|
|
var tcAddRemoveIdleObserverWithInvalidTime = 6;
|
|
var tcTestActiveToActiveNotification = 7;
|
|
|
|
function ResetMsgCounts() {
|
|
msg0Count = msg1Count = msg2Count = msg3Count = msg4Count = msg5Count =
|
|
msg6Count = prevMsgNum = 0;
|
|
}
|
|
|
|
function ResetVars() {
|
|
msg0Count = msg1Count = msg2Count = msg3Count = msg4Count = msg5Count =
|
|
msg6Count = prevMsgNum = 0;
|
|
|
|
numIdleObserversAdded = numIdleObserversRemoved = 0;
|
|
currTestCaseNum = -1;
|
|
addedIdleObserver = removedIdleObserver = passed = cleanUp = false;
|
|
}
|
|
|
|
/*
|
|
* - function printMsgCounts()
|
|
*/
|
|
function printMsgCounts() {
|
|
dump("\nmsg0Count: " + msg0Count +
|
|
"\nmsg1Count: " + msg1Count +
|
|
"\nmsg2Count: " + msg2Count +
|
|
"\nmsg3Count: " + msg3Count +
|
|
"\nmsg5Count: " + msg5Count +
|
|
"\nmsg6Count: " + msg6Count +
|
|
"\n"
|
|
);
|
|
}
|
|
|
|
function performNextTest() {
|
|
dump("\nfunction performNextTest()\ncurrTestCaseNum: " + currTestCaseNum +
|
|
"\ncleanUp: " + cleanUp +
|
|
"\npassed: " + passed +
|
|
"\nnumIdleObserversRemoved: " + numIdleObserversRemoved +
|
|
"\nnumIdleObservesAdded: " + numIdleObserversAdded + "\n");
|
|
|
|
switch (currTestCaseNum) {
|
|
case tcZero:
|
|
ok(passed, "Test case 0 failed clean up!");
|
|
caseZeroCleanUp();
|
|
break;
|
|
case tcAddShiftLocal:
|
|
if (cleanUp && numIdleObserversRemoved === 1) {
|
|
passed = true;
|
|
ok(passed, "Failed test case AddShiftLocalCleanUp()");
|
|
if (AddNewLocalWhileAllIdleEnabled) {
|
|
AddNewLocalWhileAllIdle();
|
|
}
|
|
else {
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
break;
|
|
case tcAddNewLocalWhileAllIdle:
|
|
ok(passed, "Failed test case: AddNewLocalWhileAllIdle()");
|
|
AddNewLocalWhileAllIdleCleanUp();
|
|
break;
|
|
default:
|
|
//do nothing.
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Place Holder.
|
|
var idleHandler0 = function() { dump("rmsg 0, should never be used!\n"); };
|
|
|
|
//idleHandler1
|
|
function idleHandler1() {
|
|
msg1Count++;
|
|
dump("msg 1 Count: " + msg1Count + "\n");
|
|
|
|
switch (currTestCaseNum) {
|
|
case tcAddOutOfOrderIdle:
|
|
if (msg1Count === 1 && msg2Count === 1 && msg3Count === 1) {
|
|
idleServiceObj.idleTime = 0;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "active");
|
|
}
|
|
else if (msg1Count === 4 && msg2Count === 4 && msg3Count === 4) {
|
|
passed = true;
|
|
AddOutOfOrderIdleCleanUp();
|
|
}
|
|
break;
|
|
case tcTestActiveToActiveNotification:
|
|
if (msg1Count === 1 && !msg2Count && !msg3Count && !msg4Count && !msg5Count) {
|
|
idleServiceObj.idleTime = 500;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "active");
|
|
return;
|
|
}
|
|
|
|
if (msg1Count === 2 && !msg2Count && !msg3Count && !msg4Count && !msg5Count) {
|
|
idleServiceObj.idleTime = 1000;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
|
|
return;
|
|
}
|
|
|
|
if (msg1Count === 3 && !msg2Count && !msg3Count && !msg4Count && !msg5Count) {
|
|
return;
|
|
}
|
|
ok(false, "Failed test active to active notification.");
|
|
SimpleTest.finish();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//idleHandler2
|
|
function idleHandler2() {
|
|
msg2Count++;
|
|
dump("msg 2 Count: " + msg2Count + "\n");
|
|
|
|
switch (currTestCaseNum) {
|
|
case tcZero:
|
|
switch (msg2Count) {
|
|
case 2:
|
|
passed = true;
|
|
performNextTest();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case tcAddOutOfOrderIdle:
|
|
if (msg3Count === 1 && msg2Count === 1 && !msg1Count) {
|
|
idleServiceObj.idleTime = 4000;
|
|
window.navigator.addIdleObserver(idleObserversArray[1]);
|
|
}
|
|
break;
|
|
case tcAddShiftLocal:
|
|
if (!msg1Count && msg2Count === 1 && !msg3Count && !msg4Count) {
|
|
window.navigator.addIdleObserver(idleObserversArray[3]);
|
|
}
|
|
AddShiftLocalCleanUp();
|
|
break;
|
|
case tcAddNewLocalWhileAllIdle:
|
|
if (msg1Count === 1 && msg2Count === 2) {
|
|
idleServiceObj.idleTime = 3500;
|
|
window.navigator.addIdleObserver(idleObserversArray[5]);
|
|
}
|
|
break;
|
|
case (tcShiftLocalTimerBack):
|
|
if (!msg1Count && msg2Count === 1 && !msg3Count && !msg4Count && !msg5Count) {
|
|
window.navigator.addIdleObserver(idleObserversArray[5]);
|
|
window.navigator.addIdleObserver(idleObserversArray[4]);
|
|
}
|
|
break;
|
|
default:
|
|
//do nothing.
|
|
break;
|
|
}
|
|
}
|
|
|
|
//idleHandler3
|
|
function idleHandler3() {
|
|
msg3Count++;
|
|
dump("msg 3 Count: " + msg3Count + "\n");
|
|
|
|
switch (currTestCaseNum) {
|
|
case (tcAddOutOfOrderIdle):
|
|
if (msg3Count === 1) {
|
|
idleServiceObj.idleTime = 3500;
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
}
|
|
if (msg1Count === 2 && msg2Count === 2 && msg3Count === 2) {
|
|
idleServiceObj.idleTime = 1000;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
|
|
}
|
|
else if (msg1Count === 3 && msg2Count === 3 && msg3Count === 3) {
|
|
AddOutOfOrderIdle();
|
|
}
|
|
else if (msg1Count === 3 && msg2Count === 3 && msg3Count === 4) {
|
|
passed = true;
|
|
AddOutOfOrderIdleCleanUp();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//idleHandler4
|
|
function idleHandler4() {
|
|
msg4Count++;
|
|
dump("msg 4 Count: " + msg4Count + "\n");
|
|
|
|
switch (currTestCaseNum) {
|
|
case tcAddOutOfOrderActive:
|
|
if (msg1Count && msg2Count && msg3Count && msg4Count) {
|
|
passed = true;
|
|
ok(passed, "idleHandler4: failed AddOutOfOrderActive()");
|
|
AddOutOfOrderActiveCleanUp();
|
|
cleanUp = true;
|
|
}
|
|
break;
|
|
case tcAddShiftLocal:
|
|
if (msg1Count === 1 && msg3Count === 1 && msg4Count === 1) {
|
|
idleServiceObj.idleTime = 3200;
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
}
|
|
break;
|
|
default:
|
|
//do nothing.
|
|
break;
|
|
}
|
|
}
|
|
|
|
//idleHandler5
|
|
function idleHandler5() {
|
|
msg5Count++;
|
|
dump("msg 5 Count: " + msg5Count + "\n");
|
|
|
|
switch (currTestCaseNum) {
|
|
case tcAddNewLocalWhileAllIdle:
|
|
if (msg1Count === 1 && msg2Count === 2 && msg5Count === 1) {
|
|
passed = true;
|
|
performNextTest();
|
|
}
|
|
break;
|
|
case tcShiftLocalTimerBack:
|
|
if (!msg1Count && msg2Count === 1 && !msg3Count && msg4Count === 1 && msg5Count === 1) {
|
|
passed = true;
|
|
ShiftLocalTimerBackCleanUp();
|
|
}
|
|
break;
|
|
case tcTestActiveToActiveNotification:
|
|
passed = false;
|
|
if (msg1Count === 3 && !msg2Count && !msg3Count && !msg4Count && msg5Count === 1) {
|
|
passed = true;
|
|
}
|
|
ok(passed, "Failed TestActiveToActiveNotification.");
|
|
TestActiveNotificationCleanUp();
|
|
break;
|
|
default:
|
|
//do nothing.
|
|
break;
|
|
}
|
|
}
|
|
|
|
//idleHandler6
|
|
function idleHandler6() {
|
|
dump("msg 6 Count: " + msg6Count + "\n");
|
|
}
|
|
|
|
var idleObserversArray = [];
|
|
idleObserversArray[0] = {time: 0, onidle: idleHandler0, onactive: idleHandler0};
|
|
idleObserversArray[1] = {time: 1, onidle: idleHandler1, onactive: idleHandler1};
|
|
idleObserversArray[2] = {time: 2, onidle: idleHandler2, onactive: idleHandler2};
|
|
idleObserversArray[3] = {time: 3, onidle: idleHandler3, onactive: idleHandler3};
|
|
idleObserversArray[4] = {time: 4, onidle: idleHandler4, onactive: idleHandler4};
|
|
idleObserversArray[5] = {time: 5, onidle: idleHandler5, onactive: idleHandler5};
|
|
idleObserversArray[6] = {time: 0, onidle: idleHandler6, onactive: idleHandler6};
|
|
idleObserversArray[7] = {time: 2, onidle: null, onactive: null};
|
|
|
|
idleServiceObj.observers.push( {observer: idleObserversArray[0], time: 0, } );
|
|
|
|
/*
|
|
* - case 0
|
|
* - AddSingleIdleObserver
|
|
* - takes care of adding duplicate local too
|
|
* - user is currently idle since the
|
|
* requested idle time of 2s < current idle time of 5000ms set below.
|
|
*/
|
|
function caseZero() {
|
|
dump("\n\nTESTING CASE 0\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcZero;
|
|
idleServiceObj.idleTime = 5000;
|
|
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
idleServiceObj.testIdleBackService(idleObserversArray[2], "idle");
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
}
|
|
|
|
function caseZeroCleanUp() {
|
|
dump("\ncaseZeroCleanUp()\n");
|
|
dump("==============\n");
|
|
ResetVars();
|
|
currTestCaseNum = tcZero;
|
|
cleanUp = false;
|
|
|
|
window.navigator.removeIdleObserver(idleObserversArray[2]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[2]);
|
|
|
|
if (AddOutOfOrderActiveEnabled) {
|
|
AddOutOfOrderActive();
|
|
}
|
|
else {
|
|
dump("Finishing testing idle API.\n");
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
/*
|
|
AddOutOfOrderActive()
|
|
- Tests if the idle observer with the min time is always registered correctly
|
|
with the idle service.
|
|
*/
|
|
function AddOutOfOrderActive() {
|
|
dump("\n\nTESTING CASE AddOutOfOrderActive\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcAddOutOfOrderActive;
|
|
idleServiceObj.idleTime = 500;
|
|
|
|
window.navigator.addIdleObserver(idleObserversArray[3]); //msg3
|
|
window.navigator.addIdleObserver(idleObserversArray[4]); //msg4
|
|
window.navigator.addIdleObserver(idleObserversArray[1]); //msg1
|
|
window.navigator.addIdleObserver(idleObserversArray[2]); //msg2
|
|
passed = false;
|
|
|
|
idleServiceObj.idleTime = 1000;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
|
|
}
|
|
|
|
/*
|
|
- AddOutOfOrderActiveCleanUp()
|
|
*/
|
|
function AddOutOfOrderActiveCleanUp() {
|
|
dump("\nAddOutOfOrderActiveCleanUp()\n");
|
|
dump("==============================\n");
|
|
ResetVars();
|
|
currTestCaseNum = tcAddOutOfOrderActive;
|
|
cleanUp = false;
|
|
idleServiceObj.idleTime = 4500;
|
|
|
|
for (var i=1; i<5; i++) {
|
|
window.navigator.removeIdleObserver(idleObserversArray[i]);
|
|
}
|
|
dump("JS AddOutOfOrderActiveCleanUp() DONE\n");
|
|
if (AddOutOfOrderIdleEnabled) {
|
|
AddOutOfOrderIdle();
|
|
}
|
|
else {
|
|
dump("Finishing testing idle API.\n");
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
/*
|
|
- AddOutOfOrderIdle()
|
|
*/
|
|
function AddOutOfOrderIdle() {
|
|
dump("\nAddOutOfOrderIdle()\n");
|
|
dump("======================================================================\n");
|
|
|
|
dump("\nJS AddOutOfOrderIdle\n");
|
|
dump("JS NUM OBSERVERS: " + idleServiceObj.observers.length + "\n");
|
|
|
|
if (!msg1Count && !msg2Count && !msg3Count) {
|
|
ResetVars();
|
|
}
|
|
currTestCaseNum = tcAddOutOfOrderIdle;
|
|
cleanUp = false;
|
|
|
|
if (!msg1Count && !msg2Count && !msg3Count) {
|
|
idleServiceObj.idleTime = 3100;
|
|
}
|
|
window.navigator.addIdleObserver(idleObserversArray[3]);
|
|
if (!msg1Count && !msg2Count && !msg3Count) {
|
|
idleServiceObj.testIdleBackService(idleObserversArray[3], "idle");
|
|
}
|
|
}
|
|
|
|
/*
|
|
- AddOutOfOrderIdleCleanUp()
|
|
*/
|
|
function AddOutOfOrderIdleCleanUp() {
|
|
ok(passed, "Failed test case: AddOutOfOrderIdle()");
|
|
dump("\nAddOutOfOrderIdleCleanUp()\n");
|
|
dump("==========================\n");
|
|
ResetVars();
|
|
currTestCaseNum = tcAddOutOfOrderIdle;
|
|
cleanUp = true;
|
|
idleServiceObj.idleTime = 4100;
|
|
|
|
for (var j=1; j<4; j++) {
|
|
window.navigator.removeIdleObserver(idleObserversArray[j]);
|
|
}
|
|
window.navigator.removeIdleObserver(idleObserversArray[3]);
|
|
|
|
if (idleServiceObj.observers.length === 1) {
|
|
passed = true;
|
|
}
|
|
else {
|
|
passed = false;
|
|
}
|
|
ok(passed, "Failed test case: AddOutOfOrderIdleCleanUp()");
|
|
if (AddShiftLocalEnabled) {
|
|
AddShiftLocal();
|
|
}
|
|
else {
|
|
dump("Finished AddOutOfOrderIdleCleanUp() test.\n");
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* function AddShiftLocal()
|
|
* - user is idle
|
|
* - check that local idle timer is shifted correctly
|
|
* - msg 1 fired when user is idle
|
|
* - msg 3 fired when 3000
|
|
* - msg 2 fired immediately when added at 3200 ms
|
|
* - msg 4 fired by local timer.
|
|
*/
|
|
function AddShiftLocal()
|
|
{
|
|
dump("\n\nTESTING CASE AddShiftLocal\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcAddShiftLocal;
|
|
idleServiceObj.idleTime = 500;
|
|
|
|
window.navigator.addIdleObserver(idleObserversArray[1]);
|
|
window.navigator.addIdleObserver(idleObserversArray[3]);
|
|
window.navigator.addIdleObserver(idleObserversArray[4]);
|
|
|
|
idleServiceObj.idleTime = 1000;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
|
|
}
|
|
|
|
/*
|
|
* function AddShiftLocalCleanUp()
|
|
*/
|
|
function AddShiftLocalCleanUp()
|
|
{
|
|
dump("\n\nTESTING CASE AddShiftLocalCleanUp\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcAddShiftLocal;
|
|
|
|
for (var i=1; i<5; i++) {
|
|
window.navigator.removeIdleObserver(idleObserversArray[i]);
|
|
}
|
|
dump("AddShiftLocalCleanUp() done clean up\n");
|
|
if (AddNewLocalWhileAllIdleEnabled) {
|
|
AddNewLocalWhileAllIdle();
|
|
}
|
|
else {
|
|
dump("Finished testing AddShiftLocal()\n");
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* AddNewLocalWhileAllIdle()
|
|
* - no local idle timer exists because all of the idle observers that were added had a requested
|
|
* idle time of < curr user idle time and so were fired immediately. No local timer was required.
|
|
* - now add an idle observer whose requested idle time is > current use idle time and > min idle
|
|
* requested time in the list of idle observers.
|
|
*/
|
|
function AddNewLocalWhileAllIdle()
|
|
{
|
|
dump("\n\nTESTING CASE AddNewLocalWhileAllIdle\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcAddNewLocalWhileAllIdle;
|
|
idleServiceObj.idleTime = 500;
|
|
|
|
window.navigator.addIdleObserver(idleObserversArray[1]);
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
|
|
idleServiceObj.idleTime = 1000;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
|
|
}
|
|
|
|
function AddNewLocalWhileAllIdleCleanUp()
|
|
{
|
|
dump("\n\nTESTING CASE AddNewLocalWhileAllIdleCleanUp\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcAddNewLocalWhileAllIdle;
|
|
|
|
window.navigator.removeIdleObserver(idleObserversArray[1]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[2]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[2]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[5]);
|
|
|
|
if (ShiftLocalTimerBackEnabled) {
|
|
ShiftLocalTimerBack();
|
|
}
|
|
else {
|
|
dump("Finished testing TestActiveToActiveNotificationCleanUp()\n");
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* ShiftLocalTimerBack()
|
|
* - add a new idle observer whose requested time is > current user idle time
|
|
* but < the current local timer that has been set.
|
|
* - the local timer will need to be reset to fire the new msg added.
|
|
* RESULT
|
|
* - should print all of them in order
|
|
*/
|
|
function ShiftLocalTimerBack()
|
|
{
|
|
dump("\n\nTESTING CASE ShiftLocalTimerBack()\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcShiftLocalTimerBack;
|
|
idleServiceObj.idleTime = 2100;
|
|
|
|
window.navigator.addIdleObserver(idleObserversArray[2]);
|
|
idleServiceObj.testIdleBackService(idleObserversArray[2], "idle");
|
|
}
|
|
|
|
function ShiftLocalTimerBackCleanUp()
|
|
{
|
|
dump("\n\nTESTING CASE ShiftLocalTimerBackCleanUp\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcShiftLocalTimerBack;
|
|
window.navigator.removeIdleObserver(idleObserversArray[2]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[4]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[5]);
|
|
dump("ShiftLocalTimerBackCleanUp() done clean up\n");
|
|
|
|
if (TestActiveToActiveNotificationEnabled) {
|
|
TestActiveNotification();
|
|
}
|
|
else {
|
|
dump("Finished testing AddNewLocalWhileAllIdle()\n");
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
function TestActiveNotification()
|
|
{
|
|
dump("\n\nTESTING CASE TestActiveNotification\n");
|
|
dump("===============================================\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcTestActiveToActiveNotification;
|
|
|
|
idleServiceObj.idleTime = 500;
|
|
window.navigator.addIdleObserver(idleObserversArray[1]);
|
|
window.navigator.addIdleObserver(idleObserversArray[5]);
|
|
idleServiceObj.idleTime = 1000;
|
|
idleServiceObj.testIdleBackService(idleObserversArray[1], "idle");
|
|
}
|
|
|
|
function TestActiveNotificationCleanUp()
|
|
{
|
|
dump("\n\nTESTING CASE TestActiveNotificationCleanUp\n");
|
|
dump("===============================================\n");
|
|
|
|
try {
|
|
componentMgr.unregisterFactory(idleServiceCID, idleServiceObj);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: ShiftLocalTimerBackCleanUp() Failed to unregister factory, mock idle service!\n");
|
|
}
|
|
|
|
try {
|
|
componentMgr.registerFactory(oldIdleServiceCID, "Re registering old idle service", idleServiceContractID, oldIdleServiceFactoryObj);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: ShiftLocalTimerBackCleanUp() Failed to register factory, original idle service!\n");
|
|
}
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
/*
|
|
* function AddRemoveIdleObserverWithInvalidTime()
|
|
*/
|
|
function AddRemoveIdleObserverWithInvalidTime()
|
|
{
|
|
dump("\n\nTESTING CASE AddRemoveIdleObserverWithInvalidTime()\n");
|
|
dump("==============\n");
|
|
|
|
ResetVars();
|
|
currTestCaseNum = tcAddRemoveIdleObserverWithInvalidTime;
|
|
|
|
//while idle
|
|
idleServiceObj.idleTime = 2100;
|
|
var rv = window.navigator.addIdleObserver(idleObserversArray[6]);
|
|
dump("rv: " + rv + "\n");
|
|
rv = window.navigator.removeIdleObserver(idleObserversArray[6]);
|
|
|
|
idleServiceObj.idleTime = 0;
|
|
window.navigator.addIdleObserver(idleObserversArray[6]);
|
|
window.navigator.removeIdleObserver(idleObserversArray[6]);
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
try {
|
|
var idleServiceCID = Components.ID("287075a6-f968-4516-8043-406c46f503b4");
|
|
var idleServiceContractID = "@mozilla.org/widget/idleservice;1";
|
|
var oldIdleService = Components.classes[idleServiceContractID].getService(Components.interfaces.nsIIdleService);
|
|
}
|
|
catch(ex) {
|
|
dump("test_bug715041.xul: 1) Failed to get old idle service.\n");
|
|
}
|
|
|
|
try {
|
|
// Registering new moch JS idle service
|
|
var componentMgr = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: Failed to query component registrar interface.\n");
|
|
}
|
|
|
|
try {
|
|
var oldIdleServiceFactoryObj = componentMgr.getClassObjectByContractID(idleServiceContractID, Components.interfaces.nsIFactory);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: Failed to get old idle service.\n");
|
|
}
|
|
|
|
try {
|
|
var oldIdleServiceCID = componentMgr.contractIDToCID(idleServiceContractID);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: Failed to convert ID to CID for old idle service.\n");
|
|
}
|
|
|
|
try {
|
|
componentMgr.unregisterFactory(oldIdleServiceCID, oldIdleServiceFactoryObj);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: Failed to unregister old idle service factory object!\n");
|
|
}
|
|
|
|
try {
|
|
componentMgr.registerFactory(idleServiceCID, "Test Simple Idle/Back Notifications", idleServiceContractID, idleServiceObj);
|
|
}
|
|
catch(err) {
|
|
dump("test_bug715041.xul: Failed to register mock idle service.\n");
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
SimpleTest.requestLongerTimeout(10);
|
|
|
|
AddOutOfOrderActiveEnabled = true;
|
|
AddOutOfOrderIdleEnabled = true;
|
|
AddNewLocalWhileAllIdleEnabled = true;
|
|
TestActiveToActiveNotificationEnabled = true;
|
|
AddShiftLocalEnabled = true;
|
|
AddIdleObserverWithInvalidTimeEnabled = false;
|
|
|
|
caseZero();
|
|
|
|
]]>
|
|
</script>
|
|
</window>
|
|
|