Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Bug 817039 - Merge latest gaia-ui-tests to gaia, r=lightsofapollo, a=…
Browse files Browse the repository at this point in the history
…test-only
  • Loading branch information
Jonathan Griffin committed Dec 3, 2012
1 parent a903f72 commit 0e30af2
Show file tree
Hide file tree
Showing 41 changed files with 2,228 additions and 126 deletions.
57 changes: 37 additions & 20 deletions tests/atoms/gaia_apps.js
Expand Up @@ -69,9 +69,7 @@ var GaiaApps = {
}
},

/**
* Returns the number of running apps.
*/
// Returns the number of running apps.
numRunningApps: function() {
let count = 0;
let runningApps = window.wrappedJSObject.WindowManager.getRunningApps();
Expand All @@ -81,12 +79,23 @@ var GaiaApps = {
return count;
},

/**
* Kills all running apps, except the homescreen.
*/
// Kills all running apps, except the homescreen.
killAll: function() {
let originsToClose = [];
let that = this;

let runningApps = window.wrappedJSObject.WindowManager.getRunningApps();
for (let origin in runningApps) {
if (origin.indexOf('homescreen') == -1) {
originsToClose.push(origin);
}
}

if (!originsToClose.length) {
marionetteScriptFinished(true);
return;
}

window.addEventListener('appterminated', function gt_onAppTerminated(evt) {
let index = originsToClose.indexOf(evt.detail.origin);
if (index > -1) {
Expand All @@ -103,20 +112,15 @@ var GaiaApps = {
);
}
});
let runningApps = window.wrappedJSObject.WindowManager.getRunningApps();
for (let origin in runningApps) {
if (origin.indexOf('homescreen') == -1) {
originsToClose.push(origin);
window.wrappedJSObject.WindowManager.kill(origin);
}
}

originsToClose.slice(0).forEach(function(origin) {
window.wrappedJSObject.WindowManager.kill(origin);
});
},

/**
* Launches app with the specified name (e.g., 'Calculator'); returns the
* app frame's id if successful, false if the app can't be found, or times
* out if the app frame can't be found after launching the app.
*/
// Launches app with the specified name (e.g., 'Calculator'); returns the
// app frame's id if successful, false if the app can't be found, or times
// out if the app frame can't be found after launching the app.
launchWithName: function(name) {
GaiaApps.locateWithName(name, function(app, appName, entryPoint) {
if (app) {
Expand Down Expand Up @@ -144,8 +148,10 @@ var GaiaApps = {
// wait until the new iframe sends the mozbrowserfirstpaint event
let frame = runningApps[origin].frame;
if (frame.dataset.unpainted) {
window.addEventListener('appopen', function firstpaint() {
window.removeEventListener('appopen', firstpaint);
window.addEventListener('mozbrowserfirstpaint',
function firstpaint() {
window.removeEventListener('mozbrowserfirstpaint',
firstpaint);
sendResponse(origin);
});
}
Expand All @@ -164,5 +170,16 @@ var GaiaApps = {
marionetteScriptFinished(false);
}
});
},

/**
* Uninstalls the app with the speciifed name.
*/
uninstallWithName: function(name) {
GaiaApps.locateWithName(name, function uninstall(app) {
app.uninstall();
marionetteScriptFinished(false);
});
}

};
161 changes: 161 additions & 0 deletions tests/atoms/gaia_data_layer.js
@@ -0,0 +1,161 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

var GaiaDataLayer = {

insertContact: function(cdata) {
contact = new mozContact();
contact.init(cdata);
var request = window.navigator.mozContacts.save(contact);

request.onerror = function onerror() {
console.log('Error saving contact', request.error.name);
}

request.onsuccess = function onsuccess() {
console.log('Success saving contact', request);
}
return request;
},

findAndRemoveContact: function(cdata) {
var options = {
filterBy: ['familyName'],
filterOp: 'contains',
filterValue: cdata['familyName']
};

contact = window.navigator.mozContacts.find(options);

contact.onerror = function onerror() {
console.log('Could not find contact', contact.error.name);
}

contact.onsuccess = function onsuccess() {
console.log('Success finding contact', contact);
if (contact.result.length > 0) {
return window.navigator.mozContacts.remove(contact.result[0]);
}
}
},

getSetting: function(aName) {
req = window.navigator.mozSettings.createLock().get(aName);
req.onsuccess = function() {
console.log('setting retrieved');
marionetteScriptFinished(req.result[aName]);
};
req.onerror = function() {
console.log('error getting setting', req.error.name);
}
},

setSetting: function(aName, aValue, aReturnOnSuccess) {
var returnOnSuccess = aReturnOnSuccess || aReturnOnSuccess === undefined;
var setting = {};
setting[aName] = aValue;
console.log('setting ' + aName + ' to ' + aValue);
req = window.navigator.mozSettings.createLock().set(setting);
req.onsuccess = function() {
console.log('setting changed');
if (returnOnSuccess) {
marionetteScriptFinished(true);
}
};
req.onerror = function() {
console.log('error changing setting', req.error.name);
marionetteScriptFinished(false);
}
},

connectToWiFi: function(aNetwork) {
var manager = window.navigator.mozWifiManager;

if (this.isWiFiConnected(aNetwork)) {
console.log('already connected to network');
marionetteScriptFinished(true);
}
else {
var req = manager.associate(aNetwork);

req.onsuccess = function() {
manager.onstatuschange = function(event) {
console.log('status: ' + manager.connection.status);
if (manager.connection.status === 'connected') {
manager.onstatuschange = null;
marionetteScriptFinished(true);
}
}
};

req.onerror = function() {
console.log('error connecting to network', req.error.name);
marionetteScriptFinished(false);
}
}
},

disableWiFi: function() {
var manager = window.navigator.mozWifiManager;
if (manager.enabled) {
manager.ondisabled = function() {
manager.ondisabled = null;
console.log('wifi disabled');
marionetteScriptFinished(true);
};
this.setSetting('wifi.enabled', false, false);
}
else {
console.log('wifi already disabled');
marionetteScriptFinished(true);
}
},

enableWiFi: function() {
var manager = window.navigator.mozWifiManager;
if (!manager.enabled) {
manager.onenabled = function() {
manager.onenabled = null;
console.log('wifi enabled');
marionetteScriptFinished(true);
};
this.setSetting('wifi.enabled', true, false);
}
else {
console.log('wifi already enabled');
marionetteScriptFinished(true);
}
},

forgetWiFi: function(aNetwork) {
var manager = window.navigator.mozWifiManager;
var req = manager.forget(aNetwork);

req.onsuccess = function() {
console.log('success forgetting network');
manager.onstatuschange = function(event) {
console.log('status: ' + manager.connection.status);
if (manager.connection.status === 'disconnected') {
manager.onstatuschange = null;
marionetteScriptFinished(true);
}
};
};

req.onerror = function() {
console.log('error forgetting network', req.error.name);
marionetteScriptFinished(false);
}
},

isWiFiConnected: function(aNetwork) {
var manager = window.navigator.mozWifiManager;
return manager.connection.status === 'connected' &&
manager.connection.network.ssid === aNetwork.ssid;
},

getMozTelephonyState: function() {
return window.navigator.mozTelephony.active.state;
}
};
58 changes: 58 additions & 0 deletions tests/atoms/gaia_lock_screen.js
@@ -0,0 +1,58 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

var GaiaLockScreen = {

unlock: function() {

let setlock = window.wrappedJSObject.SettingsListener.getSettingsLock();
let obj = {'screen.timeout': 0};
setlock.set(obj);

window.wrappedJSObject.ScreenManager.turnScreenOn();

waitFor(
function() {
window.wrappedJSObject.LockScreen.unlock();
waitFor(
function() {
finish(window.wrappedJSObject.LockScreen.locked);
},
function() {
return !window.wrappedJSObject.LockScreen.locked;
}
);
},
function() {
return !!window.wrappedJSObject.LockScreen;
}
);
},

lock: function() {

let setlock = window.wrappedJSObject.SettingsListener.getSettingsLock();
let obj = {'screen.timeout': 0};
setlock.set(obj);

window.wrappedJSObject.ScreenManager.turnScreenOn();

waitFor(
function() {
window.wrappedJSObject.LockScreen.lock();
waitFor(
function() {
finish(!window.wrappedJSObject.LockScreen.locked);
},
function() {
return window.wrappedJSObject.LockScreen.locked;
}
);
},
function() {
return !!window.wrappedJSObject.LockScreen;
}
);
}
};
21 changes: 0 additions & 21 deletions tests/atoms/gaia_unlock.js

This file was deleted.

11 changes: 7 additions & 4 deletions tests/js/app_integration.js
Expand Up @@ -188,13 +188,16 @@ var AppIntegration = (function() {
var device = app.device;

yield device.setScriptTimeout(15000);
yield IntegrationHelper.sendAtom(

yield IntegrationHelper.importScript(
device,
'/tests/atoms/gaia_unlock',
true,
next
'/tests/atoms/gaia_lock_screen.js',
MochaTask.nodeNext
);

yield device.executeAsyncScript(
'GaiaLockScreen.unlock();'
);

yield IntegrationHelper.importScript(
device,
Expand Down

0 comments on commit 0e30af2

Please sign in to comment.