mirror of
https://github.com/openstf/stf
synced 2025-10-04 18:29:17 +02:00
290 lines
6.2 KiB
JavaScript
290 lines
6.2 KiB
JavaScript
module.exports = function ControlServiceFactory(
|
|
$upload
|
|
, $http
|
|
, socket
|
|
, TransactionService
|
|
, $rootScope
|
|
, gettext
|
|
, KeycodesMapped
|
|
) {
|
|
var controlService = {
|
|
}
|
|
|
|
function ControlService(target, channel) {
|
|
function sendOneWay(action, data) {
|
|
socket.emit(action, channel, data)
|
|
}
|
|
|
|
function sendTwoWay(action, data) {
|
|
var tx = TransactionService.create(target)
|
|
socket.emit(action, channel, tx.channel, data)
|
|
return tx.promise
|
|
}
|
|
|
|
function keySender(type, fixedKey) {
|
|
return function(key) {
|
|
if (typeof key === 'string') {
|
|
sendOneWay(type, {
|
|
key: key
|
|
})
|
|
}
|
|
else {
|
|
var mapped = fixedKey || KeycodesMapped[key]
|
|
if (mapped) {
|
|
sendOneWay(type, {
|
|
key: mapped
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
this.gestureStart = function(seq) {
|
|
sendOneWay('input.gestureStart', {
|
|
seq: seq
|
|
})
|
|
}
|
|
|
|
this.gestureStop = function(seq) {
|
|
sendOneWay('input.gestureStop', {
|
|
seq: seq
|
|
})
|
|
}
|
|
|
|
this.touchDown = function(seq, contact, x, y, pressure) {
|
|
sendOneWay('input.touchDown', {
|
|
seq: seq
|
|
, contact: contact
|
|
, x: x
|
|
, y: y
|
|
, pressure: pressure
|
|
})
|
|
}
|
|
|
|
this.touchMove = function(seq, contact, x, y, pressure) {
|
|
sendOneWay('input.touchMove', {
|
|
seq: seq
|
|
, contact: contact
|
|
, x: x
|
|
, y: y
|
|
, pressure: pressure
|
|
})
|
|
}
|
|
|
|
this.touchUp = function(seq, contact) {
|
|
sendOneWay('input.touchUp', {
|
|
seq: seq
|
|
, contact: contact
|
|
})
|
|
}
|
|
|
|
this.touchCommit = function(seq) {
|
|
sendOneWay('input.touchCommit', {
|
|
seq: seq
|
|
})
|
|
}
|
|
|
|
this.touchReset = function(seq) {
|
|
sendOneWay('input.touchReset', {
|
|
seq: seq
|
|
})
|
|
}
|
|
|
|
this.keyDown = keySender('input.keyDown')
|
|
this.keyUp = keySender('input.keyUp')
|
|
this.keyPress = keySender('input.keyPress')
|
|
|
|
this.home = keySender('input.keyPress', 'home')
|
|
this.menu = keySender('input.keyPress', 'menu')
|
|
this.back = keySender('input.keyPress', 'back')
|
|
|
|
this.type = function(text) {
|
|
return sendOneWay('input.type', {
|
|
text: text
|
|
})
|
|
}
|
|
|
|
this.paste = function(text) {
|
|
return sendTwoWay('clipboard.paste', {
|
|
text: text
|
|
})
|
|
}
|
|
|
|
this.copy = function() {
|
|
return sendTwoWay('clipboard.copy')
|
|
}
|
|
|
|
//@TODO: Refactor this please
|
|
var that = this
|
|
this.getClipboardContent = function () {
|
|
that.copy().then(function (result) {
|
|
$rootScope.$apply(function () {
|
|
if (result.success) {
|
|
if (result.lastData) {
|
|
that.clipboardContent = result.lastData
|
|
} else {
|
|
that.clipboardContent = gettext('No clipboard data')
|
|
}
|
|
} else {
|
|
that.clipboardContent = gettext('Error while getting data')
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
this.shell = function(command) {
|
|
return sendTwoWay('shell.command', {
|
|
command: command
|
|
, timeout: 10000
|
|
})
|
|
}
|
|
|
|
this.identify = function() {
|
|
return sendTwoWay('device.identify')
|
|
}
|
|
|
|
this.install = function(options) {
|
|
return sendTwoWay('device.install', options)
|
|
}
|
|
|
|
this.uninstall = function(pkg) {
|
|
return sendTwoWay('device.uninstall', {
|
|
packageName: pkg
|
|
})
|
|
}
|
|
|
|
this.reboot = function() {
|
|
return sendTwoWay('device.reboot')
|
|
}
|
|
|
|
this.rotate = function(rotation) {
|
|
return sendOneWay('display.rotate', {
|
|
rotation: rotation
|
|
})
|
|
}
|
|
|
|
this.testForward = function(forward) {
|
|
return sendTwoWay('forward.test', {
|
|
targetHost: forward.targetHost
|
|
, targetPort: forward.targetPort
|
|
})
|
|
}
|
|
|
|
this.createForward = function(forward) {
|
|
return sendTwoWay('forward.create', {
|
|
id: forward.id
|
|
, devicePort: forward.devicePort
|
|
, targetHost: forward.targetHost
|
|
, targetPort: forward.targetPort
|
|
})
|
|
}
|
|
|
|
this.removeForward = function(forward) {
|
|
return sendTwoWay('forward.remove', {
|
|
id: forward.id
|
|
})
|
|
}
|
|
|
|
this.startLogcat = function(filters) {
|
|
return sendTwoWay('logcat.start', {
|
|
filters: filters
|
|
})
|
|
}
|
|
|
|
this.stopLogcat = function() {
|
|
return sendTwoWay('logcat.stop')
|
|
}
|
|
|
|
this.startRemoteConnect = function() {
|
|
return sendTwoWay('connect.start')
|
|
}
|
|
|
|
this.stopRemoteConnect = function() {
|
|
return sendTwoWay('connect.stop')
|
|
}
|
|
|
|
this.openBrowser = function(url, browser) {
|
|
return sendTwoWay('browser.open', {
|
|
url: url
|
|
, browser: browser ? browser.id : null
|
|
})
|
|
}
|
|
|
|
this.clearBrowser = function(browser) {
|
|
return sendTwoWay('browser.clear', {
|
|
browser: browser.id
|
|
})
|
|
}
|
|
|
|
this.openStore = function() {
|
|
return sendTwoWay('store.open')
|
|
}
|
|
|
|
this.screenshot = function() {
|
|
return sendTwoWay('screen.capture')
|
|
}
|
|
|
|
this.checkAccount = function(type, account) {
|
|
return sendTwoWay('account.check', {
|
|
type: type
|
|
, account: account
|
|
})
|
|
}
|
|
|
|
this.removeAccount = function(type, account) {
|
|
return sendTwoWay('account.remove', {
|
|
type: type
|
|
, account: account
|
|
})
|
|
}
|
|
|
|
this.addAccountMenu = function() {
|
|
return sendTwoWay('account.addmenu')
|
|
}
|
|
|
|
this.addAccount = function(user, password) {
|
|
return sendTwoWay('account.add', {
|
|
user: user
|
|
, password: password
|
|
})
|
|
}
|
|
|
|
this.getAccounts = function(type) {
|
|
return sendTwoWay('account.get', {
|
|
type: type
|
|
})
|
|
}
|
|
|
|
this.getSdStatus = function() {
|
|
return sendTwoWay('sd.status')
|
|
}
|
|
|
|
this.setRingerMode = function(mode) {
|
|
return sendTwoWay('ringer.set', {
|
|
mode: mode
|
|
})
|
|
}
|
|
|
|
this.getRingerMode = function() {
|
|
return sendTwoWay('ringer.get')
|
|
}
|
|
|
|
this.setWifiEnabled = function(enabled) {
|
|
return sendTwoWay('wifi.set', {
|
|
enabled: enabled
|
|
})
|
|
}
|
|
|
|
this.getWifiStatus = function() {
|
|
return sendTwoWay('wifi.get')
|
|
}
|
|
|
|
window.cc = this
|
|
}
|
|
|
|
controlService.create = function(target, channel) {
|
|
return new ControlService(target, channel)
|
|
}
|
|
|
|
return controlService
|
|
}
|