From 2530366283fb63107bfd6abbe80563814fafb149 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Wed, 30 Jun 2021 14:53:47 +0200
Subject: [PATCH 01/37] Fix formatting errors with eslint
---
gulpfile.js | 2 +-
index.js | 2 +-
lib/commands/action.js | 2 +-
lib/commands/element.js | 44 ++++++++++++++++++++---------------------
lib/commands/find.js | 10 +++++-----
lib/commands/general.js | 10 +++++-----
lib/driver.js | 4 ++--
lib/tizen-bootstrap.js | 10 +++++-----
lib/tizen-helpers.js | 6 +++---
9 files changed, 45 insertions(+), 45 deletions(-)
diff --git a/gulpfile.js b/gulpfile.js
index 96f8224..ea50a8b 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,4 +1,4 @@
-"use strict";
+'use strict';
const gulp = require('gulp');
const boilerplate = require('appium-gulp-plugins').boilerplate.use(gulp);
diff --git a/index.js b/index.js
index e04fa64..7c97105 100644
--- a/index.js
+++ b/index.js
@@ -16,7 +16,7 @@ const { helpers: tizenHelpers } = helpers;
const { commands: tizenCommands } = commands;
const { commonCapConstraints } = caps;
-const DEFAULT_HOST = "localhost";
+const DEFAULT_HOST = 'localhost';
const DEFAULT_PORT = 4723;
async function main () {
diff --git a/lib/commands/action.js b/lib/commands/action.js
index 1a3d42c..8d16e9a 100644
--- a/lib/commands/action.js
+++ b/lib/commands/action.js
@@ -60,7 +60,7 @@ commands.swipe = async function (startX, startY, endX, endY, duration) {
};
commands.doSwipe = async function (swipeOpts) {
- return await this.bootstrap.sendAction("element:drag", swipeOpts);
+ return await this.bootstrap.sendAction('element:drag', swipeOpts);
};
commands.pullFile = async function (remotePath) {
diff --git a/lib/commands/element.js b/lib/commands/element.js
index c7286f0..72bef8f 100644
--- a/lib/commands/element.js
+++ b/lib/commands/element.js
@@ -9,7 +9,7 @@ commands.getAttribute = async function (attribute, elementId) {
attribute,
elementId
};
- return await this.bootstrap.sendAction("element:getAttribute", params);
+ return await this.bootstrap.sendAction('element:getAttribute', params);
};
commands.setAttribute = async function (attribute, value, elementId) {
@@ -19,12 +19,12 @@ commands.setAttribute = async function (attribute, value, elementId) {
value,
elementId
};
- return await this.bootstrap.sendAction("element:setAttribute", params);
+ return await this.bootstrap.sendAction('element:setAttribute', params);
};
commands.getLocation = async function (elementId) {
elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction("element:location", { elementId });
+ return await this.bootstrap.sendAction('element:location', { elementId });
};
commands.getLocationInView = async function (elementId) {
@@ -37,17 +37,17 @@ commands.getLocationValueByElementId = async function (elementId) {
commands.getText = async function (elementId) {
elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction("element:getText", { elementId });
+ return await this.bootstrap.sendAction('element:getText', { elementId });
};
commands.elementEnabled = async function (elementId) {
elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction("element:enabled", { elementId });
+ return await this.bootstrap.sendAction('element:enabled', { elementId });
};
commands.elementDisplayed = async function (elementId) {
elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction("element:displayed", { elementId });
+ return await this.bootstrap.sendAction('element:displayed', { elementId });
};
commands.elementSelected = function () {
@@ -57,7 +57,7 @@ commands.elementSelected = function () {
commands.getSize = async function (elementId) {
elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction("element:size", { elementId });
+ return await this.bootstrap.sendAction('element:size', { elementId });
};
commands.setValue = async function (keys, elementId) {
@@ -68,7 +68,7 @@ commands.setValue = async function (keys, elementId) {
text,
replace: false
};
- return await this.bootstrap.sendAction("element:setText", params);
+ return await this.bootstrap.sendAction('element:setText', params);
};
commands.setValueImmediate = async function (keys, elementId) {
@@ -79,17 +79,17 @@ commands.setValueImmediate = async function (keys, elementId) {
text,
replace: false
};
- return await this.bootstrap.sendAction("element:setText", params);
+ return await this.bootstrap.sendAction('element:setText', params);
};
commands.clear = async function (elementId) {
elementId = this.getAutomationId(elementId);
let params = {
elementId,
- text: "",
+ text: '',
replace: true
};
- return await this.bootstrap.sendAction("element:setText", params);
+ return await this.bootstrap.sendAction('element:setText', params);
};
commands.replaceValue = async function (value, elementId) {
@@ -99,7 +99,7 @@ commands.replaceValue = async function (value, elementId) {
text: value,
replace: true
};
- return await this.bootstrap.sendAction("element:setText", params);
+ return await this.bootstrap.sendAction('element:setText', params);
};
commands.click = async function (elementId, x = 0, y = 0) {
@@ -113,7 +113,7 @@ commands.click = async function (elementId, x = 0, y = 0) {
if (elementId) {
elementId = this.getAutomationId(elementId);
} else {
- elementId = "";
+ elementId = '';
}
let params = {
@@ -121,14 +121,14 @@ commands.click = async function (elementId, x = 0, y = 0) {
x: _.toInteger(x),
y: _.toInteger(y)
};
- return await this.bootstrap.sendAction("element:click", params);
+ return await this.bootstrap.sendAction('element:click', params);
};
-commands.touchUp = async function (x = 1, y = 1, elementId = "") {
+commands.touchUp = async function (x = 1, y = 1, elementId = '') {
if (elementId && elementId !== this.sessionId) {
elementId = this.getAutomationId(elementId);
} else {
- elementId = "";
+ elementId = '';
}
let params = {
@@ -136,14 +136,14 @@ commands.touchUp = async function (x = 1, y = 1, elementId = "") {
x: _.toInteger(x),
y: _.toInteger(y)
};
- return await this.bootstrap.sendAction("element:touchUp", params);
+ return await this.bootstrap.sendAction('element:touchUp', params);
};
-commands.touchDown = async function (x, y, elementId = "") {
+commands.touchDown = async function (x, y, elementId = '') {
if (elementId && elementId !== this.sessionId) {
elementId = this.getAutomationId(elementId);
} else {
- elementId = "";
+ elementId = '';
}
let params = {
@@ -151,14 +151,14 @@ commands.touchDown = async function (x, y, elementId = "") {
x: _.toInteger(x),
y: _.toInteger(y)
};
- return await this.bootstrap.sendAction("element:touchDown", params);
+ return await this.bootstrap.sendAction('element:touchDown', params);
};
commands.touchMove = async function (xDown, yDown, xUp, yUp, steps = 10, elementId = null) {
if (elementId && elementId !== this.sessionId) {
elementId = this.getAutomationId(elementId);
} else {
- elementId = "";
+ elementId = '';
}
let params = {
@@ -169,7 +169,7 @@ commands.touchMove = async function (xDown, yDown, xUp, yUp, steps = 10, element
yUp: _.toInteger(yUp),
steps: _.toInteger(steps)
};
- return await this.bootstrap.sendAction("element:touchMove", params);
+ return await this.bootstrap.sendAction('element:touchMove', params);
};
commands.touchLongClick = async function (elementId, x, y, duration) {
diff --git a/lib/commands/find.js b/lib/commands/find.js
index 2abf990..397b896 100644
--- a/lib/commands/find.js
+++ b/lib/commands/find.js
@@ -7,13 +7,13 @@ let elements = {};
let index = 0;
helpers.doFindElementOrEls = async function (params) {
- let strategy = "automationId";
+ let strategy = 'automationId';
- if (params.strategy === "name") {
+ if (params.strategy === 'name') {
strategy = params.strategy;
}
- let param = { "elementId": params.selector, strategy };
+ let param = { 'elementId': params.selector, strategy };
let result = await this.bootstrap.sendAction('find', param);
if (!_.isEmpty(result)) {
@@ -35,7 +35,7 @@ helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
this.validateLocatorStrategy(strategy);
if (!selector) {
- throw new Error("Must provide a selector when finding elements");
+ throw new Error('Must provide a selector when finding elements');
}
let params = {
@@ -82,7 +82,7 @@ helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
helpers.getAutomationId = function (elementId) {
let result = elements[elementId];
if (!result) {
- result = "";
+ result = '';
}
return result;
};
diff --git a/lib/commands/general.js b/lib/commands/general.js
index ec42a3a..373ea5d 100644
--- a/lib/commands/general.js
+++ b/lib/commands/general.js
@@ -16,21 +16,21 @@ commands.getDeviceTime = async function () {
};
commands.pressKeyCode = async function (key) {
- return await this.bootstrap.sendAction("pressKey", { key });
+ return await this.bootstrap.sendAction('pressKey', { key });
};
commands.releaseKeyCode = async function (key) {
- return await this.bootstrap.sendAction("releaseKey", { key });
+ return await this.bootstrap.sendAction('releaseKey', { key });
};
commands.keys = async function (keys) {
let text = _.isArray(keys) ? keys.join('') : keys;
let params = {
- elementId: "",
+ elementId: '',
text,
replace: false
};
- return await this.bootstrap.sendAction("element:setText", params);
+ return await this.bootstrap.sendAction('element:setText', params);
};
commands.sendKey = async function (key) {
@@ -42,7 +42,7 @@ commands.pressHardwareKey = async function (key) {
};
commands.back = async function () {
- return await this.sendKey("XF86Back");
+ return await this.sendKey('XF86Back');
};
commands.installApp = async function (tpk) {
diff --git a/lib/driver.js b/lib/driver.js
index 7fce111..3beee00 100644
--- a/lib/driver.js
+++ b/lib/driver.js
@@ -117,14 +117,14 @@ class TizenDriver extends BaseDriver {
}
async checkPackagePresent () {
- log.debug("Checking whether package is present on the device");
+ log.debug('Checking whether package is present on the device');
if (!(await this.sdb.shell([`app_launcher --list | grep ${this.opts.appPackage}`]))) {
log.errorAndThrow(`Could not find package ${this.opts.appPackage} on the device`);
}
}
async deleteSession () {
- log.debug("Shutting down Tizen driver");
+ log.debug('Shutting down Tizen driver');
await super.deleteSession();
if (this.bootstrap) {
await this.sdb.forceStop(this.opts.appPackage);
diff --git a/lib/tizen-bootstrap.js b/lib/tizen-bootstrap.js
index 93b1de8..5c9c46c 100644
--- a/lib/tizen-bootstrap.js
+++ b/lib/tizen-bootstrap.js
@@ -52,11 +52,11 @@ class TizenBootstrap {
}
});
this.socketClient.once('connect', () => {
- log.info("Tizen bootstrap socket is now connected");
+ log.info('Tizen bootstrap socket is now connected');
resolve();
});
} else {
- log.info("SocketClient already Created");
+ log.info('SocketClient already Created');
resolve();
}
} catch (err) {
@@ -110,7 +110,7 @@ class TizenBootstrap {
}
reject(errorFromCode(streamData.status));
} catch (ign) {
- log.debug("Stream still not complete, waiting");
+ log.debug('Stream still not complete, waiting');
streamData += data;
}
});
@@ -119,13 +119,13 @@ class TizenBootstrap {
this.socketClient.destroy();
this.socketClient = null;
this.isRestart = true;
- reject(errorFromCode(-1, "No response from Server"));
+ reject(errorFromCode(-1, 'No response from Server'));
});
this.socketClient.on('end', () => {
this.socketClient.destroy();
this.socketClient = null;
this.isRestart = true;
- reject(errorFromCode(-1, "Socket ended by Server"));
+ reject(errorFromCode(-1, 'Socket ended by Server'));
});
} catch (err) {
reject(errorFromCode(-1, err));
diff --git a/lib/tizen-helpers.js b/lib/tizen-helpers.js
index 3466cc1..ec05d9a 100644
--- a/lib/tizen-helpers.js
+++ b/lib/tizen-helpers.js
@@ -18,14 +18,14 @@ helpers.getDeviceInfoFromCaps = async function (opts = {}) {
let emPort = null;
let status = false;
- if (udid.includes("192.168.250.250") || udid.includes("192.168.1.11")) {
+ if (udid.includes('192.168.250.250') || udid.includes('192.168.1.11')) {
let result = await sdb.ConnectDevice(udid);
if (result) {
- udid = udid + ":26101";
+ udid = udid + ':26101';
}
}
- logger.info("Retrieving device list");
+ logger.info('Retrieving device list');
let devices = await sdb.getDevicesWithRetry();
if (devices.length > 1) {
From b8376ba079ca5aa80c4ad5116b3eebbc22bbe9c2 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Fri, 2 Jul 2021 09:01:40 +0200
Subject: [PATCH 02/37] Add Aurum protocol definition and interfaces to the
build
---
gulpfile.js | 20 +-
lib/aurum_backend/aurum.proto | 412 +
lib/aurum_backend/aurum_grpc_pb.js | 765 ++
lib/aurum_backend/aurum_pb.js | 10714 +++++++++++++++++++++++++++
lib/aurum_backend/gen.sh | 15 +
test/driver-specs.js | 1 -
6 files changed, 11923 insertions(+), 4 deletions(-)
create mode 100644 lib/aurum_backend/aurum.proto
create mode 100644 lib/aurum_backend/aurum_grpc_pb.js
create mode 100644 lib/aurum_backend/aurum_pb.js
create mode 100755 lib/aurum_backend/gen.sh
diff --git a/gulpfile.js b/gulpfile.js
index ea50a8b..1537f36 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,9 +1,23 @@
'use strict';
const gulp = require('gulp');
-const boilerplate = require('appium-gulp-plugins').boilerplate.use(gulp);
+const boilerplate = require('appium-gulp-plugins').boilerplate;
+const fs = require('fs');
-boilerplate({
+/*
+ * aurum.proto is not a JS file, so gulp with "boilerplate" config
+ * does not copy it to the build directory by default.
+ * Thus we copy it manually here.
+ */
+(function copyAurumProtoTask () {
+ const buildDir = boilerplate.DEFAULTS.transpile ? boilerplate.DEFAULTS.transpileOut : '.';
+ const aurumProtoDestDir = `${__dirname}/${buildDir}/lib/aurum_backend`;
+ fs.mkdirSync(aurumProtoDestDir, {recursive: true});
+ fs.copyFileSync(__dirname + '/lib/aurum_backend/aurum.proto', `${aurumProtoDestDir}/aurum.proto`);
+})();
+
+boilerplate.use(gulp)({
build: 'appium-tizen-driver',
- testTimeout: 40000
+ testTimeout: 100000,
+ test: {files: ['${testDir}/**/*.js']}
});
diff --git a/lib/aurum_backend/aurum.proto b/lib/aurum_backend/aurum.proto
new file mode 100644
index 0000000..cbbd6c6
--- /dev/null
+++ b/lib/aurum_backend/aurum.proto
@@ -0,0 +1,412 @@
+syntax = "proto3";
+package aurum;
+
+// This file was copied from https://github.sec.samsung.net/tizen/aurum
+// Go to the repo for the latest version of this file
+
+/**
+ * @page protocol Protocol
+ * Here is a page with some descriptions about protocol explained
+ */
+service Bootstrap {
+ rpc sync(ReqEmpty) returns (RspEmpty) {}
+ rpc killServer(ReqEmpty) returns (RspEmpty) {}
+ rpc findElement(ReqFindElement) returns (RspFindElement) {}
+ rpc getValue(ReqGetValue) returns (RspGetValue) {}
+ rpc setValue(ReqSetValue) returns (RspSetValue) {}
+ rpc getSize(ReqGetSize) returns (RspGetSize) {}
+ rpc clear(ReqClear) returns (RspClear) {}
+ rpc getAttribute(ReqGetAttribute) returns (RspGetAttribute) {}
+ rpc click(ReqClick) returns (RspClick) {}
+ rpc longClick(ReqClick) returns (RspClick) {}
+ rpc flick(ReqFlick) returns (RspFlick) {}
+ rpc touchDown(ReqTouchDown) returns (RspTouchDown) {}
+ rpc touchMove(ReqTouchMove) returns (RspTouchMove) {}
+ rpc touchUp(ReqTouchUp) returns (RspTouchUp) {}
+ rpc installApp(stream ReqInstallApp) returns (RspInstallApp) {}
+ rpc removeApp(ReqRemoveApp) returns (RspRemoveApp) {}
+ rpc getAppInfo(ReqGetAppInfo) returns (RspGetAppInfo) {}
+ rpc launchApp(ReqLaunchApp) returns (RspLaunchApp) {}
+ rpc closeApp(ReqCloseApp) returns (RspCloseApp) {}
+ rpc getDeviceTime(ReqGetDeviceTime) returns (RspGetDeviceTime) {}
+ rpc getLocation(ReqGetLocation) returns (RspGetLocation) {}
+ rpc sendKey(ReqKey) returns (RspKey) {}
+ rpc takeScreenshot(ReqTakeScreenshot) returns (stream RspTakeScreenshot) {}
+ rpc dumpObjectTree(ReqDumpObjectTree) returns (RspDumpObjectTree) {}
+}
+
+// ------------------------------------ //
+
+enum RspStatus {
+ OK = 0;
+ NA = 1;
+ ERROR = 2;
+}
+
+enum ParamType {
+ STRING = 0;
+ INT = 1;
+ DOUBLE = 2;
+ BOOL = 3;
+}
+
+message Element {
+ string elementId = 1;
+ repeated Element child = 2;
+
+ Rect geometry = 3;
+
+ string widget_type = 4;
+ string widget_style = 5;
+
+ string text = 6;
+ string id = 7;
+ string automationId = 8;
+ string package = 9;
+ string role = 10;
+
+ bool isChecked = 11;
+ bool isCheckable = 12;
+ bool isClickable = 13;
+ bool isEnabled = 14;
+ bool isFocused = 15;
+ bool isFocusable = 16;
+ bool isScrollable = 17;
+ bool isSelected = 18;
+ bool isShowing = 19;
+ bool isActive = 20;
+ bool isVisible = 21;
+ bool isSelectable = 22;
+}
+
+message Point {
+ int32 x = 1;
+ int32 y = 2;
+}
+
+message Rect {
+ int32 x = 1;
+ int32 y = 2;
+ int32 width = 3;
+ int32 height = 4;
+}
+
+// ------------------------------------ //
+
+message ReqFindElement {
+ oneof _elementid {
+ string elementId = 1;
+ }
+
+ oneof _automationid {
+ string automationId = 2;
+ }
+
+ oneof _textfield {
+ string textField = 3;
+ }
+
+ oneof _widgettype {
+ string widgetType = 4;
+ }
+
+ oneof _widgetstyle {
+ string widgetStyle = 5;
+ }
+
+ oneof _ischecked {
+ bool isChecked = 6;
+ }
+
+ oneof _ischeckable {
+ bool isCheckable= 7;
+ }
+
+ oneof _isclickable {
+ bool isClickable = 8;
+ }
+
+ oneof _isenabled {
+ bool isEnabled = 9;
+ }
+
+ oneof _isfocused {
+ bool isFocused = 10;
+ }
+
+ oneof _isfocusable {
+ bool isFocusable = 11;
+ }
+
+ oneof _isscrollable {
+ bool isScrollable = 12;
+ }
+
+ oneof _isselected {
+ bool isSelected = 13;
+ }
+
+ oneof _isshowing {
+ bool isShowing = 14;
+ }
+
+ oneof _isactive {
+ bool isActive = 15;
+ }
+ oneof _mindepth {
+ int32 minDepth = 16;
+ }
+
+ oneof _maxdepth {
+ int32 maxDepth = 17;
+ }
+
+ repeated ReqFindElement children = 18;
+}
+message RspFindElement {
+ RspStatus status = 1;
+ repeated Element elements = 2;
+}
+
+// ------------------------------------ //
+
+message ReqGetValue {
+ string elementId = 1;
+ // TODO : text, widgetstyle, widgettype, automationid
+}
+message RspGetValue {
+ RspStatus status = 1;
+ ParamType type = 2;
+ oneof params {
+ string stringValue = 3;
+ int32 intValue = 4;
+ double doubleValue = 5;
+ bool boolValue = 6;
+ }
+}
+
+message ReqSetValue {
+ string elementId = 1;
+ ParamType type = 2;
+ oneof params {
+ string stringValue = 3;
+ int32 intValue = 4;
+ double doubleValue = 5;
+ bool boolValue = 6;
+ }
+}
+message RspSetValue {
+ RspStatus status = 1;
+}
+
+message ReqGetSize{
+ string elementId = 1;
+}
+message RspGetSize{
+ RspStatus status = 1;
+ Rect size = 2;
+}
+
+message ReqClear{
+ string elementId = 1;
+}
+message RspClear{
+ RspStatus status = 1;
+}
+
+message ReqGetAttribute {
+ enum RequestType {
+ VISIBLE = 0;
+ FOCUSABLE = 1;
+ FOCUSED = 2;
+ ENABLED = 3;
+ CLICKABLE = 4;
+ SCROLLABLE = 5;
+ CHECKABLE = 6;
+ CHECKED = 7;
+ SELECTED = 8;
+ SELECTABLE = 9;
+ SHOWING = 10;
+ ACTIVE = 11;
+ }
+ string elementId = 1;
+ RequestType attribute = 2;
+}
+message RspGetAttribute {
+ RspStatus status = 1;
+ ParamType type = 2;
+ oneof params {
+ string stringValue = 3;
+ int32 intValue = 4;
+ double doubleValue = 5;
+ bool boolValue = 6;
+ }
+}
+
+// ------------------------------------ //
+
+message ReqClick{
+ enum RequestType {
+ ELEMENTID = 0;
+ COORD = 1;
+ ATSPI = 2;
+ }
+ RequestType type = 1;
+ oneof params {
+ string elementId = 2;
+ Point coordination = 3;
+ }
+}
+message RspClick{
+ RspStatus status = 1;
+}
+
+message ReqFlick{
+ Point startPoint = 1;
+ Point endPoint = 2;
+ int32 durationMs = 3;
+}
+message RspFlick{
+ RspStatus status = 1;
+}
+
+message ReqTouchDown{
+ Point coordination = 1;
+}
+message RspTouchDown{
+ RspStatus status = 1;
+ int32 seqId = 2;
+}
+
+message ReqTouchMove{
+ int32 seqId = 1;
+ Point coordination = 2;
+}
+message RspTouchMove{
+ RspStatus status = 1;
+}
+
+message ReqTouchUp{
+ int32 seqId = 1;
+ Point coordination = 2;
+}
+message RspTouchUp{
+ RspStatus status = 1;
+}
+
+// ------------------------------------ //
+
+message ReqInstallApp{
+ bytes package = 1;
+}
+message RspInstallApp{
+ RspStatus status = 1;
+}
+
+message ReqRemoveApp{
+ string packageName = 1;
+}
+message RspRemoveApp{
+ RspStatus status = 1;
+}
+
+message ReqGetAppInfo{
+ string packageName = 1;
+}
+message RspGetAppInfo {
+ RspStatus status = 1;
+ bool isInstalled = 2;
+ bool isRunning = 3;
+ bool isFocused = 4;
+}
+
+message ReqLaunchApp{
+ string packageName = 1;
+}
+message RspLaunchApp{
+ RspStatus status = 1;
+}
+
+message ReqCloseApp{
+ string packageName = 1;
+}
+message RspCloseApp{
+ RspStatus status = 1;
+}
+
+// ------------------------------------ //
+
+message ReqGetDeviceTime{
+ enum TimeType {
+ WALLCLOCK= 0;
+ SYSTEM = 1;
+ }
+ TimeType type = 1;
+}
+message RspGetDeviceTime{
+ RspStatus status = 1;
+ int64 timestampUTC = 2;
+ string localeDatetime = 3;
+}
+
+message ReqGetLocation{
+}
+message RspGetLocation{
+ RspStatus status = 1;
+ double alt = 2;
+ double lat = 3;
+}
+
+message ReqKey{
+ enum KeyType{
+ BACK = 0;
+ MENU = 1;
+ HOME = 2;
+ VOLUP = 3;
+ VOLDOWN = 4;
+ POWER = 5;
+ //KEY = 6;
+ XF86 = 7;
+ WHEELUP = 8;
+ WHEELDOWN = 9;
+ }
+ enum KeyActionType{
+ STROKE = 0;
+ LONG_STROKE = 1;
+ PRESS = 2;
+ RELEASE = 3;
+ }
+ KeyType type = 1;
+ KeyActionType actionType = 2;
+ //oneof keys {
+ //uint32 keyCode = 3;
+ string XF86keyCode = 4;
+ //}
+}
+message RspKey{
+ RspStatus status = 1;
+}
+
+message ReqTakeScreenshot{
+}
+message RspTakeScreenshot{
+ bytes image = 1;
+}
+
+// ------------------------------------ //
+
+message ReqEmpty {
+}
+message RspEmpty {
+}
+
+// ------------------------------------ //
+
+message ReqDumpObjectTree {
+ string elementId = 1;
+}
+
+message RspDumpObjectTree {
+ RspStatus status = 1;
+ repeated Element roots = 2;
+}
\ No newline at end of file
diff --git a/lib/aurum_backend/aurum_grpc_pb.js b/lib/aurum_backend/aurum_grpc_pb.js
new file mode 100644
index 0000000..77d4fc8
--- /dev/null
+++ b/lib/aurum_backend/aurum_grpc_pb.js
@@ -0,0 +1,765 @@
+// GENERATED CODE -- DO NOT EDIT!
+
+'use strict';
+var grpc = require('grpc');
+var aurum_pb = require('./aurum_pb.js');
+
+function serialize_aurum_ReqClear(arg) {
+ if (!(arg instanceof aurum_pb.ReqClear)) {
+ throw new Error('Expected argument of type aurum.ReqClear');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqClear(buffer_arg) {
+ return aurum_pb.ReqClear.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqClick(arg) {
+ if (!(arg instanceof aurum_pb.ReqClick)) {
+ throw new Error('Expected argument of type aurum.ReqClick');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqClick(buffer_arg) {
+ return aurum_pb.ReqClick.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqCloseApp(arg) {
+ if (!(arg instanceof aurum_pb.ReqCloseApp)) {
+ throw new Error('Expected argument of type aurum.ReqCloseApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqCloseApp(buffer_arg) {
+ return aurum_pb.ReqCloseApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqDumpObjectTree(arg) {
+ if (!(arg instanceof aurum_pb.ReqDumpObjectTree)) {
+ throw new Error('Expected argument of type aurum.ReqDumpObjectTree');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqDumpObjectTree(buffer_arg) {
+ return aurum_pb.ReqDumpObjectTree.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqEmpty(arg) {
+ if (!(arg instanceof aurum_pb.ReqEmpty)) {
+ throw new Error('Expected argument of type aurum.ReqEmpty');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqEmpty(buffer_arg) {
+ return aurum_pb.ReqEmpty.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqFindElement(arg) {
+ if (!(arg instanceof aurum_pb.ReqFindElement)) {
+ throw new Error('Expected argument of type aurum.ReqFindElement');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqFindElement(buffer_arg) {
+ return aurum_pb.ReqFindElement.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqFlick(arg) {
+ if (!(arg instanceof aurum_pb.ReqFlick)) {
+ throw new Error('Expected argument of type aurum.ReqFlick');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqFlick(buffer_arg) {
+ return aurum_pb.ReqFlick.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqGetAppInfo(arg) {
+ if (!(arg instanceof aurum_pb.ReqGetAppInfo)) {
+ throw new Error('Expected argument of type aurum.ReqGetAppInfo');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqGetAppInfo(buffer_arg) {
+ return aurum_pb.ReqGetAppInfo.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqGetAttribute(arg) {
+ if (!(arg instanceof aurum_pb.ReqGetAttribute)) {
+ throw new Error('Expected argument of type aurum.ReqGetAttribute');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqGetAttribute(buffer_arg) {
+ return aurum_pb.ReqGetAttribute.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqGetDeviceTime(arg) {
+ if (!(arg instanceof aurum_pb.ReqGetDeviceTime)) {
+ throw new Error('Expected argument of type aurum.ReqGetDeviceTime');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqGetDeviceTime(buffer_arg) {
+ return aurum_pb.ReqGetDeviceTime.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqGetLocation(arg) {
+ if (!(arg instanceof aurum_pb.ReqGetLocation)) {
+ throw new Error('Expected argument of type aurum.ReqGetLocation');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqGetLocation(buffer_arg) {
+ return aurum_pb.ReqGetLocation.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqGetSize(arg) {
+ if (!(arg instanceof aurum_pb.ReqGetSize)) {
+ throw new Error('Expected argument of type aurum.ReqGetSize');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqGetSize(buffer_arg) {
+ return aurum_pb.ReqGetSize.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqGetValue(arg) {
+ if (!(arg instanceof aurum_pb.ReqGetValue)) {
+ throw new Error('Expected argument of type aurum.ReqGetValue');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqGetValue(buffer_arg) {
+ return aurum_pb.ReqGetValue.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqInstallApp(arg) {
+ if (!(arg instanceof aurum_pb.ReqInstallApp)) {
+ throw new Error('Expected argument of type aurum.ReqInstallApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqInstallApp(buffer_arg) {
+ return aurum_pb.ReqInstallApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqKey(arg) {
+ if (!(arg instanceof aurum_pb.ReqKey)) {
+ throw new Error('Expected argument of type aurum.ReqKey');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqKey(buffer_arg) {
+ return aurum_pb.ReqKey.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqLaunchApp(arg) {
+ if (!(arg instanceof aurum_pb.ReqLaunchApp)) {
+ throw new Error('Expected argument of type aurum.ReqLaunchApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqLaunchApp(buffer_arg) {
+ return aurum_pb.ReqLaunchApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqRemoveApp(arg) {
+ if (!(arg instanceof aurum_pb.ReqRemoveApp)) {
+ throw new Error('Expected argument of type aurum.ReqRemoveApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqRemoveApp(buffer_arg) {
+ return aurum_pb.ReqRemoveApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqSetValue(arg) {
+ if (!(arg instanceof aurum_pb.ReqSetValue)) {
+ throw new Error('Expected argument of type aurum.ReqSetValue');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqSetValue(buffer_arg) {
+ return aurum_pb.ReqSetValue.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqTakeScreenshot(arg) {
+ if (!(arg instanceof aurum_pb.ReqTakeScreenshot)) {
+ throw new Error('Expected argument of type aurum.ReqTakeScreenshot');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqTakeScreenshot(buffer_arg) {
+ return aurum_pb.ReqTakeScreenshot.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqTouchDown(arg) {
+ if (!(arg instanceof aurum_pb.ReqTouchDown)) {
+ throw new Error('Expected argument of type aurum.ReqTouchDown');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqTouchDown(buffer_arg) {
+ return aurum_pb.ReqTouchDown.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqTouchMove(arg) {
+ if (!(arg instanceof aurum_pb.ReqTouchMove)) {
+ throw new Error('Expected argument of type aurum.ReqTouchMove');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqTouchMove(buffer_arg) {
+ return aurum_pb.ReqTouchMove.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_ReqTouchUp(arg) {
+ if (!(arg instanceof aurum_pb.ReqTouchUp)) {
+ throw new Error('Expected argument of type aurum.ReqTouchUp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_ReqTouchUp(buffer_arg) {
+ return aurum_pb.ReqTouchUp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspClear(arg) {
+ if (!(arg instanceof aurum_pb.RspClear)) {
+ throw new Error('Expected argument of type aurum.RspClear');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspClear(buffer_arg) {
+ return aurum_pb.RspClear.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspClick(arg) {
+ if (!(arg instanceof aurum_pb.RspClick)) {
+ throw new Error('Expected argument of type aurum.RspClick');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspClick(buffer_arg) {
+ return aurum_pb.RspClick.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspCloseApp(arg) {
+ if (!(arg instanceof aurum_pb.RspCloseApp)) {
+ throw new Error('Expected argument of type aurum.RspCloseApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspCloseApp(buffer_arg) {
+ return aurum_pb.RspCloseApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspDumpObjectTree(arg) {
+ if (!(arg instanceof aurum_pb.RspDumpObjectTree)) {
+ throw new Error('Expected argument of type aurum.RspDumpObjectTree');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspDumpObjectTree(buffer_arg) {
+ return aurum_pb.RspDumpObjectTree.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspEmpty(arg) {
+ if (!(arg instanceof aurum_pb.RspEmpty)) {
+ throw new Error('Expected argument of type aurum.RspEmpty');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspEmpty(buffer_arg) {
+ return aurum_pb.RspEmpty.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspFindElement(arg) {
+ if (!(arg instanceof aurum_pb.RspFindElement)) {
+ throw new Error('Expected argument of type aurum.RspFindElement');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspFindElement(buffer_arg) {
+ return aurum_pb.RspFindElement.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspFlick(arg) {
+ if (!(arg instanceof aurum_pb.RspFlick)) {
+ throw new Error('Expected argument of type aurum.RspFlick');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspFlick(buffer_arg) {
+ return aurum_pb.RspFlick.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspGetAppInfo(arg) {
+ if (!(arg instanceof aurum_pb.RspGetAppInfo)) {
+ throw new Error('Expected argument of type aurum.RspGetAppInfo');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspGetAppInfo(buffer_arg) {
+ return aurum_pb.RspGetAppInfo.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspGetAttribute(arg) {
+ if (!(arg instanceof aurum_pb.RspGetAttribute)) {
+ throw new Error('Expected argument of type aurum.RspGetAttribute');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspGetAttribute(buffer_arg) {
+ return aurum_pb.RspGetAttribute.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspGetDeviceTime(arg) {
+ if (!(arg instanceof aurum_pb.RspGetDeviceTime)) {
+ throw new Error('Expected argument of type aurum.RspGetDeviceTime');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspGetDeviceTime(buffer_arg) {
+ return aurum_pb.RspGetDeviceTime.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspGetLocation(arg) {
+ if (!(arg instanceof aurum_pb.RspGetLocation)) {
+ throw new Error('Expected argument of type aurum.RspGetLocation');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspGetLocation(buffer_arg) {
+ return aurum_pb.RspGetLocation.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspGetSize(arg) {
+ if (!(arg instanceof aurum_pb.RspGetSize)) {
+ throw new Error('Expected argument of type aurum.RspGetSize');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspGetSize(buffer_arg) {
+ return aurum_pb.RspGetSize.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspGetValue(arg) {
+ if (!(arg instanceof aurum_pb.RspGetValue)) {
+ throw new Error('Expected argument of type aurum.RspGetValue');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspGetValue(buffer_arg) {
+ return aurum_pb.RspGetValue.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspInstallApp(arg) {
+ if (!(arg instanceof aurum_pb.RspInstallApp)) {
+ throw new Error('Expected argument of type aurum.RspInstallApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspInstallApp(buffer_arg) {
+ return aurum_pb.RspInstallApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspKey(arg) {
+ if (!(arg instanceof aurum_pb.RspKey)) {
+ throw new Error('Expected argument of type aurum.RspKey');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspKey(buffer_arg) {
+ return aurum_pb.RspKey.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspLaunchApp(arg) {
+ if (!(arg instanceof aurum_pb.RspLaunchApp)) {
+ throw new Error('Expected argument of type aurum.RspLaunchApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspLaunchApp(buffer_arg) {
+ return aurum_pb.RspLaunchApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspRemoveApp(arg) {
+ if (!(arg instanceof aurum_pb.RspRemoveApp)) {
+ throw new Error('Expected argument of type aurum.RspRemoveApp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspRemoveApp(buffer_arg) {
+ return aurum_pb.RspRemoveApp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspSetValue(arg) {
+ if (!(arg instanceof aurum_pb.RspSetValue)) {
+ throw new Error('Expected argument of type aurum.RspSetValue');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspSetValue(buffer_arg) {
+ return aurum_pb.RspSetValue.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspTakeScreenshot(arg) {
+ if (!(arg instanceof aurum_pb.RspTakeScreenshot)) {
+ throw new Error('Expected argument of type aurum.RspTakeScreenshot');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspTakeScreenshot(buffer_arg) {
+ return aurum_pb.RspTakeScreenshot.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspTouchDown(arg) {
+ if (!(arg instanceof aurum_pb.RspTouchDown)) {
+ throw new Error('Expected argument of type aurum.RspTouchDown');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspTouchDown(buffer_arg) {
+ return aurum_pb.RspTouchDown.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspTouchMove(arg) {
+ if (!(arg instanceof aurum_pb.RspTouchMove)) {
+ throw new Error('Expected argument of type aurum.RspTouchMove');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspTouchMove(buffer_arg) {
+ return aurum_pb.RspTouchMove.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_aurum_RspTouchUp(arg) {
+ if (!(arg instanceof aurum_pb.RspTouchUp)) {
+ throw new Error('Expected argument of type aurum.RspTouchUp');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_aurum_RspTouchUp(buffer_arg) {
+ return aurum_pb.RspTouchUp.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+
+// This file was copied from https://github.sec.samsung.net/tizen/aurum
+// Go to the repo for the latest version of this file
+//
+// *
+// @page protocol Protocol
+// Here is a page with some descriptions about protocol explained
+var BootstrapService = exports.BootstrapService = {
+ sync: {
+ path: '/aurum.Bootstrap/sync',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqEmpty,
+ responseType: aurum_pb.RspEmpty,
+ requestSerialize: serialize_aurum_ReqEmpty,
+ requestDeserialize: deserialize_aurum_ReqEmpty,
+ responseSerialize: serialize_aurum_RspEmpty,
+ responseDeserialize: deserialize_aurum_RspEmpty,
+ },
+ killServer: {
+ path: '/aurum.Bootstrap/killServer',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqEmpty,
+ responseType: aurum_pb.RspEmpty,
+ requestSerialize: serialize_aurum_ReqEmpty,
+ requestDeserialize: deserialize_aurum_ReqEmpty,
+ responseSerialize: serialize_aurum_RspEmpty,
+ responseDeserialize: deserialize_aurum_RspEmpty,
+ },
+ findElement: {
+ path: '/aurum.Bootstrap/findElement',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqFindElement,
+ responseType: aurum_pb.RspFindElement,
+ requestSerialize: serialize_aurum_ReqFindElement,
+ requestDeserialize: deserialize_aurum_ReqFindElement,
+ responseSerialize: serialize_aurum_RspFindElement,
+ responseDeserialize: deserialize_aurum_RspFindElement,
+ },
+ getValue: {
+ path: '/aurum.Bootstrap/getValue',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqGetValue,
+ responseType: aurum_pb.RspGetValue,
+ requestSerialize: serialize_aurum_ReqGetValue,
+ requestDeserialize: deserialize_aurum_ReqGetValue,
+ responseSerialize: serialize_aurum_RspGetValue,
+ responseDeserialize: deserialize_aurum_RspGetValue,
+ },
+ setValue: {
+ path: '/aurum.Bootstrap/setValue',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqSetValue,
+ responseType: aurum_pb.RspSetValue,
+ requestSerialize: serialize_aurum_ReqSetValue,
+ requestDeserialize: deserialize_aurum_ReqSetValue,
+ responseSerialize: serialize_aurum_RspSetValue,
+ responseDeserialize: deserialize_aurum_RspSetValue,
+ },
+ getSize: {
+ path: '/aurum.Bootstrap/getSize',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqGetSize,
+ responseType: aurum_pb.RspGetSize,
+ requestSerialize: serialize_aurum_ReqGetSize,
+ requestDeserialize: deserialize_aurum_ReqGetSize,
+ responseSerialize: serialize_aurum_RspGetSize,
+ responseDeserialize: deserialize_aurum_RspGetSize,
+ },
+ clear: {
+ path: '/aurum.Bootstrap/clear',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqClear,
+ responseType: aurum_pb.RspClear,
+ requestSerialize: serialize_aurum_ReqClear,
+ requestDeserialize: deserialize_aurum_ReqClear,
+ responseSerialize: serialize_aurum_RspClear,
+ responseDeserialize: deserialize_aurum_RspClear,
+ },
+ getAttribute: {
+ path: '/aurum.Bootstrap/getAttribute',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqGetAttribute,
+ responseType: aurum_pb.RspGetAttribute,
+ requestSerialize: serialize_aurum_ReqGetAttribute,
+ requestDeserialize: deserialize_aurum_ReqGetAttribute,
+ responseSerialize: serialize_aurum_RspGetAttribute,
+ responseDeserialize: deserialize_aurum_RspGetAttribute,
+ },
+ click: {
+ path: '/aurum.Bootstrap/click',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqClick,
+ responseType: aurum_pb.RspClick,
+ requestSerialize: serialize_aurum_ReqClick,
+ requestDeserialize: deserialize_aurum_ReqClick,
+ responseSerialize: serialize_aurum_RspClick,
+ responseDeserialize: deserialize_aurum_RspClick,
+ },
+ longClick: {
+ path: '/aurum.Bootstrap/longClick',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqClick,
+ responseType: aurum_pb.RspClick,
+ requestSerialize: serialize_aurum_ReqClick,
+ requestDeserialize: deserialize_aurum_ReqClick,
+ responseSerialize: serialize_aurum_RspClick,
+ responseDeserialize: deserialize_aurum_RspClick,
+ },
+ flick: {
+ path: '/aurum.Bootstrap/flick',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqFlick,
+ responseType: aurum_pb.RspFlick,
+ requestSerialize: serialize_aurum_ReqFlick,
+ requestDeserialize: deserialize_aurum_ReqFlick,
+ responseSerialize: serialize_aurum_RspFlick,
+ responseDeserialize: deserialize_aurum_RspFlick,
+ },
+ touchDown: {
+ path: '/aurum.Bootstrap/touchDown',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqTouchDown,
+ responseType: aurum_pb.RspTouchDown,
+ requestSerialize: serialize_aurum_ReqTouchDown,
+ requestDeserialize: deserialize_aurum_ReqTouchDown,
+ responseSerialize: serialize_aurum_RspTouchDown,
+ responseDeserialize: deserialize_aurum_RspTouchDown,
+ },
+ touchMove: {
+ path: '/aurum.Bootstrap/touchMove',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqTouchMove,
+ responseType: aurum_pb.RspTouchMove,
+ requestSerialize: serialize_aurum_ReqTouchMove,
+ requestDeserialize: deserialize_aurum_ReqTouchMove,
+ responseSerialize: serialize_aurum_RspTouchMove,
+ responseDeserialize: deserialize_aurum_RspTouchMove,
+ },
+ touchUp: {
+ path: '/aurum.Bootstrap/touchUp',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqTouchUp,
+ responseType: aurum_pb.RspTouchUp,
+ requestSerialize: serialize_aurum_ReqTouchUp,
+ requestDeserialize: deserialize_aurum_ReqTouchUp,
+ responseSerialize: serialize_aurum_RspTouchUp,
+ responseDeserialize: deserialize_aurum_RspTouchUp,
+ },
+ installApp: {
+ path: '/aurum.Bootstrap/installApp',
+ requestStream: true,
+ responseStream: false,
+ requestType: aurum_pb.ReqInstallApp,
+ responseType: aurum_pb.RspInstallApp,
+ requestSerialize: serialize_aurum_ReqInstallApp,
+ requestDeserialize: deserialize_aurum_ReqInstallApp,
+ responseSerialize: serialize_aurum_RspInstallApp,
+ responseDeserialize: deserialize_aurum_RspInstallApp,
+ },
+ removeApp: {
+ path: '/aurum.Bootstrap/removeApp',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqRemoveApp,
+ responseType: aurum_pb.RspRemoveApp,
+ requestSerialize: serialize_aurum_ReqRemoveApp,
+ requestDeserialize: deserialize_aurum_ReqRemoveApp,
+ responseSerialize: serialize_aurum_RspRemoveApp,
+ responseDeserialize: deserialize_aurum_RspRemoveApp,
+ },
+ getAppInfo: {
+ path: '/aurum.Bootstrap/getAppInfo',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqGetAppInfo,
+ responseType: aurum_pb.RspGetAppInfo,
+ requestSerialize: serialize_aurum_ReqGetAppInfo,
+ requestDeserialize: deserialize_aurum_ReqGetAppInfo,
+ responseSerialize: serialize_aurum_RspGetAppInfo,
+ responseDeserialize: deserialize_aurum_RspGetAppInfo,
+ },
+ launchApp: {
+ path: '/aurum.Bootstrap/launchApp',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqLaunchApp,
+ responseType: aurum_pb.RspLaunchApp,
+ requestSerialize: serialize_aurum_ReqLaunchApp,
+ requestDeserialize: deserialize_aurum_ReqLaunchApp,
+ responseSerialize: serialize_aurum_RspLaunchApp,
+ responseDeserialize: deserialize_aurum_RspLaunchApp,
+ },
+ closeApp: {
+ path: '/aurum.Bootstrap/closeApp',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqCloseApp,
+ responseType: aurum_pb.RspCloseApp,
+ requestSerialize: serialize_aurum_ReqCloseApp,
+ requestDeserialize: deserialize_aurum_ReqCloseApp,
+ responseSerialize: serialize_aurum_RspCloseApp,
+ responseDeserialize: deserialize_aurum_RspCloseApp,
+ },
+ getDeviceTime: {
+ path: '/aurum.Bootstrap/getDeviceTime',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqGetDeviceTime,
+ responseType: aurum_pb.RspGetDeviceTime,
+ requestSerialize: serialize_aurum_ReqGetDeviceTime,
+ requestDeserialize: deserialize_aurum_ReqGetDeviceTime,
+ responseSerialize: serialize_aurum_RspGetDeviceTime,
+ responseDeserialize: deserialize_aurum_RspGetDeviceTime,
+ },
+ getLocation: {
+ path: '/aurum.Bootstrap/getLocation',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqGetLocation,
+ responseType: aurum_pb.RspGetLocation,
+ requestSerialize: serialize_aurum_ReqGetLocation,
+ requestDeserialize: deserialize_aurum_ReqGetLocation,
+ responseSerialize: serialize_aurum_RspGetLocation,
+ responseDeserialize: deserialize_aurum_RspGetLocation,
+ },
+ sendKey: {
+ path: '/aurum.Bootstrap/sendKey',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqKey,
+ responseType: aurum_pb.RspKey,
+ requestSerialize: serialize_aurum_ReqKey,
+ requestDeserialize: deserialize_aurum_ReqKey,
+ responseSerialize: serialize_aurum_RspKey,
+ responseDeserialize: deserialize_aurum_RspKey,
+ },
+ takeScreenshot: {
+ path: '/aurum.Bootstrap/takeScreenshot',
+ requestStream: false,
+ responseStream: true,
+ requestType: aurum_pb.ReqTakeScreenshot,
+ responseType: aurum_pb.RspTakeScreenshot,
+ requestSerialize: serialize_aurum_ReqTakeScreenshot,
+ requestDeserialize: deserialize_aurum_ReqTakeScreenshot,
+ responseSerialize: serialize_aurum_RspTakeScreenshot,
+ responseDeserialize: deserialize_aurum_RspTakeScreenshot,
+ },
+ dumpObjectTree: {
+ path: '/aurum.Bootstrap/dumpObjectTree',
+ requestStream: false,
+ responseStream: false,
+ requestType: aurum_pb.ReqDumpObjectTree,
+ responseType: aurum_pb.RspDumpObjectTree,
+ requestSerialize: serialize_aurum_ReqDumpObjectTree,
+ requestDeserialize: deserialize_aurum_ReqDumpObjectTree,
+ responseSerialize: serialize_aurum_RspDumpObjectTree,
+ responseDeserialize: deserialize_aurum_RspDumpObjectTree,
+ },
+};
+
+exports.BootstrapClient = grpc.makeGenericClientConstructor(BootstrapService);
diff --git a/lib/aurum_backend/aurum_pb.js b/lib/aurum_backend/aurum_pb.js
new file mode 100644
index 0000000..cdcfca9
--- /dev/null
+++ b/lib/aurum_backend/aurum_pb.js
@@ -0,0 +1,10714 @@
+// source: aurum.proto
+/**
+ * @fileoverview
+ * @enhanceable
+ * @suppress {missingRequire} reports error on implicit type usages.
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
+ * field starts with 'MSG_' and isn't a translatable message.
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+/* eslint-disable */
+// @ts-nocheck
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.aurum.Element', null, global);
+goog.exportSymbol('proto.aurum.ParamType', null, global);
+goog.exportSymbol('proto.aurum.Point', null, global);
+goog.exportSymbol('proto.aurum.Rect', null, global);
+goog.exportSymbol('proto.aurum.ReqClear', null, global);
+goog.exportSymbol('proto.aurum.ReqClick', null, global);
+goog.exportSymbol('proto.aurum.ReqClick.ParamsCase', null, global);
+goog.exportSymbol('proto.aurum.ReqClick.RequestType', null, global);
+goog.exportSymbol('proto.aurum.ReqCloseApp', null, global);
+goog.exportSymbol('proto.aurum.ReqDumpObjectTree', null, global);
+goog.exportSymbol('proto.aurum.ReqEmpty', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.AutomationidCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.ElementidCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsactiveCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IscheckableCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IscheckedCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsclickableCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsenabledCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsfocusableCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsfocusedCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsscrollableCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsselectedCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.IsshowingCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.MaxdepthCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.MindepthCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.TextfieldCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.WidgetstyleCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFindElement.WidgettypeCase', null, global);
+goog.exportSymbol('proto.aurum.ReqFlick', null, global);
+goog.exportSymbol('proto.aurum.ReqGetAppInfo', null, global);
+goog.exportSymbol('proto.aurum.ReqGetAttribute', null, global);
+goog.exportSymbol('proto.aurum.ReqGetAttribute.RequestType', null, global);
+goog.exportSymbol('proto.aurum.ReqGetDeviceTime', null, global);
+goog.exportSymbol('proto.aurum.ReqGetDeviceTime.TimeType', null, global);
+goog.exportSymbol('proto.aurum.ReqGetLocation', null, global);
+goog.exportSymbol('proto.aurum.ReqGetSize', null, global);
+goog.exportSymbol('proto.aurum.ReqGetValue', null, global);
+goog.exportSymbol('proto.aurum.ReqInstallApp', null, global);
+goog.exportSymbol('proto.aurum.ReqKey', null, global);
+goog.exportSymbol('proto.aurum.ReqKey.KeyActionType', null, global);
+goog.exportSymbol('proto.aurum.ReqKey.KeyType', null, global);
+goog.exportSymbol('proto.aurum.ReqLaunchApp', null, global);
+goog.exportSymbol('proto.aurum.ReqRemoveApp', null, global);
+goog.exportSymbol('proto.aurum.ReqSetValue', null, global);
+goog.exportSymbol('proto.aurum.ReqSetValue.ParamsCase', null, global);
+goog.exportSymbol('proto.aurum.ReqTakeScreenshot', null, global);
+goog.exportSymbol('proto.aurum.ReqTouchDown', null, global);
+goog.exportSymbol('proto.aurum.ReqTouchMove', null, global);
+goog.exportSymbol('proto.aurum.ReqTouchUp', null, global);
+goog.exportSymbol('proto.aurum.RspClear', null, global);
+goog.exportSymbol('proto.aurum.RspClick', null, global);
+goog.exportSymbol('proto.aurum.RspCloseApp', null, global);
+goog.exportSymbol('proto.aurum.RspDumpObjectTree', null, global);
+goog.exportSymbol('proto.aurum.RspEmpty', null, global);
+goog.exportSymbol('proto.aurum.RspFindElement', null, global);
+goog.exportSymbol('proto.aurum.RspFlick', null, global);
+goog.exportSymbol('proto.aurum.RspGetAppInfo', null, global);
+goog.exportSymbol('proto.aurum.RspGetAttribute', null, global);
+goog.exportSymbol('proto.aurum.RspGetAttribute.ParamsCase', null, global);
+goog.exportSymbol('proto.aurum.RspGetDeviceTime', null, global);
+goog.exportSymbol('proto.aurum.RspGetLocation', null, global);
+goog.exportSymbol('proto.aurum.RspGetSize', null, global);
+goog.exportSymbol('proto.aurum.RspGetValue', null, global);
+goog.exportSymbol('proto.aurum.RspGetValue.ParamsCase', null, global);
+goog.exportSymbol('proto.aurum.RspInstallApp', null, global);
+goog.exportSymbol('proto.aurum.RspKey', null, global);
+goog.exportSymbol('proto.aurum.RspLaunchApp', null, global);
+goog.exportSymbol('proto.aurum.RspRemoveApp', null, global);
+goog.exportSymbol('proto.aurum.RspSetValue', null, global);
+goog.exportSymbol('proto.aurum.RspStatus', null, global);
+goog.exportSymbol('proto.aurum.RspTakeScreenshot', null, global);
+goog.exportSymbol('proto.aurum.RspTouchDown', null, global);
+goog.exportSymbol('proto.aurum.RspTouchMove', null, global);
+goog.exportSymbol('proto.aurum.RspTouchUp', null, global);
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.Element = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.aurum.Element.repeatedFields_, null);
+};
+goog.inherits(proto.aurum.Element, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.Element.displayName = 'proto.aurum.Element';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.Point = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.Point, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.Point.displayName = 'proto.aurum.Point';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.Rect = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.Rect, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.Rect.displayName = 'proto.aurum.Rect';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqFindElement = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.aurum.ReqFindElement.repeatedFields_, proto.aurum.ReqFindElement.oneofGroups_);
+};
+goog.inherits(proto.aurum.ReqFindElement, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqFindElement.displayName = 'proto.aurum.ReqFindElement';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspFindElement = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.aurum.RspFindElement.repeatedFields_, null);
+};
+goog.inherits(proto.aurum.RspFindElement, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspFindElement.displayName = 'proto.aurum.RspFindElement';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqGetValue = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqGetValue, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqGetValue.displayName = 'proto.aurum.ReqGetValue';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspGetValue = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, proto.aurum.RspGetValue.oneofGroups_);
+};
+goog.inherits(proto.aurum.RspGetValue, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspGetValue.displayName = 'proto.aurum.RspGetValue';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqSetValue = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, proto.aurum.ReqSetValue.oneofGroups_);
+};
+goog.inherits(proto.aurum.ReqSetValue, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqSetValue.displayName = 'proto.aurum.ReqSetValue';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspSetValue = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspSetValue, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspSetValue.displayName = 'proto.aurum.RspSetValue';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqGetSize = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqGetSize, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqGetSize.displayName = 'proto.aurum.ReqGetSize';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspGetSize = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspGetSize, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspGetSize.displayName = 'proto.aurum.RspGetSize';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqClear = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqClear, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqClear.displayName = 'proto.aurum.ReqClear';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspClear = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspClear, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspClear.displayName = 'proto.aurum.RspClear';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqGetAttribute = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqGetAttribute, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqGetAttribute.displayName = 'proto.aurum.ReqGetAttribute';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspGetAttribute = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, proto.aurum.RspGetAttribute.oneofGroups_);
+};
+goog.inherits(proto.aurum.RspGetAttribute, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspGetAttribute.displayName = 'proto.aurum.RspGetAttribute';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqClick = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, proto.aurum.ReqClick.oneofGroups_);
+};
+goog.inherits(proto.aurum.ReqClick, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqClick.displayName = 'proto.aurum.ReqClick';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspClick = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspClick, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspClick.displayName = 'proto.aurum.RspClick';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqFlick = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqFlick, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqFlick.displayName = 'proto.aurum.ReqFlick';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspFlick = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspFlick, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspFlick.displayName = 'proto.aurum.RspFlick';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqTouchDown = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqTouchDown, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqTouchDown.displayName = 'proto.aurum.ReqTouchDown';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspTouchDown = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspTouchDown, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspTouchDown.displayName = 'proto.aurum.RspTouchDown';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqTouchMove = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqTouchMove, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqTouchMove.displayName = 'proto.aurum.ReqTouchMove';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspTouchMove = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspTouchMove, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspTouchMove.displayName = 'proto.aurum.RspTouchMove';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqTouchUp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqTouchUp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqTouchUp.displayName = 'proto.aurum.ReqTouchUp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspTouchUp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspTouchUp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspTouchUp.displayName = 'proto.aurum.RspTouchUp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqInstallApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqInstallApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqInstallApp.displayName = 'proto.aurum.ReqInstallApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspInstallApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspInstallApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspInstallApp.displayName = 'proto.aurum.RspInstallApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqRemoveApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqRemoveApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqRemoveApp.displayName = 'proto.aurum.ReqRemoveApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspRemoveApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspRemoveApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspRemoveApp.displayName = 'proto.aurum.RspRemoveApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqGetAppInfo = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqGetAppInfo, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqGetAppInfo.displayName = 'proto.aurum.ReqGetAppInfo';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspGetAppInfo = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspGetAppInfo, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspGetAppInfo.displayName = 'proto.aurum.RspGetAppInfo';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqLaunchApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqLaunchApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqLaunchApp.displayName = 'proto.aurum.ReqLaunchApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspLaunchApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspLaunchApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspLaunchApp.displayName = 'proto.aurum.RspLaunchApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqCloseApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqCloseApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqCloseApp.displayName = 'proto.aurum.ReqCloseApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspCloseApp = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspCloseApp, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspCloseApp.displayName = 'proto.aurum.RspCloseApp';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqGetDeviceTime = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqGetDeviceTime, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqGetDeviceTime.displayName = 'proto.aurum.ReqGetDeviceTime';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspGetDeviceTime = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspGetDeviceTime, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspGetDeviceTime.displayName = 'proto.aurum.RspGetDeviceTime';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqGetLocation = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqGetLocation, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqGetLocation.displayName = 'proto.aurum.ReqGetLocation';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspGetLocation = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspGetLocation, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspGetLocation.displayName = 'proto.aurum.RspGetLocation';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqKey = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqKey, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqKey.displayName = 'proto.aurum.ReqKey';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspKey = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspKey, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspKey.displayName = 'proto.aurum.RspKey';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqTakeScreenshot = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqTakeScreenshot, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqTakeScreenshot.displayName = 'proto.aurum.ReqTakeScreenshot';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspTakeScreenshot = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspTakeScreenshot, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspTakeScreenshot.displayName = 'proto.aurum.RspTakeScreenshot';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqEmpty = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqEmpty, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqEmpty.displayName = 'proto.aurum.ReqEmpty';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspEmpty = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.RspEmpty, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspEmpty.displayName = 'proto.aurum.RspEmpty';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.ReqDumpObjectTree = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.aurum.ReqDumpObjectTree, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.ReqDumpObjectTree.displayName = 'proto.aurum.ReqDumpObjectTree';
+}
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.aurum.RspDumpObjectTree = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.aurum.RspDumpObjectTree.repeatedFields_, null);
+};
+goog.inherits(proto.aurum.RspDumpObjectTree, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ /**
+ * @public
+ * @override
+ */
+ proto.aurum.RspDumpObjectTree.displayName = 'proto.aurum.RspDumpObjectTree';
+}
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array}
+ * @const
+ */
+proto.aurum.Element.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.Element.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.Element.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.Element} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.Element.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+ childList: jspb.Message.toObjectList(msg.getChildList(),
+ proto.aurum.Element.toObject, includeInstance),
+ geometry: (f = msg.getGeometry()) && proto.aurum.Rect.toObject(includeInstance, f),
+ widgetType: jspb.Message.getFieldWithDefault(msg, 4, ""),
+ widgetStyle: jspb.Message.getFieldWithDefault(msg, 5, ""),
+ text: jspb.Message.getFieldWithDefault(msg, 6, ""),
+ id: jspb.Message.getFieldWithDefault(msg, 7, ""),
+ automationid: jspb.Message.getFieldWithDefault(msg, 8, ""),
+ pb_package: jspb.Message.getFieldWithDefault(msg, 9, ""),
+ role: jspb.Message.getFieldWithDefault(msg, 10, ""),
+ ischecked: jspb.Message.getBooleanFieldWithDefault(msg, 11, false),
+ ischeckable: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),
+ isclickable: jspb.Message.getBooleanFieldWithDefault(msg, 13, false),
+ isenabled: jspb.Message.getBooleanFieldWithDefault(msg, 14, false),
+ isfocused: jspb.Message.getBooleanFieldWithDefault(msg, 15, false),
+ isfocusable: jspb.Message.getBooleanFieldWithDefault(msg, 16, false),
+ isscrollable: jspb.Message.getBooleanFieldWithDefault(msg, 17, false),
+ isselected: jspb.Message.getBooleanFieldWithDefault(msg, 18, false),
+ isshowing: jspb.Message.getBooleanFieldWithDefault(msg, 19, false),
+ isactive: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),
+ isvisible: jspb.Message.getBooleanFieldWithDefault(msg, 21, false),
+ isselectable: jspb.Message.getBooleanFieldWithDefault(msg, 22, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.Element}
+ */
+proto.aurum.Element.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.Element;
+ return proto.aurum.Element.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.Element} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.Element}
+ */
+proto.aurum.Element.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Element;
+ reader.readMessage(value,proto.aurum.Element.deserializeBinaryFromReader);
+ msg.addChild(value);
+ break;
+ case 3:
+ var value = new proto.aurum.Rect;
+ reader.readMessage(value,proto.aurum.Rect.deserializeBinaryFromReader);
+ msg.setGeometry(value);
+ break;
+ case 4:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setWidgetType(value);
+ break;
+ case 5:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setWidgetStyle(value);
+ break;
+ case 6:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setText(value);
+ break;
+ case 7:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setId(value);
+ break;
+ case 8:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setAutomationid(value);
+ break;
+ case 9:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setPackage(value);
+ break;
+ case 10:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setRole(value);
+ break;
+ case 11:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIschecked(value);
+ break;
+ case 12:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIscheckable(value);
+ break;
+ case 13:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsclickable(value);
+ break;
+ case 14:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsenabled(value);
+ break;
+ case 15:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsfocused(value);
+ break;
+ case 16:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsfocusable(value);
+ break;
+ case 17:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsscrollable(value);
+ break;
+ case 18:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsselected(value);
+ break;
+ case 19:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsshowing(value);
+ break;
+ case 20:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsactive(value);
+ break;
+ case 21:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsvisible(value);
+ break;
+ case 22:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsselectable(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.Element.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.Element.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.Element} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.Element.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+ f = message.getChildList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 2,
+ f,
+ proto.aurum.Element.serializeBinaryToWriter
+ );
+ }
+ f = message.getGeometry();
+ if (f != null) {
+ writer.writeMessage(
+ 3,
+ f,
+ proto.aurum.Rect.serializeBinaryToWriter
+ );
+ }
+ f = message.getWidgetType();
+ if (f.length > 0) {
+ writer.writeString(
+ 4,
+ f
+ );
+ }
+ f = message.getWidgetStyle();
+ if (f.length > 0) {
+ writer.writeString(
+ 5,
+ f
+ );
+ }
+ f = message.getText();
+ if (f.length > 0) {
+ writer.writeString(
+ 6,
+ f
+ );
+ }
+ f = message.getId();
+ if (f.length > 0) {
+ writer.writeString(
+ 7,
+ f
+ );
+ }
+ f = message.getAutomationid();
+ if (f.length > 0) {
+ writer.writeString(
+ 8,
+ f
+ );
+ }
+ f = message.getPackage();
+ if (f.length > 0) {
+ writer.writeString(
+ 9,
+ f
+ );
+ }
+ f = message.getRole();
+ if (f.length > 0) {
+ writer.writeString(
+ 10,
+ f
+ );
+ }
+ f = message.getIschecked();
+ if (f) {
+ writer.writeBool(
+ 11,
+ f
+ );
+ }
+ f = message.getIscheckable();
+ if (f) {
+ writer.writeBool(
+ 12,
+ f
+ );
+ }
+ f = message.getIsclickable();
+ if (f) {
+ writer.writeBool(
+ 13,
+ f
+ );
+ }
+ f = message.getIsenabled();
+ if (f) {
+ writer.writeBool(
+ 14,
+ f
+ );
+ }
+ f = message.getIsfocused();
+ if (f) {
+ writer.writeBool(
+ 15,
+ f
+ );
+ }
+ f = message.getIsfocusable();
+ if (f) {
+ writer.writeBool(
+ 16,
+ f
+ );
+ }
+ f = message.getIsscrollable();
+ if (f) {
+ writer.writeBool(
+ 17,
+ f
+ );
+ }
+ f = message.getIsselected();
+ if (f) {
+ writer.writeBool(
+ 18,
+ f
+ );
+ }
+ f = message.getIsshowing();
+ if (f) {
+ writer.writeBool(
+ 19,
+ f
+ );
+ }
+ f = message.getIsactive();
+ if (f) {
+ writer.writeBool(
+ 20,
+ f
+ );
+ }
+ f = message.getIsvisible();
+ if (f) {
+ writer.writeBool(
+ 21,
+ f
+ );
+ }
+ f = message.getIsselectable();
+ if (f) {
+ writer.writeBool(
+ 22,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * repeated Element child = 2;
+ * @return {!Array}
+ */
+proto.aurum.Element.prototype.getChildList = function() {
+ return /** @type{!Array} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.aurum.Element, 2));
+};
+
+
+/**
+ * @param {!Array} value
+ * @return {!proto.aurum.Element} returns this
+*/
+proto.aurum.Element.prototype.setChildList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.aurum.Element=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.aurum.Element}
+ */
+proto.aurum.Element.prototype.addChild = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.aurum.Element, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.clearChildList = function() {
+ return this.setChildList([]);
+};
+
+
+/**
+ * optional Rect geometry = 3;
+ * @return {?proto.aurum.Rect}
+ */
+proto.aurum.Element.prototype.getGeometry = function() {
+ return /** @type{?proto.aurum.Rect} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Rect, 3));
+};
+
+
+/**
+ * @param {?proto.aurum.Rect|undefined} value
+ * @return {!proto.aurum.Element} returns this
+*/
+proto.aurum.Element.prototype.setGeometry = function(value) {
+ return jspb.Message.setWrapperField(this, 3, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.clearGeometry = function() {
+ return this.setGeometry(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.hasGeometry = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional string widget_type = 4;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getWidgetType = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setWidgetType = function(value) {
+ return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+/**
+ * optional string widget_style = 5;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getWidgetStyle = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setWidgetStyle = function(value) {
+ return jspb.Message.setProto3StringField(this, 5, value);
+};
+
+
+/**
+ * optional string text = 6;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getText = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setText = function(value) {
+ return jspb.Message.setProto3StringField(this, 6, value);
+};
+
+
+/**
+ * optional string id = 7;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getId = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setId = function(value) {
+ return jspb.Message.setProto3StringField(this, 7, value);
+};
+
+
+/**
+ * optional string automationId = 8;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getAutomationid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setAutomationid = function(value) {
+ return jspb.Message.setProto3StringField(this, 8, value);
+};
+
+
+/**
+ * optional string package = 9;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getPackage = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setPackage = function(value) {
+ return jspb.Message.setProto3StringField(this, 9, value);
+};
+
+
+/**
+ * optional string role = 10;
+ * @return {string}
+ */
+proto.aurum.Element.prototype.getRole = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setRole = function(value) {
+ return jspb.Message.setProto3StringField(this, 10, value);
+};
+
+
+/**
+ * optional bool isChecked = 11;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIschecked = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 11, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIschecked = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 11, value);
+};
+
+
+/**
+ * optional bool isCheckable = 12;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIscheckable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIscheckable = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 12, value);
+};
+
+
+/**
+ * optional bool isClickable = 13;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsclickable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 13, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsclickable = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 13, value);
+};
+
+
+/**
+ * optional bool isEnabled = 14;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsenabled = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 14, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsenabled = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 14, value);
+};
+
+
+/**
+ * optional bool isFocused = 15;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsfocused = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 15, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsfocused = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 15, value);
+};
+
+
+/**
+ * optional bool isFocusable = 16;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsfocusable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 16, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsfocusable = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 16, value);
+};
+
+
+/**
+ * optional bool isScrollable = 17;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsscrollable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 17, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsscrollable = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 17, value);
+};
+
+
+/**
+ * optional bool isSelected = 18;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsselected = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 18, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsselected = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 18, value);
+};
+
+
+/**
+ * optional bool isShowing = 19;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsshowing = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 19, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsshowing = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 19, value);
+};
+
+
+/**
+ * optional bool isActive = 20;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsactive = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsactive = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 20, value);
+};
+
+
+/**
+ * optional bool isVisible = 21;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsvisible = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 21, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsvisible = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 21, value);
+};
+
+
+/**
+ * optional bool isSelectable = 22;
+ * @return {boolean}
+ */
+proto.aurum.Element.prototype.getIsselectable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 22, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.Element} returns this
+ */
+proto.aurum.Element.prototype.setIsselectable = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 22, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.Point.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.Point.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.Point} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.Point.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ x: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ y: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.Point}
+ */
+proto.aurum.Point.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.Point;
+ return proto.aurum.Point.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.Point} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.Point}
+ */
+proto.aurum.Point.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setX(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setY(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.Point.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.Point.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.Point} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.Point.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getX();
+ if (f !== 0) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = message.getY();
+ if (f !== 0) {
+ writer.writeInt32(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional int32 x = 1;
+ * @return {number}
+ */
+proto.aurum.Point.prototype.getX = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.Point} returns this
+ */
+proto.aurum.Point.prototype.setX = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional int32 y = 2;
+ * @return {number}
+ */
+proto.aurum.Point.prototype.getY = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.Point} returns this
+ */
+proto.aurum.Point.prototype.setY = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.Rect.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.Rect.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.Rect} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.Rect.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ x: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ y: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ width: jspb.Message.getFieldWithDefault(msg, 3, 0),
+ height: jspb.Message.getFieldWithDefault(msg, 4, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.Rect}
+ */
+proto.aurum.Rect.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.Rect;
+ return proto.aurum.Rect.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.Rect} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.Rect}
+ */
+proto.aurum.Rect.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setX(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setY(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setWidth(value);
+ break;
+ case 4:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setHeight(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.Rect.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.Rect.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.Rect} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.Rect.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getX();
+ if (f !== 0) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = message.getY();
+ if (f !== 0) {
+ writer.writeInt32(
+ 2,
+ f
+ );
+ }
+ f = message.getWidth();
+ if (f !== 0) {
+ writer.writeInt32(
+ 3,
+ f
+ );
+ }
+ f = message.getHeight();
+ if (f !== 0) {
+ writer.writeInt32(
+ 4,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional int32 x = 1;
+ * @return {number}
+ */
+proto.aurum.Rect.prototype.getX = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.Rect} returns this
+ */
+proto.aurum.Rect.prototype.setX = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional int32 y = 2;
+ * @return {number}
+ */
+proto.aurum.Rect.prototype.getY = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.Rect} returns this
+ */
+proto.aurum.Rect.prototype.setY = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional int32 width = 3;
+ * @return {number}
+ */
+proto.aurum.Rect.prototype.getWidth = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.Rect} returns this
+ */
+proto.aurum.Rect.prototype.setWidth = function(value) {
+ return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+/**
+ * optional int32 height = 4;
+ * @return {number}
+ */
+proto.aurum.Rect.prototype.getHeight = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.Rect} returns this
+ */
+proto.aurum.Rect.prototype.setHeight = function(value) {
+ return jspb.Message.setProto3IntField(this, 4, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array}
+ * @const
+ */
+proto.aurum.ReqFindElement.repeatedFields_ = [18];
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array>}
+ * @const
+ */
+proto.aurum.ReqFindElement.oneofGroups_ = [[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17]];
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.ElementidCase = {
+ _ELEMENTID_NOT_SET: 0,
+ ELEMENTID: 1
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.ElementidCase}
+ */
+proto.aurum.ReqFindElement.prototype.getElementidCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.ElementidCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[0]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.AutomationidCase = {
+ _AUTOMATIONID_NOT_SET: 0,
+ AUTOMATIONID: 2
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.AutomationidCase}
+ */
+proto.aurum.ReqFindElement.prototype.getAutomationidCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.AutomationidCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[1]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.TextfieldCase = {
+ _TEXTFIELD_NOT_SET: 0,
+ TEXTFIELD: 3
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.TextfieldCase}
+ */
+proto.aurum.ReqFindElement.prototype.getTextfieldCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.TextfieldCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[2]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.WidgettypeCase = {
+ _WIDGETTYPE_NOT_SET: 0,
+ WIDGETTYPE: 4
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.WidgettypeCase}
+ */
+proto.aurum.ReqFindElement.prototype.getWidgettypeCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.WidgettypeCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[3]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.WidgetstyleCase = {
+ _WIDGETSTYLE_NOT_SET: 0,
+ WIDGETSTYLE: 5
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.WidgetstyleCase}
+ */
+proto.aurum.ReqFindElement.prototype.getWidgetstyleCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.WidgetstyleCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[4]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IscheckedCase = {
+ _ISCHECKED_NOT_SET: 0,
+ ISCHECKED: 6
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IscheckedCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIscheckedCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IscheckedCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[5]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IscheckableCase = {
+ _ISCHECKABLE_NOT_SET: 0,
+ ISCHECKABLE: 7
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IscheckableCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIscheckableCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IscheckableCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[6]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsclickableCase = {
+ _ISCLICKABLE_NOT_SET: 0,
+ ISCLICKABLE: 8
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsclickableCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsclickableCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsclickableCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[7]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsenabledCase = {
+ _ISENABLED_NOT_SET: 0,
+ ISENABLED: 9
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsenabledCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsenabledCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsenabledCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[8]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsfocusedCase = {
+ _ISFOCUSED_NOT_SET: 0,
+ ISFOCUSED: 10
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsfocusedCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsfocusedCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsfocusedCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[9]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsfocusableCase = {
+ _ISFOCUSABLE_NOT_SET: 0,
+ ISFOCUSABLE: 11
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsfocusableCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsfocusableCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsfocusableCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[10]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsscrollableCase = {
+ _ISSCROLLABLE_NOT_SET: 0,
+ ISSCROLLABLE: 12
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsscrollableCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsscrollableCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsscrollableCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[11]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsselectedCase = {
+ _ISSELECTED_NOT_SET: 0,
+ ISSELECTED: 13
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsselectedCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsselectedCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsselectedCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[12]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsshowingCase = {
+ _ISSHOWING_NOT_SET: 0,
+ ISSHOWING: 14
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsshowingCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsshowingCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsshowingCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[13]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.IsactiveCase = {
+ _ISACTIVE_NOT_SET: 0,
+ ISACTIVE: 15
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.IsactiveCase}
+ */
+proto.aurum.ReqFindElement.prototype.getIsactiveCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.IsactiveCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[14]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.MindepthCase = {
+ _MINDEPTH_NOT_SET: 0,
+ MINDEPTH: 16
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.MindepthCase}
+ */
+proto.aurum.ReqFindElement.prototype.getMindepthCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.MindepthCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[15]));
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqFindElement.MaxdepthCase = {
+ _MAXDEPTH_NOT_SET: 0,
+ MAXDEPTH: 17
+};
+
+/**
+ * @return {proto.aurum.ReqFindElement.MaxdepthCase}
+ */
+proto.aurum.ReqFindElement.prototype.getMaxdepthCase = function() {
+ return /** @type {proto.aurum.ReqFindElement.MaxdepthCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqFindElement.oneofGroups_[16]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqFindElement.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqFindElement.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqFindElement} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqFindElement.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+ automationid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+ textfield: jspb.Message.getFieldWithDefault(msg, 3, ""),
+ widgettype: jspb.Message.getFieldWithDefault(msg, 4, ""),
+ widgetstyle: jspb.Message.getFieldWithDefault(msg, 5, ""),
+ ischecked: jspb.Message.getBooleanFieldWithDefault(msg, 6, false),
+ ischeckable: jspb.Message.getBooleanFieldWithDefault(msg, 7, false),
+ isclickable: jspb.Message.getBooleanFieldWithDefault(msg, 8, false),
+ isenabled: jspb.Message.getBooleanFieldWithDefault(msg, 9, false),
+ isfocused: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),
+ isfocusable: jspb.Message.getBooleanFieldWithDefault(msg, 11, false),
+ isscrollable: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),
+ isselected: jspb.Message.getBooleanFieldWithDefault(msg, 13, false),
+ isshowing: jspb.Message.getBooleanFieldWithDefault(msg, 14, false),
+ isactive: jspb.Message.getBooleanFieldWithDefault(msg, 15, false),
+ mindepth: jspb.Message.getFieldWithDefault(msg, 16, 0),
+ maxdepth: jspb.Message.getFieldWithDefault(msg, 17, 0),
+ childrenList: jspb.Message.toObjectList(msg.getChildrenList(),
+ proto.aurum.ReqFindElement.toObject, includeInstance)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqFindElement}
+ */
+proto.aurum.ReqFindElement.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqFindElement;
+ return proto.aurum.ReqFindElement.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqFindElement} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqFindElement}
+ */
+proto.aurum.ReqFindElement.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ case 2:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setAutomationid(value);
+ break;
+ case 3:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setTextfield(value);
+ break;
+ case 4:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setWidgettype(value);
+ break;
+ case 5:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setWidgetstyle(value);
+ break;
+ case 6:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIschecked(value);
+ break;
+ case 7:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIscheckable(value);
+ break;
+ case 8:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsclickable(value);
+ break;
+ case 9:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsenabled(value);
+ break;
+ case 10:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsfocused(value);
+ break;
+ case 11:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsfocusable(value);
+ break;
+ case 12:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsscrollable(value);
+ break;
+ case 13:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsselected(value);
+ break;
+ case 14:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsshowing(value);
+ break;
+ case 15:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsactive(value);
+ break;
+ case 16:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setMindepth(value);
+ break;
+ case 17:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setMaxdepth(value);
+ break;
+ case 18:
+ var value = new proto.aurum.ReqFindElement;
+ reader.readMessage(value,proto.aurum.ReqFindElement.deserializeBinaryFromReader);
+ msg.addChildren(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqFindElement.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqFindElement.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqFindElement} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqFindElement.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = /** @type {string} */ (jspb.Message.getField(message, 1));
+ if (f != null) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeString(
+ 2,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 3));
+ if (f != null) {
+ writer.writeString(
+ 3,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 4));
+ if (f != null) {
+ writer.writeString(
+ 4,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 5));
+ if (f != null) {
+ writer.writeString(
+ 5,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 6));
+ if (f != null) {
+ writer.writeBool(
+ 6,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 7));
+ if (f != null) {
+ writer.writeBool(
+ 7,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 8));
+ if (f != null) {
+ writer.writeBool(
+ 8,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 9));
+ if (f != null) {
+ writer.writeBool(
+ 9,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 10));
+ if (f != null) {
+ writer.writeBool(
+ 10,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 11));
+ if (f != null) {
+ writer.writeBool(
+ 11,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 12));
+ if (f != null) {
+ writer.writeBool(
+ 12,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 13));
+ if (f != null) {
+ writer.writeBool(
+ 13,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 14));
+ if (f != null) {
+ writer.writeBool(
+ 14,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 15));
+ if (f != null) {
+ writer.writeBool(
+ 15,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 16));
+ if (f != null) {
+ writer.writeInt32(
+ 16,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 17));
+ if (f != null) {
+ writer.writeInt32(
+ 17,
+ f
+ );
+ }
+ f = message.getChildrenList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 18,
+ f,
+ proto.aurum.ReqFindElement.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqFindElement.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setElementid = function(value) {
+ return jspb.Message.setOneofField(this, 1, proto.aurum.ReqFindElement.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearElementid = function() {
+ return jspb.Message.setOneofField(this, 1, proto.aurum.ReqFindElement.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasElementid = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional string automationId = 2;
+ * @return {string}
+ */
+proto.aurum.ReqFindElement.prototype.getAutomationid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setAutomationid = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.aurum.ReqFindElement.oneofGroups_[1], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearAutomationid = function() {
+ return jspb.Message.setOneofField(this, 2, proto.aurum.ReqFindElement.oneofGroups_[1], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasAutomationid = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional string textField = 3;
+ * @return {string}
+ */
+proto.aurum.ReqFindElement.prototype.getTextfield = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setTextfield = function(value) {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.ReqFindElement.oneofGroups_[2], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearTextfield = function() {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.ReqFindElement.oneofGroups_[2], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasTextfield = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional string widgetType = 4;
+ * @return {string}
+ */
+proto.aurum.ReqFindElement.prototype.getWidgettype = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setWidgettype = function(value) {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.ReqFindElement.oneofGroups_[3], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearWidgettype = function() {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.ReqFindElement.oneofGroups_[3], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasWidgettype = function() {
+ return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional string widgetStyle = 5;
+ * @return {string}
+ */
+proto.aurum.ReqFindElement.prototype.getWidgetstyle = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setWidgetstyle = function(value) {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.ReqFindElement.oneofGroups_[4], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearWidgetstyle = function() {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.ReqFindElement.oneofGroups_[4], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasWidgetstyle = function() {
+ return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional bool isChecked = 6;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIschecked = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIschecked = function(value) {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.ReqFindElement.oneofGroups_[5], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIschecked = function() {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.ReqFindElement.oneofGroups_[5], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIschecked = function() {
+ return jspb.Message.getField(this, 6) != null;
+};
+
+
+/**
+ * optional bool isCheckable = 7;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIscheckable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIscheckable = function(value) {
+ return jspb.Message.setOneofField(this, 7, proto.aurum.ReqFindElement.oneofGroups_[6], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIscheckable = function() {
+ return jspb.Message.setOneofField(this, 7, proto.aurum.ReqFindElement.oneofGroups_[6], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIscheckable = function() {
+ return jspb.Message.getField(this, 7) != null;
+};
+
+
+/**
+ * optional bool isClickable = 8;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsclickable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 8, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsclickable = function(value) {
+ return jspb.Message.setOneofField(this, 8, proto.aurum.ReqFindElement.oneofGroups_[7], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsclickable = function() {
+ return jspb.Message.setOneofField(this, 8, proto.aurum.ReqFindElement.oneofGroups_[7], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsclickable = function() {
+ return jspb.Message.getField(this, 8) != null;
+};
+
+
+/**
+ * optional bool isEnabled = 9;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsenabled = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 9, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsenabled = function(value) {
+ return jspb.Message.setOneofField(this, 9, proto.aurum.ReqFindElement.oneofGroups_[8], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsenabled = function() {
+ return jspb.Message.setOneofField(this, 9, proto.aurum.ReqFindElement.oneofGroups_[8], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsenabled = function() {
+ return jspb.Message.getField(this, 9) != null;
+};
+
+
+/**
+ * optional bool isFocused = 10;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsfocused = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsfocused = function(value) {
+ return jspb.Message.setOneofField(this, 10, proto.aurum.ReqFindElement.oneofGroups_[9], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsfocused = function() {
+ return jspb.Message.setOneofField(this, 10, proto.aurum.ReqFindElement.oneofGroups_[9], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsfocused = function() {
+ return jspb.Message.getField(this, 10) != null;
+};
+
+
+/**
+ * optional bool isFocusable = 11;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsfocusable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 11, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsfocusable = function(value) {
+ return jspb.Message.setOneofField(this, 11, proto.aurum.ReqFindElement.oneofGroups_[10], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsfocusable = function() {
+ return jspb.Message.setOneofField(this, 11, proto.aurum.ReqFindElement.oneofGroups_[10], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsfocusable = function() {
+ return jspb.Message.getField(this, 11) != null;
+};
+
+
+/**
+ * optional bool isScrollable = 12;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsscrollable = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsscrollable = function(value) {
+ return jspb.Message.setOneofField(this, 12, proto.aurum.ReqFindElement.oneofGroups_[11], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsscrollable = function() {
+ return jspb.Message.setOneofField(this, 12, proto.aurum.ReqFindElement.oneofGroups_[11], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsscrollable = function() {
+ return jspb.Message.getField(this, 12) != null;
+};
+
+
+/**
+ * optional bool isSelected = 13;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsselected = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 13, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsselected = function(value) {
+ return jspb.Message.setOneofField(this, 13, proto.aurum.ReqFindElement.oneofGroups_[12], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsselected = function() {
+ return jspb.Message.setOneofField(this, 13, proto.aurum.ReqFindElement.oneofGroups_[12], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsselected = function() {
+ return jspb.Message.getField(this, 13) != null;
+};
+
+
+/**
+ * optional bool isShowing = 14;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsshowing = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 14, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsshowing = function(value) {
+ return jspb.Message.setOneofField(this, 14, proto.aurum.ReqFindElement.oneofGroups_[13], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsshowing = function() {
+ return jspb.Message.setOneofField(this, 14, proto.aurum.ReqFindElement.oneofGroups_[13], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsshowing = function() {
+ return jspb.Message.getField(this, 14) != null;
+};
+
+
+/**
+ * optional bool isActive = 15;
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.getIsactive = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 15, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setIsactive = function(value) {
+ return jspb.Message.setOneofField(this, 15, proto.aurum.ReqFindElement.oneofGroups_[14], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearIsactive = function() {
+ return jspb.Message.setOneofField(this, 15, proto.aurum.ReqFindElement.oneofGroups_[14], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasIsactive = function() {
+ return jspb.Message.getField(this, 15) != null;
+};
+
+
+/**
+ * optional int32 minDepth = 16;
+ * @return {number}
+ */
+proto.aurum.ReqFindElement.prototype.getMindepth = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 16, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setMindepth = function(value) {
+ return jspb.Message.setOneofField(this, 16, proto.aurum.ReqFindElement.oneofGroups_[15], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearMindepth = function() {
+ return jspb.Message.setOneofField(this, 16, proto.aurum.ReqFindElement.oneofGroups_[15], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasMindepth = function() {
+ return jspb.Message.getField(this, 16) != null;
+};
+
+
+/**
+ * optional int32 maxDepth = 17;
+ * @return {number}
+ */
+proto.aurum.ReqFindElement.prototype.getMaxdepth = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 17, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.setMaxdepth = function(value) {
+ return jspb.Message.setOneofField(this, 17, proto.aurum.ReqFindElement.oneofGroups_[16], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearMaxdepth = function() {
+ return jspb.Message.setOneofField(this, 17, proto.aurum.ReqFindElement.oneofGroups_[16], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFindElement.prototype.hasMaxdepth = function() {
+ return jspb.Message.getField(this, 17) != null;
+};
+
+
+/**
+ * repeated ReqFindElement children = 18;
+ * @return {!Array}
+ */
+proto.aurum.ReqFindElement.prototype.getChildrenList = function() {
+ return /** @type{!Array} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.aurum.ReqFindElement, 18));
+};
+
+
+/**
+ * @param {!Array} value
+ * @return {!proto.aurum.ReqFindElement} returns this
+*/
+proto.aurum.ReqFindElement.prototype.setChildrenList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 18, value);
+};
+
+
+/**
+ * @param {!proto.aurum.ReqFindElement=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.aurum.ReqFindElement}
+ */
+proto.aurum.ReqFindElement.prototype.addChildren = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 18, opt_value, proto.aurum.ReqFindElement, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.aurum.ReqFindElement} returns this
+ */
+proto.aurum.ReqFindElement.prototype.clearChildrenList = function() {
+ return this.setChildrenList([]);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array}
+ * @const
+ */
+proto.aurum.RspFindElement.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspFindElement.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspFindElement.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspFindElement} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspFindElement.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ elementsList: jspb.Message.toObjectList(msg.getElementsList(),
+ proto.aurum.Element.toObject, includeInstance)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspFindElement}
+ */
+proto.aurum.RspFindElement.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspFindElement;
+ return proto.aurum.RspFindElement.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspFindElement} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspFindElement}
+ */
+proto.aurum.RspFindElement.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Element;
+ reader.readMessage(value,proto.aurum.Element.deserializeBinaryFromReader);
+ msg.addElements(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspFindElement.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspFindElement.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspFindElement} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspFindElement.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getElementsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 2,
+ f,
+ proto.aurum.Element.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspFindElement.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspFindElement} returns this
+ */
+proto.aurum.RspFindElement.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * repeated Element elements = 2;
+ * @return {!Array}
+ */
+proto.aurum.RspFindElement.prototype.getElementsList = function() {
+ return /** @type{!Array} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.aurum.Element, 2));
+};
+
+
+/**
+ * @param {!Array} value
+ * @return {!proto.aurum.RspFindElement} returns this
+*/
+proto.aurum.RspFindElement.prototype.setElementsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.aurum.Element=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.aurum.Element}
+ */
+proto.aurum.RspFindElement.prototype.addElements = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.aurum.Element, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.aurum.RspFindElement} returns this
+ */
+proto.aurum.RspFindElement.prototype.clearElementsList = function() {
+ return this.setElementsList([]);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqGetValue.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqGetValue.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqGetValue} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetValue.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqGetValue}
+ */
+proto.aurum.ReqGetValue.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqGetValue;
+ return proto.aurum.ReqGetValue.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqGetValue} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqGetValue}
+ */
+proto.aurum.ReqGetValue.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqGetValue.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqGetValue.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqGetValue} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetValue.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqGetValue.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqGetValue} returns this
+ */
+proto.aurum.ReqGetValue.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array>}
+ * @const
+ */
+proto.aurum.RspGetValue.oneofGroups_ = [[3,4,5,6]];
+
+/**
+ * @enum {number}
+ */
+proto.aurum.RspGetValue.ParamsCase = {
+ PARAMS_NOT_SET: 0,
+ STRINGVALUE: 3,
+ INTVALUE: 4,
+ DOUBLEVALUE: 5,
+ BOOLVALUE: 6
+};
+
+/**
+ * @return {proto.aurum.RspGetValue.ParamsCase}
+ */
+proto.aurum.RspGetValue.prototype.getParamsCase = function() {
+ return /** @type {proto.aurum.RspGetValue.ParamsCase} */(jspb.Message.computeOneofCase(this, proto.aurum.RspGetValue.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspGetValue.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspGetValue.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspGetValue} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetValue.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ type: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ stringvalue: jspb.Message.getFieldWithDefault(msg, 3, ""),
+ intvalue: jspb.Message.getFieldWithDefault(msg, 4, 0),
+ doublevalue: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),
+ boolvalue: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspGetValue}
+ */
+proto.aurum.RspGetValue.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspGetValue;
+ return proto.aurum.RspGetValue.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspGetValue} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspGetValue}
+ */
+proto.aurum.RspGetValue.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = /** @type {!proto.aurum.ParamType} */ (reader.readEnum());
+ msg.setType(value);
+ break;
+ case 3:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setStringvalue(value);
+ break;
+ case 4:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setIntvalue(value);
+ break;
+ case 5:
+ var value = /** @type {number} */ (reader.readDouble());
+ msg.setDoublevalue(value);
+ break;
+ case 6:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setBoolvalue(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspGetValue.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspGetValue.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspGetValue} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetValue.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getType();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 2,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 3));
+ if (f != null) {
+ writer.writeString(
+ 3,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 4));
+ if (f != null) {
+ writer.writeInt32(
+ 4,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 5));
+ if (f != null) {
+ writer.writeDouble(
+ 5,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 6));
+ if (f != null) {
+ writer.writeBool(
+ 6,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspGetValue.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional ParamType type = 2;
+ * @return {!proto.aurum.ParamType}
+ */
+proto.aurum.RspGetValue.prototype.getType = function() {
+ return /** @type {!proto.aurum.ParamType} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ParamType} value
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.setType = function(value) {
+ return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * optional string stringValue = 3;
+ * @return {string}
+ */
+proto.aurum.RspGetValue.prototype.getStringvalue = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.setStringvalue = function(value) {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.RspGetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.clearStringvalue = function() {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.RspGetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetValue.prototype.hasStringvalue = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional int32 intValue = 4;
+ * @return {number}
+ */
+proto.aurum.RspGetValue.prototype.getIntvalue = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.setIntvalue = function(value) {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.RspGetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.clearIntvalue = function() {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.RspGetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetValue.prototype.hasIntvalue = function() {
+ return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional double doubleValue = 5;
+ * @return {number}
+ */
+proto.aurum.RspGetValue.prototype.getDoublevalue = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.setDoublevalue = function(value) {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.RspGetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.clearDoublevalue = function() {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.RspGetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetValue.prototype.hasDoublevalue = function() {
+ return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional bool boolValue = 6;
+ * @return {boolean}
+ */
+proto.aurum.RspGetValue.prototype.getBoolvalue = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.setBoolvalue = function(value) {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.RspGetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetValue} returns this
+ */
+proto.aurum.RspGetValue.prototype.clearBoolvalue = function() {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.RspGetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetValue.prototype.hasBoolvalue = function() {
+ return jspb.Message.getField(this, 6) != null;
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array>}
+ * @const
+ */
+proto.aurum.ReqSetValue.oneofGroups_ = [[3,4,5,6]];
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqSetValue.ParamsCase = {
+ PARAMS_NOT_SET: 0,
+ STRINGVALUE: 3,
+ INTVALUE: 4,
+ DOUBLEVALUE: 5,
+ BOOLVALUE: 6
+};
+
+/**
+ * @return {proto.aurum.ReqSetValue.ParamsCase}
+ */
+proto.aurum.ReqSetValue.prototype.getParamsCase = function() {
+ return /** @type {proto.aurum.ReqSetValue.ParamsCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqSetValue.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqSetValue.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqSetValue.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqSetValue} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqSetValue.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+ type: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ stringvalue: jspb.Message.getFieldWithDefault(msg, 3, ""),
+ intvalue: jspb.Message.getFieldWithDefault(msg, 4, 0),
+ doublevalue: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),
+ boolvalue: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqSetValue}
+ */
+proto.aurum.ReqSetValue.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqSetValue;
+ return proto.aurum.ReqSetValue.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqSetValue} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqSetValue}
+ */
+proto.aurum.ReqSetValue.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ case 2:
+ var value = /** @type {!proto.aurum.ParamType} */ (reader.readEnum());
+ msg.setType(value);
+ break;
+ case 3:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setStringvalue(value);
+ break;
+ case 4:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setIntvalue(value);
+ break;
+ case 5:
+ var value = /** @type {number} */ (reader.readDouble());
+ msg.setDoublevalue(value);
+ break;
+ case 6:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setBoolvalue(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqSetValue.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqSetValue.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqSetValue} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqSetValue.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+ f = message.getType();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 2,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 3));
+ if (f != null) {
+ writer.writeString(
+ 3,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 4));
+ if (f != null) {
+ writer.writeInt32(
+ 4,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 5));
+ if (f != null) {
+ writer.writeDouble(
+ 5,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 6));
+ if (f != null) {
+ writer.writeBool(
+ 6,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqSetValue.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional ParamType type = 2;
+ * @return {!proto.aurum.ParamType}
+ */
+proto.aurum.ReqSetValue.prototype.getType = function() {
+ return /** @type {!proto.aurum.ParamType} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ParamType} value
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.setType = function(value) {
+ return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * optional string stringValue = 3;
+ * @return {string}
+ */
+proto.aurum.ReqSetValue.prototype.getStringvalue = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.setStringvalue = function(value) {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.ReqSetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.clearStringvalue = function() {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.ReqSetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqSetValue.prototype.hasStringvalue = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional int32 intValue = 4;
+ * @return {number}
+ */
+proto.aurum.ReqSetValue.prototype.getIntvalue = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.setIntvalue = function(value) {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.ReqSetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.clearIntvalue = function() {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.ReqSetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqSetValue.prototype.hasIntvalue = function() {
+ return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional double doubleValue = 5;
+ * @return {number}
+ */
+proto.aurum.ReqSetValue.prototype.getDoublevalue = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.setDoublevalue = function(value) {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.ReqSetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.clearDoublevalue = function() {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.ReqSetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqSetValue.prototype.hasDoublevalue = function() {
+ return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional bool boolValue = 6;
+ * @return {boolean}
+ */
+proto.aurum.ReqSetValue.prototype.getBoolvalue = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.setBoolvalue = function(value) {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.ReqSetValue.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqSetValue} returns this
+ */
+proto.aurum.ReqSetValue.prototype.clearBoolvalue = function() {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.ReqSetValue.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqSetValue.prototype.hasBoolvalue = function() {
+ return jspb.Message.getField(this, 6) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspSetValue.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspSetValue.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspSetValue} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspSetValue.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspSetValue}
+ */
+proto.aurum.RspSetValue.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspSetValue;
+ return proto.aurum.RspSetValue.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspSetValue} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspSetValue}
+ */
+proto.aurum.RspSetValue.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspSetValue.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspSetValue.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspSetValue} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspSetValue.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspSetValue.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspSetValue} returns this
+ */
+proto.aurum.RspSetValue.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqGetSize.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqGetSize.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqGetSize} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetSize.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqGetSize}
+ */
+proto.aurum.ReqGetSize.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqGetSize;
+ return proto.aurum.ReqGetSize.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqGetSize} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqGetSize}
+ */
+proto.aurum.ReqGetSize.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqGetSize.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqGetSize.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqGetSize} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetSize.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqGetSize.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqGetSize} returns this
+ */
+proto.aurum.ReqGetSize.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspGetSize.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspGetSize.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspGetSize} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetSize.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ size: (f = msg.getSize()) && proto.aurum.Rect.toObject(includeInstance, f)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspGetSize}
+ */
+proto.aurum.RspGetSize.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspGetSize;
+ return proto.aurum.RspGetSize.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspGetSize} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspGetSize}
+ */
+proto.aurum.RspGetSize.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Rect;
+ reader.readMessage(value,proto.aurum.Rect.deserializeBinaryFromReader);
+ msg.setSize(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspGetSize.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspGetSize.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspGetSize} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetSize.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getSize();
+ if (f != null) {
+ writer.writeMessage(
+ 2,
+ f,
+ proto.aurum.Rect.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspGetSize.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspGetSize} returns this
+ */
+proto.aurum.RspGetSize.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional Rect size = 2;
+ * @return {?proto.aurum.Rect}
+ */
+proto.aurum.RspGetSize.prototype.getSize = function() {
+ return /** @type{?proto.aurum.Rect} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Rect, 2));
+};
+
+
+/**
+ * @param {?proto.aurum.Rect|undefined} value
+ * @return {!proto.aurum.RspGetSize} returns this
+*/
+proto.aurum.RspGetSize.prototype.setSize = function(value) {
+ return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.RspGetSize} returns this
+ */
+proto.aurum.RspGetSize.prototype.clearSize = function() {
+ return this.setSize(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetSize.prototype.hasSize = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqClear.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqClear.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqClear} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqClear.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqClear}
+ */
+proto.aurum.ReqClear.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqClear;
+ return proto.aurum.ReqClear.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqClear} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqClear}
+ */
+proto.aurum.ReqClear.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqClear.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqClear.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqClear} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqClear.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqClear.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqClear} returns this
+ */
+proto.aurum.ReqClear.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspClear.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspClear.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspClear} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspClear.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspClear}
+ */
+proto.aurum.RspClear.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspClear;
+ return proto.aurum.RspClear.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspClear} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspClear}
+ */
+proto.aurum.RspClear.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspClear.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspClear.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspClear} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspClear.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspClear.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspClear} returns this
+ */
+proto.aurum.RspClear.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqGetAttribute.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqGetAttribute.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqGetAttribute} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetAttribute.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, ""),
+ attribute: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqGetAttribute}
+ */
+proto.aurum.ReqGetAttribute.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqGetAttribute;
+ return proto.aurum.ReqGetAttribute.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqGetAttribute} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqGetAttribute}
+ */
+proto.aurum.ReqGetAttribute.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ case 2:
+ var value = /** @type {!proto.aurum.ReqGetAttribute.RequestType} */ (reader.readEnum());
+ msg.setAttribute(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqGetAttribute.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqGetAttribute.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqGetAttribute} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetAttribute.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+ f = message.getAttribute();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqGetAttribute.RequestType = {
+ VISIBLE: 0,
+ FOCUSABLE: 1,
+ FOCUSED: 2,
+ ENABLED: 3,
+ CLICKABLE: 4,
+ SCROLLABLE: 5,
+ CHECKABLE: 6,
+ CHECKED: 7,
+ SELECTED: 8,
+ SELECTABLE: 9,
+ SHOWING: 10,
+ ACTIVE: 11
+};
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqGetAttribute.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqGetAttribute} returns this
+ */
+proto.aurum.ReqGetAttribute.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+/**
+ * optional RequestType attribute = 2;
+ * @return {!proto.aurum.ReqGetAttribute.RequestType}
+ */
+proto.aurum.ReqGetAttribute.prototype.getAttribute = function() {
+ return /** @type {!proto.aurum.ReqGetAttribute.RequestType} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ReqGetAttribute.RequestType} value
+ * @return {!proto.aurum.ReqGetAttribute} returns this
+ */
+proto.aurum.ReqGetAttribute.prototype.setAttribute = function(value) {
+ return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array>}
+ * @const
+ */
+proto.aurum.RspGetAttribute.oneofGroups_ = [[3,4,5,6]];
+
+/**
+ * @enum {number}
+ */
+proto.aurum.RspGetAttribute.ParamsCase = {
+ PARAMS_NOT_SET: 0,
+ STRINGVALUE: 3,
+ INTVALUE: 4,
+ DOUBLEVALUE: 5,
+ BOOLVALUE: 6
+};
+
+/**
+ * @return {proto.aurum.RspGetAttribute.ParamsCase}
+ */
+proto.aurum.RspGetAttribute.prototype.getParamsCase = function() {
+ return /** @type {proto.aurum.RspGetAttribute.ParamsCase} */(jspb.Message.computeOneofCase(this, proto.aurum.RspGetAttribute.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspGetAttribute.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspGetAttribute.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspGetAttribute} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetAttribute.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ type: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ stringvalue: jspb.Message.getFieldWithDefault(msg, 3, ""),
+ intvalue: jspb.Message.getFieldWithDefault(msg, 4, 0),
+ doublevalue: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),
+ boolvalue: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspGetAttribute}
+ */
+proto.aurum.RspGetAttribute.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspGetAttribute;
+ return proto.aurum.RspGetAttribute.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspGetAttribute} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspGetAttribute}
+ */
+proto.aurum.RspGetAttribute.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = /** @type {!proto.aurum.ParamType} */ (reader.readEnum());
+ msg.setType(value);
+ break;
+ case 3:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setStringvalue(value);
+ break;
+ case 4:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setIntvalue(value);
+ break;
+ case 5:
+ var value = /** @type {number} */ (reader.readDouble());
+ msg.setDoublevalue(value);
+ break;
+ case 6:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setBoolvalue(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspGetAttribute.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspGetAttribute.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspGetAttribute} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetAttribute.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getType();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 2,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 3));
+ if (f != null) {
+ writer.writeString(
+ 3,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 4));
+ if (f != null) {
+ writer.writeInt32(
+ 4,
+ f
+ );
+ }
+ f = /** @type {number} */ (jspb.Message.getField(message, 5));
+ if (f != null) {
+ writer.writeDouble(
+ 5,
+ f
+ );
+ }
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 6));
+ if (f != null) {
+ writer.writeBool(
+ 6,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspGetAttribute.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional ParamType type = 2;
+ * @return {!proto.aurum.ParamType}
+ */
+proto.aurum.RspGetAttribute.prototype.getType = function() {
+ return /** @type {!proto.aurum.ParamType} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ParamType} value
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.setType = function(value) {
+ return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * optional string stringValue = 3;
+ * @return {string}
+ */
+proto.aurum.RspGetAttribute.prototype.getStringvalue = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.setStringvalue = function(value) {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.RspGetAttribute.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.clearStringvalue = function() {
+ return jspb.Message.setOneofField(this, 3, proto.aurum.RspGetAttribute.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetAttribute.prototype.hasStringvalue = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+/**
+ * optional int32 intValue = 4;
+ * @return {number}
+ */
+proto.aurum.RspGetAttribute.prototype.getIntvalue = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.setIntvalue = function(value) {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.RspGetAttribute.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.clearIntvalue = function() {
+ return jspb.Message.setOneofField(this, 4, proto.aurum.RspGetAttribute.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetAttribute.prototype.hasIntvalue = function() {
+ return jspb.Message.getField(this, 4) != null;
+};
+
+
+/**
+ * optional double doubleValue = 5;
+ * @return {number}
+ */
+proto.aurum.RspGetAttribute.prototype.getDoublevalue = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.setDoublevalue = function(value) {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.RspGetAttribute.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.clearDoublevalue = function() {
+ return jspb.Message.setOneofField(this, 5, proto.aurum.RspGetAttribute.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetAttribute.prototype.hasDoublevalue = function() {
+ return jspb.Message.getField(this, 5) != null;
+};
+
+
+/**
+ * optional bool boolValue = 6;
+ * @return {boolean}
+ */
+proto.aurum.RspGetAttribute.prototype.getBoolvalue = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.setBoolvalue = function(value) {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.RspGetAttribute.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.RspGetAttribute} returns this
+ */
+proto.aurum.RspGetAttribute.prototype.clearBoolvalue = function() {
+ return jspb.Message.setOneofField(this, 6, proto.aurum.RspGetAttribute.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.RspGetAttribute.prototype.hasBoolvalue = function() {
+ return jspb.Message.getField(this, 6) != null;
+};
+
+
+
+/**
+ * Oneof group definitions for this message. Each group defines the field
+ * numbers belonging to that group. When of these fields' value is set, all
+ * other fields in the group are cleared. During deserialization, if multiple
+ * fields are encountered for a group, only the last value seen will be kept.
+ * @private {!Array>}
+ * @const
+ */
+proto.aurum.ReqClick.oneofGroups_ = [[2,3]];
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqClick.ParamsCase = {
+ PARAMS_NOT_SET: 0,
+ ELEMENTID: 2,
+ COORDINATION: 3
+};
+
+/**
+ * @return {proto.aurum.ReqClick.ParamsCase}
+ */
+proto.aurum.ReqClick.prototype.getParamsCase = function() {
+ return /** @type {proto.aurum.ReqClick.ParamsCase} */(jspb.Message.computeOneofCase(this, proto.aurum.ReqClick.oneofGroups_[0]));
+};
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqClick.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqClick.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqClick} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqClick.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ type: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ elementid: jspb.Message.getFieldWithDefault(msg, 2, ""),
+ coordination: (f = msg.getCoordination()) && proto.aurum.Point.toObject(includeInstance, f)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqClick}
+ */
+proto.aurum.ReqClick.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqClick;
+ return proto.aurum.ReqClick.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqClick} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqClick}
+ */
+proto.aurum.ReqClick.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.ReqClick.RequestType} */ (reader.readEnum());
+ msg.setType(value);
+ break;
+ case 2:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ case 3:
+ var value = new proto.aurum.Point;
+ reader.readMessage(value,proto.aurum.Point.deserializeBinaryFromReader);
+ msg.setCoordination(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqClick.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqClick.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqClick} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqClick.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getType();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = /** @type {string} */ (jspb.Message.getField(message, 2));
+ if (f != null) {
+ writer.writeString(
+ 2,
+ f
+ );
+ }
+ f = message.getCoordination();
+ if (f != null) {
+ writer.writeMessage(
+ 3,
+ f,
+ proto.aurum.Point.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqClick.RequestType = {
+ ELEMENTID: 0,
+ COORD: 1,
+ ATSPI: 2
+};
+
+/**
+ * optional RequestType type = 1;
+ * @return {!proto.aurum.ReqClick.RequestType}
+ */
+proto.aurum.ReqClick.prototype.getType = function() {
+ return /** @type {!proto.aurum.ReqClick.RequestType} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ReqClick.RequestType} value
+ * @return {!proto.aurum.ReqClick} returns this
+ */
+proto.aurum.ReqClick.prototype.setType = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional string elementId = 2;
+ * @return {string}
+ */
+proto.aurum.ReqClick.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqClick} returns this
+ */
+proto.aurum.ReqClick.prototype.setElementid = function(value) {
+ return jspb.Message.setOneofField(this, 2, proto.aurum.ReqClick.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the field making it undefined.
+ * @return {!proto.aurum.ReqClick} returns this
+ */
+proto.aurum.ReqClick.prototype.clearElementid = function() {
+ return jspb.Message.setOneofField(this, 2, proto.aurum.ReqClick.oneofGroups_[0], undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqClick.prototype.hasElementid = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional Point coordination = 3;
+ * @return {?proto.aurum.Point}
+ */
+proto.aurum.ReqClick.prototype.getCoordination = function() {
+ return /** @type{?proto.aurum.Point} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Point, 3));
+};
+
+
+/**
+ * @param {?proto.aurum.Point|undefined} value
+ * @return {!proto.aurum.ReqClick} returns this
+*/
+proto.aurum.ReqClick.prototype.setCoordination = function(value) {
+ return jspb.Message.setOneofWrapperField(this, 3, proto.aurum.ReqClick.oneofGroups_[0], value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.ReqClick} returns this
+ */
+proto.aurum.ReqClick.prototype.clearCoordination = function() {
+ return this.setCoordination(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqClick.prototype.hasCoordination = function() {
+ return jspb.Message.getField(this, 3) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspClick.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspClick.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspClick} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspClick.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspClick}
+ */
+proto.aurum.RspClick.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspClick;
+ return proto.aurum.RspClick.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspClick} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspClick}
+ */
+proto.aurum.RspClick.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspClick.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspClick.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspClick} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspClick.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspClick.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspClick} returns this
+ */
+proto.aurum.RspClick.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqFlick.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqFlick.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqFlick} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqFlick.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ startpoint: (f = msg.getStartpoint()) && proto.aurum.Point.toObject(includeInstance, f),
+ endpoint: (f = msg.getEndpoint()) && proto.aurum.Point.toObject(includeInstance, f),
+ durationms: jspb.Message.getFieldWithDefault(msg, 3, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqFlick}
+ */
+proto.aurum.ReqFlick.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqFlick;
+ return proto.aurum.ReqFlick.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqFlick} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqFlick}
+ */
+proto.aurum.ReqFlick.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = new proto.aurum.Point;
+ reader.readMessage(value,proto.aurum.Point.deserializeBinaryFromReader);
+ msg.setStartpoint(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Point;
+ reader.readMessage(value,proto.aurum.Point.deserializeBinaryFromReader);
+ msg.setEndpoint(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setDurationms(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqFlick.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqFlick.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqFlick} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqFlick.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStartpoint();
+ if (f != null) {
+ writer.writeMessage(
+ 1,
+ f,
+ proto.aurum.Point.serializeBinaryToWriter
+ );
+ }
+ f = message.getEndpoint();
+ if (f != null) {
+ writer.writeMessage(
+ 2,
+ f,
+ proto.aurum.Point.serializeBinaryToWriter
+ );
+ }
+ f = message.getDurationms();
+ if (f !== 0) {
+ writer.writeInt32(
+ 3,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional Point startPoint = 1;
+ * @return {?proto.aurum.Point}
+ */
+proto.aurum.ReqFlick.prototype.getStartpoint = function() {
+ return /** @type{?proto.aurum.Point} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Point, 1));
+};
+
+
+/**
+ * @param {?proto.aurum.Point|undefined} value
+ * @return {!proto.aurum.ReqFlick} returns this
+*/
+proto.aurum.ReqFlick.prototype.setStartpoint = function(value) {
+ return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.ReqFlick} returns this
+ */
+proto.aurum.ReqFlick.prototype.clearStartpoint = function() {
+ return this.setStartpoint(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFlick.prototype.hasStartpoint = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+/**
+ * optional Point endPoint = 2;
+ * @return {?proto.aurum.Point}
+ */
+proto.aurum.ReqFlick.prototype.getEndpoint = function() {
+ return /** @type{?proto.aurum.Point} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Point, 2));
+};
+
+
+/**
+ * @param {?proto.aurum.Point|undefined} value
+ * @return {!proto.aurum.ReqFlick} returns this
+*/
+proto.aurum.ReqFlick.prototype.setEndpoint = function(value) {
+ return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.ReqFlick} returns this
+ */
+proto.aurum.ReqFlick.prototype.clearEndpoint = function() {
+ return this.setEndpoint(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqFlick.prototype.hasEndpoint = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+/**
+ * optional int32 durationMs = 3;
+ * @return {number}
+ */
+proto.aurum.ReqFlick.prototype.getDurationms = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqFlick} returns this
+ */
+proto.aurum.ReqFlick.prototype.setDurationms = function(value) {
+ return jspb.Message.setProto3IntField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspFlick.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspFlick.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspFlick} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspFlick.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspFlick}
+ */
+proto.aurum.RspFlick.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspFlick;
+ return proto.aurum.RspFlick.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspFlick} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspFlick}
+ */
+proto.aurum.RspFlick.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspFlick.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspFlick.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspFlick} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspFlick.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspFlick.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspFlick} returns this
+ */
+proto.aurum.RspFlick.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqTouchDown.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqTouchDown.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqTouchDown} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTouchDown.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ coordination: (f = msg.getCoordination()) && proto.aurum.Point.toObject(includeInstance, f)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqTouchDown}
+ */
+proto.aurum.ReqTouchDown.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqTouchDown;
+ return proto.aurum.ReqTouchDown.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqTouchDown} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqTouchDown}
+ */
+proto.aurum.ReqTouchDown.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = new proto.aurum.Point;
+ reader.readMessage(value,proto.aurum.Point.deserializeBinaryFromReader);
+ msg.setCoordination(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqTouchDown.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqTouchDown.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqTouchDown} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTouchDown.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getCoordination();
+ if (f != null) {
+ writer.writeMessage(
+ 1,
+ f,
+ proto.aurum.Point.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional Point coordination = 1;
+ * @return {?proto.aurum.Point}
+ */
+proto.aurum.ReqTouchDown.prototype.getCoordination = function() {
+ return /** @type{?proto.aurum.Point} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Point, 1));
+};
+
+
+/**
+ * @param {?proto.aurum.Point|undefined} value
+ * @return {!proto.aurum.ReqTouchDown} returns this
+*/
+proto.aurum.ReqTouchDown.prototype.setCoordination = function(value) {
+ return jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.ReqTouchDown} returns this
+ */
+proto.aurum.ReqTouchDown.prototype.clearCoordination = function() {
+ return this.setCoordination(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqTouchDown.prototype.hasCoordination = function() {
+ return jspb.Message.getField(this, 1) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspTouchDown.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspTouchDown.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspTouchDown} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTouchDown.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ seqid: jspb.Message.getFieldWithDefault(msg, 2, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspTouchDown}
+ */
+proto.aurum.RspTouchDown.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspTouchDown;
+ return proto.aurum.RspTouchDown.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspTouchDown} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspTouchDown}
+ */
+proto.aurum.RspTouchDown.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setSeqid(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspTouchDown.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspTouchDown.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspTouchDown} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTouchDown.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getSeqid();
+ if (f !== 0) {
+ writer.writeInt32(
+ 2,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspTouchDown.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspTouchDown} returns this
+ */
+proto.aurum.RspTouchDown.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional int32 seqId = 2;
+ * @return {number}
+ */
+proto.aurum.RspTouchDown.prototype.getSeqid = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspTouchDown} returns this
+ */
+proto.aurum.RspTouchDown.prototype.setSeqid = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqTouchMove.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqTouchMove.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqTouchMove} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTouchMove.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ seqid: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ coordination: (f = msg.getCoordination()) && proto.aurum.Point.toObject(includeInstance, f)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqTouchMove}
+ */
+proto.aurum.ReqTouchMove.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqTouchMove;
+ return proto.aurum.ReqTouchMove.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqTouchMove} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqTouchMove}
+ */
+proto.aurum.ReqTouchMove.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setSeqid(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Point;
+ reader.readMessage(value,proto.aurum.Point.deserializeBinaryFromReader);
+ msg.setCoordination(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqTouchMove.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqTouchMove.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqTouchMove} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTouchMove.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getSeqid();
+ if (f !== 0) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = message.getCoordination();
+ if (f != null) {
+ writer.writeMessage(
+ 2,
+ f,
+ proto.aurum.Point.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional int32 seqId = 1;
+ * @return {number}
+ */
+proto.aurum.ReqTouchMove.prototype.getSeqid = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqTouchMove} returns this
+ */
+proto.aurum.ReqTouchMove.prototype.setSeqid = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional Point coordination = 2;
+ * @return {?proto.aurum.Point}
+ */
+proto.aurum.ReqTouchMove.prototype.getCoordination = function() {
+ return /** @type{?proto.aurum.Point} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Point, 2));
+};
+
+
+/**
+ * @param {?proto.aurum.Point|undefined} value
+ * @return {!proto.aurum.ReqTouchMove} returns this
+*/
+proto.aurum.ReqTouchMove.prototype.setCoordination = function(value) {
+ return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.ReqTouchMove} returns this
+ */
+proto.aurum.ReqTouchMove.prototype.clearCoordination = function() {
+ return this.setCoordination(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqTouchMove.prototype.hasCoordination = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspTouchMove.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspTouchMove.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspTouchMove} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTouchMove.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspTouchMove}
+ */
+proto.aurum.RspTouchMove.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspTouchMove;
+ return proto.aurum.RspTouchMove.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspTouchMove} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspTouchMove}
+ */
+proto.aurum.RspTouchMove.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspTouchMove.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspTouchMove.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspTouchMove} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTouchMove.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspTouchMove.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspTouchMove} returns this
+ */
+proto.aurum.RspTouchMove.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqTouchUp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqTouchUp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqTouchUp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTouchUp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ seqid: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ coordination: (f = msg.getCoordination()) && proto.aurum.Point.toObject(includeInstance, f)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqTouchUp}
+ */
+proto.aurum.ReqTouchUp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqTouchUp;
+ return proto.aurum.ReqTouchUp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqTouchUp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqTouchUp}
+ */
+proto.aurum.ReqTouchUp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {number} */ (reader.readInt32());
+ msg.setSeqid(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Point;
+ reader.readMessage(value,proto.aurum.Point.deserializeBinaryFromReader);
+ msg.setCoordination(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqTouchUp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqTouchUp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqTouchUp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTouchUp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getSeqid();
+ if (f !== 0) {
+ writer.writeInt32(
+ 1,
+ f
+ );
+ }
+ f = message.getCoordination();
+ if (f != null) {
+ writer.writeMessage(
+ 2,
+ f,
+ proto.aurum.Point.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional int32 seqId = 1;
+ * @return {number}
+ */
+proto.aurum.ReqTouchUp.prototype.getSeqid = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.ReqTouchUp} returns this
+ */
+proto.aurum.ReqTouchUp.prototype.setSeqid = function(value) {
+ return jspb.Message.setProto3IntField(this, 1, value);
+};
+
+
+/**
+ * optional Point coordination = 2;
+ * @return {?proto.aurum.Point}
+ */
+proto.aurum.ReqTouchUp.prototype.getCoordination = function() {
+ return /** @type{?proto.aurum.Point} */ (
+ jspb.Message.getWrapperField(this, proto.aurum.Point, 2));
+};
+
+
+/**
+ * @param {?proto.aurum.Point|undefined} value
+ * @return {!proto.aurum.ReqTouchUp} returns this
+*/
+proto.aurum.ReqTouchUp.prototype.setCoordination = function(value) {
+ return jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+/**
+ * Clears the message field making it undefined.
+ * @return {!proto.aurum.ReqTouchUp} returns this
+ */
+proto.aurum.ReqTouchUp.prototype.clearCoordination = function() {
+ return this.setCoordination(undefined);
+};
+
+
+/**
+ * Returns whether this field is set.
+ * @return {boolean}
+ */
+proto.aurum.ReqTouchUp.prototype.hasCoordination = function() {
+ return jspb.Message.getField(this, 2) != null;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspTouchUp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspTouchUp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspTouchUp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTouchUp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspTouchUp}
+ */
+proto.aurum.RspTouchUp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspTouchUp;
+ return proto.aurum.RspTouchUp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspTouchUp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspTouchUp}
+ */
+proto.aurum.RspTouchUp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspTouchUp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspTouchUp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspTouchUp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTouchUp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspTouchUp.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspTouchUp} returns this
+ */
+proto.aurum.RspTouchUp.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqInstallApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqInstallApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqInstallApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqInstallApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ pb_package: msg.getPackage_asB64()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqInstallApp}
+ */
+proto.aurum.ReqInstallApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqInstallApp;
+ return proto.aurum.ReqInstallApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqInstallApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqInstallApp}
+ */
+proto.aurum.ReqInstallApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!Uint8Array} */ (reader.readBytes());
+ msg.setPackage(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqInstallApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqInstallApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqInstallApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqInstallApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getPackage_asU8();
+ if (f.length > 0) {
+ writer.writeBytes(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional bytes package = 1;
+ * @return {!(string|Uint8Array)}
+ */
+proto.aurum.ReqInstallApp.prototype.getPackage = function() {
+ return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * optional bytes package = 1;
+ * This is a type-conversion wrapper around `getPackage()`
+ * @return {string}
+ */
+proto.aurum.ReqInstallApp.prototype.getPackage_asB64 = function() {
+ return /** @type {string} */ (jspb.Message.bytesAsB64(
+ this.getPackage()));
+};
+
+
+/**
+ * optional bytes package = 1;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getPackage()`
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqInstallApp.prototype.getPackage_asU8 = function() {
+ return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+ this.getPackage()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.aurum.ReqInstallApp} returns this
+ */
+proto.aurum.ReqInstallApp.prototype.setPackage = function(value) {
+ return jspb.Message.setProto3BytesField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspInstallApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspInstallApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspInstallApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspInstallApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspInstallApp}
+ */
+proto.aurum.RspInstallApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspInstallApp;
+ return proto.aurum.RspInstallApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspInstallApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspInstallApp}
+ */
+proto.aurum.RspInstallApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspInstallApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspInstallApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspInstallApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspInstallApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspInstallApp.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspInstallApp} returns this
+ */
+proto.aurum.RspInstallApp.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqRemoveApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqRemoveApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqRemoveApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqRemoveApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ packagename: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqRemoveApp}
+ */
+proto.aurum.ReqRemoveApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqRemoveApp;
+ return proto.aurum.ReqRemoveApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqRemoveApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqRemoveApp}
+ */
+proto.aurum.ReqRemoveApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setPackagename(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqRemoveApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqRemoveApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqRemoveApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqRemoveApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getPackagename();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string packageName = 1;
+ * @return {string}
+ */
+proto.aurum.ReqRemoveApp.prototype.getPackagename = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqRemoveApp} returns this
+ */
+proto.aurum.ReqRemoveApp.prototype.setPackagename = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspRemoveApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspRemoveApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspRemoveApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspRemoveApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspRemoveApp}
+ */
+proto.aurum.RspRemoveApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspRemoveApp;
+ return proto.aurum.RspRemoveApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspRemoveApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspRemoveApp}
+ */
+proto.aurum.RspRemoveApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspRemoveApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspRemoveApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspRemoveApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspRemoveApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspRemoveApp.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspRemoveApp} returns this
+ */
+proto.aurum.RspRemoveApp.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqGetAppInfo.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqGetAppInfo.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqGetAppInfo} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetAppInfo.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ packagename: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqGetAppInfo}
+ */
+proto.aurum.ReqGetAppInfo.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqGetAppInfo;
+ return proto.aurum.ReqGetAppInfo.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqGetAppInfo} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqGetAppInfo}
+ */
+proto.aurum.ReqGetAppInfo.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setPackagename(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqGetAppInfo.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqGetAppInfo.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqGetAppInfo} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetAppInfo.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getPackagename();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string packageName = 1;
+ * @return {string}
+ */
+proto.aurum.ReqGetAppInfo.prototype.getPackagename = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqGetAppInfo} returns this
+ */
+proto.aurum.ReqGetAppInfo.prototype.setPackagename = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspGetAppInfo.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspGetAppInfo.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspGetAppInfo} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetAppInfo.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ isinstalled: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),
+ isrunning: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),
+ isfocused: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspGetAppInfo}
+ */
+proto.aurum.RspGetAppInfo.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspGetAppInfo;
+ return proto.aurum.RspGetAppInfo.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspGetAppInfo} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspGetAppInfo}
+ */
+proto.aurum.RspGetAppInfo.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsinstalled(value);
+ break;
+ case 3:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsrunning(value);
+ break;
+ case 4:
+ var value = /** @type {boolean} */ (reader.readBool());
+ msg.setIsfocused(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspGetAppInfo.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspGetAppInfo.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspGetAppInfo} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetAppInfo.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getIsinstalled();
+ if (f) {
+ writer.writeBool(
+ 2,
+ f
+ );
+ }
+ f = message.getIsrunning();
+ if (f) {
+ writer.writeBool(
+ 3,
+ f
+ );
+ }
+ f = message.getIsfocused();
+ if (f) {
+ writer.writeBool(
+ 4,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspGetAppInfo.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspGetAppInfo} returns this
+ */
+proto.aurum.RspGetAppInfo.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional bool isInstalled = 2;
+ * @return {boolean}
+ */
+proto.aurum.RspGetAppInfo.prototype.getIsinstalled = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.RspGetAppInfo} returns this
+ */
+proto.aurum.RspGetAppInfo.prototype.setIsinstalled = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 2, value);
+};
+
+
+/**
+ * optional bool isRunning = 3;
+ * @return {boolean}
+ */
+proto.aurum.RspGetAppInfo.prototype.getIsrunning = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.RspGetAppInfo} returns this
+ */
+proto.aurum.RspGetAppInfo.prototype.setIsrunning = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 3, value);
+};
+
+
+/**
+ * optional bool isFocused = 4;
+ * @return {boolean}
+ */
+proto.aurum.RspGetAppInfo.prototype.getIsfocused = function() {
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));
+};
+
+
+/**
+ * @param {boolean} value
+ * @return {!proto.aurum.RspGetAppInfo} returns this
+ */
+proto.aurum.RspGetAppInfo.prototype.setIsfocused = function(value) {
+ return jspb.Message.setProto3BooleanField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqLaunchApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqLaunchApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqLaunchApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqLaunchApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ packagename: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqLaunchApp}
+ */
+proto.aurum.ReqLaunchApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqLaunchApp;
+ return proto.aurum.ReqLaunchApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqLaunchApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqLaunchApp}
+ */
+proto.aurum.ReqLaunchApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setPackagename(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqLaunchApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqLaunchApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqLaunchApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqLaunchApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getPackagename();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string packageName = 1;
+ * @return {string}
+ */
+proto.aurum.ReqLaunchApp.prototype.getPackagename = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqLaunchApp} returns this
+ */
+proto.aurum.ReqLaunchApp.prototype.setPackagename = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspLaunchApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspLaunchApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspLaunchApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspLaunchApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspLaunchApp}
+ */
+proto.aurum.RspLaunchApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspLaunchApp;
+ return proto.aurum.RspLaunchApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspLaunchApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspLaunchApp}
+ */
+proto.aurum.RspLaunchApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspLaunchApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspLaunchApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspLaunchApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspLaunchApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspLaunchApp.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspLaunchApp} returns this
+ */
+proto.aurum.RspLaunchApp.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqCloseApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqCloseApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqCloseApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqCloseApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ packagename: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqCloseApp}
+ */
+proto.aurum.ReqCloseApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqCloseApp;
+ return proto.aurum.ReqCloseApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqCloseApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqCloseApp}
+ */
+proto.aurum.ReqCloseApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setPackagename(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqCloseApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqCloseApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqCloseApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqCloseApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getPackagename();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string packageName = 1;
+ * @return {string}
+ */
+proto.aurum.ReqCloseApp.prototype.getPackagename = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqCloseApp} returns this
+ */
+proto.aurum.ReqCloseApp.prototype.setPackagename = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspCloseApp.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspCloseApp.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspCloseApp} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspCloseApp.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspCloseApp}
+ */
+proto.aurum.RspCloseApp.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspCloseApp;
+ return proto.aurum.RspCloseApp.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspCloseApp} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspCloseApp}
+ */
+proto.aurum.RspCloseApp.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspCloseApp.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspCloseApp.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspCloseApp} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspCloseApp.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspCloseApp.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspCloseApp} returns this
+ */
+proto.aurum.RspCloseApp.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqGetDeviceTime.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqGetDeviceTime.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqGetDeviceTime} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetDeviceTime.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ type: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqGetDeviceTime}
+ */
+proto.aurum.ReqGetDeviceTime.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqGetDeviceTime;
+ return proto.aurum.ReqGetDeviceTime.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqGetDeviceTime} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqGetDeviceTime}
+ */
+proto.aurum.ReqGetDeviceTime.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.ReqGetDeviceTime.TimeType} */ (reader.readEnum());
+ msg.setType(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqGetDeviceTime.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqGetDeviceTime.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqGetDeviceTime} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetDeviceTime.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getType();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqGetDeviceTime.TimeType = {
+ WALLCLOCK: 0,
+ SYSTEM: 1
+};
+
+/**
+ * optional TimeType type = 1;
+ * @return {!proto.aurum.ReqGetDeviceTime.TimeType}
+ */
+proto.aurum.ReqGetDeviceTime.prototype.getType = function() {
+ return /** @type {!proto.aurum.ReqGetDeviceTime.TimeType} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ReqGetDeviceTime.TimeType} value
+ * @return {!proto.aurum.ReqGetDeviceTime} returns this
+ */
+proto.aurum.ReqGetDeviceTime.prototype.setType = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspGetDeviceTime.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspGetDeviceTime.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspGetDeviceTime} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetDeviceTime.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ timestamputc: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ localedatetime: jspb.Message.getFieldWithDefault(msg, 3, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspGetDeviceTime}
+ */
+proto.aurum.RspGetDeviceTime.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspGetDeviceTime;
+ return proto.aurum.RspGetDeviceTime.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspGetDeviceTime} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspGetDeviceTime}
+ */
+proto.aurum.RspGetDeviceTime.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readInt64());
+ msg.setTimestamputc(value);
+ break;
+ case 3:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setLocaledatetime(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspGetDeviceTime.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspGetDeviceTime.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspGetDeviceTime} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetDeviceTime.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getTimestamputc();
+ if (f !== 0) {
+ writer.writeInt64(
+ 2,
+ f
+ );
+ }
+ f = message.getLocaledatetime();
+ if (f.length > 0) {
+ writer.writeString(
+ 3,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspGetDeviceTime.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspGetDeviceTime} returns this
+ */
+proto.aurum.RspGetDeviceTime.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional int64 timestampUTC = 2;
+ * @return {number}
+ */
+proto.aurum.RspGetDeviceTime.prototype.getTimestamputc = function() {
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetDeviceTime} returns this
+ */
+proto.aurum.RspGetDeviceTime.prototype.setTimestamputc = function(value) {
+ return jspb.Message.setProto3IntField(this, 2, value);
+};
+
+
+/**
+ * optional string localeDatetime = 3;
+ * @return {string}
+ */
+proto.aurum.RspGetDeviceTime.prototype.getLocaledatetime = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.RspGetDeviceTime} returns this
+ */
+proto.aurum.RspGetDeviceTime.prototype.setLocaledatetime = function(value) {
+ return jspb.Message.setProto3StringField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqGetLocation.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqGetLocation.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqGetLocation} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetLocation.toObject = function(includeInstance, msg) {
+ var f, obj = {
+
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqGetLocation}
+ */
+proto.aurum.ReqGetLocation.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqGetLocation;
+ return proto.aurum.ReqGetLocation.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqGetLocation} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqGetLocation}
+ */
+proto.aurum.ReqGetLocation.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqGetLocation.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqGetLocation.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqGetLocation} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqGetLocation.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspGetLocation.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspGetLocation.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspGetLocation} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetLocation.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ alt: jspb.Message.getFloatingPointFieldWithDefault(msg, 2, 0.0),
+ lat: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspGetLocation}
+ */
+proto.aurum.RspGetLocation.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspGetLocation;
+ return proto.aurum.RspGetLocation.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspGetLocation} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspGetLocation}
+ */
+proto.aurum.RspGetLocation.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = /** @type {number} */ (reader.readDouble());
+ msg.setAlt(value);
+ break;
+ case 3:
+ var value = /** @type {number} */ (reader.readDouble());
+ msg.setLat(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspGetLocation.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspGetLocation.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspGetLocation} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspGetLocation.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getAlt();
+ if (f !== 0.0) {
+ writer.writeDouble(
+ 2,
+ f
+ );
+ }
+ f = message.getLat();
+ if (f !== 0.0) {
+ writer.writeDouble(
+ 3,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspGetLocation.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspGetLocation} returns this
+ */
+proto.aurum.RspGetLocation.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional double alt = 2;
+ * @return {number}
+ */
+proto.aurum.RspGetLocation.prototype.getAlt = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 2, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetLocation} returns this
+ */
+proto.aurum.RspGetLocation.prototype.setAlt = function(value) {
+ return jspb.Message.setProto3FloatField(this, 2, value);
+};
+
+
+/**
+ * optional double lat = 3;
+ * @return {number}
+ */
+proto.aurum.RspGetLocation.prototype.getLat = function() {
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0));
+};
+
+
+/**
+ * @param {number} value
+ * @return {!proto.aurum.RspGetLocation} returns this
+ */
+proto.aurum.RspGetLocation.prototype.setLat = function(value) {
+ return jspb.Message.setProto3FloatField(this, 3, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqKey.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqKey.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqKey} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqKey.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ type: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ actiontype: jspb.Message.getFieldWithDefault(msg, 2, 0),
+ xf86keycode: jspb.Message.getFieldWithDefault(msg, 4, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqKey}
+ */
+proto.aurum.ReqKey.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqKey;
+ return proto.aurum.ReqKey.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqKey} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqKey}
+ */
+proto.aurum.ReqKey.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.ReqKey.KeyType} */ (reader.readEnum());
+ msg.setType(value);
+ break;
+ case 2:
+ var value = /** @type {!proto.aurum.ReqKey.KeyActionType} */ (reader.readEnum());
+ msg.setActiontype(value);
+ break;
+ case 4:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setXf86keycode(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqKey.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqKey.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqKey} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqKey.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getType();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getActiontype();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 2,
+ f
+ );
+ }
+ f = message.getXf86keycode();
+ if (f.length > 0) {
+ writer.writeString(
+ 4,
+ f
+ );
+ }
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqKey.KeyType = {
+ BACK: 0,
+ MENU: 1,
+ HOME: 2,
+ VOLUP: 3,
+ VOLDOWN: 4,
+ POWER: 5,
+ XF86: 7,
+ WHEELUP: 8,
+ WHEELDOWN: 9
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ReqKey.KeyActionType = {
+ STROKE: 0,
+ LONG_STROKE: 1,
+ PRESS: 2,
+ RELEASE: 3
+};
+
+/**
+ * optional KeyType type = 1;
+ * @return {!proto.aurum.ReqKey.KeyType}
+ */
+proto.aurum.ReqKey.prototype.getType = function() {
+ return /** @type {!proto.aurum.ReqKey.KeyType} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ReqKey.KeyType} value
+ * @return {!proto.aurum.ReqKey} returns this
+ */
+proto.aurum.ReqKey.prototype.setType = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * optional KeyActionType actionType = 2;
+ * @return {!proto.aurum.ReqKey.KeyActionType}
+ */
+proto.aurum.ReqKey.prototype.getActiontype = function() {
+ return /** @type {!proto.aurum.ReqKey.KeyActionType} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.ReqKey.KeyActionType} value
+ * @return {!proto.aurum.ReqKey} returns this
+ */
+proto.aurum.ReqKey.prototype.setActiontype = function(value) {
+ return jspb.Message.setProto3EnumField(this, 2, value);
+};
+
+
+/**
+ * optional string XF86keyCode = 4;
+ * @return {string}
+ */
+proto.aurum.ReqKey.prototype.getXf86keycode = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqKey} returns this
+ */
+proto.aurum.ReqKey.prototype.setXf86keycode = function(value) {
+ return jspb.Message.setProto3StringField(this, 4, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspKey.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspKey.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspKey} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspKey.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspKey}
+ */
+proto.aurum.RspKey.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspKey;
+ return proto.aurum.RspKey.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspKey} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspKey}
+ */
+proto.aurum.RspKey.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspKey.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspKey.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspKey} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspKey.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspKey.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspKey} returns this
+ */
+proto.aurum.RspKey.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqTakeScreenshot.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqTakeScreenshot.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqTakeScreenshot} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTakeScreenshot.toObject = function(includeInstance, msg) {
+ var f, obj = {
+
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqTakeScreenshot}
+ */
+proto.aurum.ReqTakeScreenshot.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqTakeScreenshot;
+ return proto.aurum.ReqTakeScreenshot.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqTakeScreenshot} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqTakeScreenshot}
+ */
+proto.aurum.ReqTakeScreenshot.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqTakeScreenshot.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqTakeScreenshot.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqTakeScreenshot} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqTakeScreenshot.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspTakeScreenshot.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspTakeScreenshot.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspTakeScreenshot} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTakeScreenshot.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ image: msg.getImage_asB64()
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspTakeScreenshot}
+ */
+proto.aurum.RspTakeScreenshot.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspTakeScreenshot;
+ return proto.aurum.RspTakeScreenshot.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspTakeScreenshot} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspTakeScreenshot}
+ */
+proto.aurum.RspTakeScreenshot.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!Uint8Array} */ (reader.readBytes());
+ msg.setImage(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspTakeScreenshot.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspTakeScreenshot.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspTakeScreenshot} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspTakeScreenshot.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getImage_asU8();
+ if (f.length > 0) {
+ writer.writeBytes(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional bytes image = 1;
+ * @return {!(string|Uint8Array)}
+ */
+proto.aurum.RspTakeScreenshot.prototype.getImage = function() {
+ return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * optional bytes image = 1;
+ * This is a type-conversion wrapper around `getImage()`
+ * @return {string}
+ */
+proto.aurum.RspTakeScreenshot.prototype.getImage_asB64 = function() {
+ return /** @type {string} */ (jspb.Message.bytesAsB64(
+ this.getImage()));
+};
+
+
+/**
+ * optional bytes image = 1;
+ * Note that Uint8Array is not supported on all browsers.
+ * @see http://caniuse.com/Uint8Array
+ * This is a type-conversion wrapper around `getImage()`
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspTakeScreenshot.prototype.getImage_asU8 = function() {
+ return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
+ this.getImage()));
+};
+
+
+/**
+ * @param {!(string|Uint8Array)} value
+ * @return {!proto.aurum.RspTakeScreenshot} returns this
+ */
+proto.aurum.RspTakeScreenshot.prototype.setImage = function(value) {
+ return jspb.Message.setProto3BytesField(this, 1, value);
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqEmpty.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqEmpty.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqEmpty} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqEmpty.toObject = function(includeInstance, msg) {
+ var f, obj = {
+
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqEmpty}
+ */
+proto.aurum.ReqEmpty.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqEmpty;
+ return proto.aurum.ReqEmpty.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqEmpty} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqEmpty}
+ */
+proto.aurum.ReqEmpty.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqEmpty.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqEmpty.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqEmpty} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqEmpty.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspEmpty.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspEmpty.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspEmpty} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspEmpty.toObject = function(includeInstance, msg) {
+ var f, obj = {
+
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspEmpty}
+ */
+proto.aurum.RspEmpty.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspEmpty;
+ return proto.aurum.RspEmpty.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspEmpty} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspEmpty}
+ */
+proto.aurum.RspEmpty.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspEmpty.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspEmpty.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspEmpty} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspEmpty.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+};
+
+
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.ReqDumpObjectTree.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.ReqDumpObjectTree.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.ReqDumpObjectTree} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqDumpObjectTree.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ elementid: jspb.Message.getFieldWithDefault(msg, 1, "")
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.ReqDumpObjectTree}
+ */
+proto.aurum.ReqDumpObjectTree.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.ReqDumpObjectTree;
+ return proto.aurum.ReqDumpObjectTree.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.ReqDumpObjectTree} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.ReqDumpObjectTree}
+ */
+proto.aurum.ReqDumpObjectTree.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.setElementid(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.ReqDumpObjectTree.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.ReqDumpObjectTree.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.ReqDumpObjectTree} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.ReqDumpObjectTree.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getElementid();
+ if (f.length > 0) {
+ writer.writeString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * optional string elementId = 1;
+ * @return {string}
+ */
+proto.aurum.ReqDumpObjectTree.prototype.getElementid = function() {
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
+};
+
+
+/**
+ * @param {string} value
+ * @return {!proto.aurum.ReqDumpObjectTree} returns this
+ */
+proto.aurum.ReqDumpObjectTree.prototype.setElementid = function(value) {
+ return jspb.Message.setProto3StringField(this, 1, value);
+};
+
+
+
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array}
+ * @const
+ */
+proto.aurum.RspDumpObjectTree.repeatedFields_ = [2];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * Optional fields that are not set will be set to undefined.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
+ * JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.aurum.RspDumpObjectTree.prototype.toObject = function(opt_includeInstance) {
+ return proto.aurum.RspDumpObjectTree.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
+ * the JSPB instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.aurum.RspDumpObjectTree} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspDumpObjectTree.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ status: jspb.Message.getFieldWithDefault(msg, 1, 0),
+ rootsList: jspb.Message.toObjectList(msg.getRootsList(),
+ proto.aurum.Element.toObject, includeInstance)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.aurum.RspDumpObjectTree}
+ */
+proto.aurum.RspDumpObjectTree.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.aurum.RspDumpObjectTree;
+ return proto.aurum.RspDumpObjectTree.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.aurum.RspDumpObjectTree} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.aurum.RspDumpObjectTree}
+ */
+proto.aurum.RspDumpObjectTree.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {!proto.aurum.RspStatus} */ (reader.readEnum());
+ msg.setStatus(value);
+ break;
+ case 2:
+ var value = new proto.aurum.Element;
+ reader.readMessage(value,proto.aurum.Element.deserializeBinaryFromReader);
+ msg.addRoots(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.aurum.RspDumpObjectTree.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.aurum.RspDumpObjectTree.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.aurum.RspDumpObjectTree} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.aurum.RspDumpObjectTree.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getStatus();
+ if (f !== 0.0) {
+ writer.writeEnum(
+ 1,
+ f
+ );
+ }
+ f = message.getRootsList();
+ if (f.length > 0) {
+ writer.writeRepeatedMessage(
+ 2,
+ f,
+ proto.aurum.Element.serializeBinaryToWriter
+ );
+ }
+};
+
+
+/**
+ * optional RspStatus status = 1;
+ * @return {!proto.aurum.RspStatus}
+ */
+proto.aurum.RspDumpObjectTree.prototype.getStatus = function() {
+ return /** @type {!proto.aurum.RspStatus} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
+};
+
+
+/**
+ * @param {!proto.aurum.RspStatus} value
+ * @return {!proto.aurum.RspDumpObjectTree} returns this
+ */
+proto.aurum.RspDumpObjectTree.prototype.setStatus = function(value) {
+ return jspb.Message.setProto3EnumField(this, 1, value);
+};
+
+
+/**
+ * repeated Element roots = 2;
+ * @return {!Array}
+ */
+proto.aurum.RspDumpObjectTree.prototype.getRootsList = function() {
+ return /** @type{!Array} */ (
+ jspb.Message.getRepeatedWrapperField(this, proto.aurum.Element, 2));
+};
+
+
+/**
+ * @param {!Array} value
+ * @return {!proto.aurum.RspDumpObjectTree} returns this
+*/
+proto.aurum.RspDumpObjectTree.prototype.setRootsList = function(value) {
+ return jspb.Message.setRepeatedWrapperField(this, 2, value);
+};
+
+
+/**
+ * @param {!proto.aurum.Element=} opt_value
+ * @param {number=} opt_index
+ * @return {!proto.aurum.Element}
+ */
+proto.aurum.RspDumpObjectTree.prototype.addRoots = function(opt_value, opt_index) {
+ return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.aurum.Element, opt_index);
+};
+
+
+/**
+ * Clears the list making it empty but non-null.
+ * @return {!proto.aurum.RspDumpObjectTree} returns this
+ */
+proto.aurum.RspDumpObjectTree.prototype.clearRootsList = function() {
+ return this.setRootsList([]);
+};
+
+
+/**
+ * @enum {number}
+ */
+proto.aurum.RspStatus = {
+ OK: 0,
+ NA: 1,
+ ERROR: 2
+};
+
+/**
+ * @enum {number}
+ */
+proto.aurum.ParamType = {
+ STRING: 0,
+ INT: 1,
+ DOUBLE: 2,
+ BOOL: 3
+};
+
+goog.object.extend(exports, proto.aurum);
diff --git a/lib/aurum_backend/gen.sh b/lib/aurum_backend/gen.sh
new file mode 100755
index 0000000..0f79e50
--- /dev/null
+++ b/lib/aurum_backend/gen.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+PROTO_TO_JS_COMPILER="grpc_tools_node_protoc"
+
+if ! command -v "$PROTO_TO_JS_COMPILER" &> /dev/null
+then
+ echo "$PROTO_TO_JS_COMPILER could not be found"
+ echo "Install it with the following command:"
+ echo "npm install -g grpc-tools"
+ exit
+fi
+
+"$PROTO_TO_JS_COMPILER" --js_out=import_style=commonjs,binary:./ \
+ --grpc_out=./ --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin`\
+ -I ./ ./aurum.proto
\ No newline at end of file
diff --git a/test/driver-specs.js b/test/driver-specs.js
index 7e76fcb..ff0fc7e 100644
--- a/test/driver-specs.js
+++ b/test/driver-specs.js
@@ -1,6 +1,5 @@
import TizenDriver from '..';
-
describe('TizenDriver', function () {
it('should be instantiable', function () {
new TizenDriver();
From 372066e163da42bc8ee6e184961d1e51d468443c Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Fri, 2 Jul 2021 14:07:39 +0200
Subject: [PATCH 03/37] Add stubs for new Backend implementation
---
lib/aurum_backend/action.js | 90 ++++++++++++++++++++++++++++++++++++
lib/aurum_backend/element.js | 52 +++++++++++++++++++++
lib/aurum_backend/execute.js | 12 +++++
lib/aurum_backend/find.js | 72 +++++++++++++++++++++++++++++
lib/aurum_backend/general.js | 80 ++++++++++++++++++++++++++++++++
lib/aurum_backend/index.js | 22 +++++++++
lib/aurum_backend/touch.js | 41 ++++++++++++++++
package.json | 3 +-
8 files changed, 371 insertions(+), 1 deletion(-)
create mode 100644 lib/aurum_backend/action.js
create mode 100644 lib/aurum_backend/element.js
create mode 100644 lib/aurum_backend/execute.js
create mode 100644 lib/aurum_backend/find.js
create mode 100644 lib/aurum_backend/general.js
create mode 100644 lib/aurum_backend/index.js
create mode 100644 lib/aurum_backend/touch.js
diff --git a/lib/aurum_backend/action.js b/lib/aurum_backend/action.js
new file mode 100644
index 0000000..0f6e995
--- /dev/null
+++ b/lib/aurum_backend/action.js
@@ -0,0 +1,90 @@
+import { fs } from 'appium-support';
+import _ from 'lodash';
+import B from 'bluebird';
+import path from 'path';
+import jimp from 'jimp';
+import log from '../logger';
+
+import { errors } from 'appium-base-driver';
+
+let commands = {}, extensions = {};
+
+commands.flick = async function (element, xSpeed, ySpeed, xOffset, yOffset, speed) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.pullFile = async function (remotePath) {
+ const rootDir = path.resolve(__dirname, '..', '..');
+ const filePath = path.resolve(rootDir, 'file');
+ let localFile = filePath + '/appiumfile.tmp';
+ await this.sdb.pull(remotePath, localFile);
+ let data = await fs.readFile(localFile);
+ let b64data = new Buffer(data).toString('base64');
+ if (await fs.exists(localFile)) {
+ await fs.unlink(localFile);
+ }
+ return b64data;
+};
+
+commands.pushFile = async function (file, base64Data) {
+ const rootDir = path.resolve(__dirname, '..', '..', '..');
+ const fileDir = path.resolve(rootDir, 'app');
+ const localFile = path.resolve(fileDir, file);
+ if (file.indexOf('/') > -1) {
+ log.errorAndThrow(`It is expected that file point to a file and not to a folder. ` + `'${file}' is given instead`);
+ }
+
+ if (_.isArray(base64Data)) {
+ base64Data = Buffer.from(base64Data).toString('utf8');
+ }
+
+ const content = Buffer.from(base64Data, 'base64');
+ let isFileDir = await fs.exists(fileDir);
+ if (!isFileDir) {
+ await fs.mkdir(fileDir);
+ }
+
+ await fs.writeFile(localFile, content.toString('binary'), 'binary');
+
+ return true;
+};
+
+async function takeScreenShot (sdb) {
+ return await sdb.takeScreenShot();
+}
+
+async function getScreenshotData (sdb) {
+ const rootDir = path.resolve(__dirname, '..', '..');
+ const filePath = path.resolve(rootDir, 'file');
+ let localFile = filePath + '/screenShot.tmp';
+ if (await fs.exists(localFile)) {
+ await fs.unlink(localFile);
+ }
+ try {
+ const pngDir = '/tmp/';
+ const png = path.posix.resolve(pngDir, 'dump_screen.png');
+ await sdb.pull(png, localFile);
+ return await jimp.read(localFile);
+ } finally {
+ if (await fs.exists(localFile)) {
+ await fs.unlink(localFile);
+ }
+ }
+}
+
+commands.getScreenshot = async function () {
+ let result = await takeScreenShot(this.sdb);
+
+ if (result) {
+ let image = await getScreenshotData(this.sdb);
+ const getBuffer = B.promisify(image.getBuffer, { context: image });
+ const imgBuffer = await getBuffer(jimp.MIME_PNG);
+ return imgBuffer.toString('base64');
+ } else {
+ return null;
+ }
+};
+
+Object.assign(extensions, commands);
+export { commands };
+export default extensions;
diff --git a/lib/aurum_backend/element.js b/lib/aurum_backend/element.js
new file mode 100644
index 0000000..1d34ad6
--- /dev/null
+++ b/lib/aurum_backend/element.js
@@ -0,0 +1,52 @@
+import log from '../logger';
+import _ from 'lodash';
+import { sleep } from 'asyncbox';
+let commands = {}, extensions = {};
+
+import { errors } from 'appium-base-driver';
+
+commands.getAttribute = async function (attribute, elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.getLocation = async function (elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.getLocationInView = async function (elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.getText = async function (elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.elementEnabled = async function (elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.elementDisplayed = async function (elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.elementSelected = function () {
+};
+
+commands.getSize = async function (elementId) {
+};
+
+commands.setValue = async function (keys, elementId) {
+};
+
+commands.setValueImmediate = async function (keys, elementId) {
+};
+
+commands.clear = async function (elementId) {
+};
+
+commands.replaceValue = async function (value, elementId) {
+};
+
+Object.assign(extensions, commands);
+export { commands };
+export default extensions;
diff --git a/lib/aurum_backend/execute.js b/lib/aurum_backend/execute.js
new file mode 100644
index 0000000..9e22d62
--- /dev/null
+++ b/lib/aurum_backend/execute.js
@@ -0,0 +1,12 @@
+import { errors } from 'appium-base-driver';
+
+let commands = {}, extensions = {};
+
+commands.execute = async function (script) {
+ // Aurum does not support JS script execution on-device
+ throw new errors.UnsupportedOpperationError('Execution of JS on device under test is not supported.');
+};
+
+Object.assign(extensions, commands);
+export { commands };
+export default extensions;
diff --git a/lib/aurum_backend/find.js b/lib/aurum_backend/find.js
new file mode 100644
index 0000000..dd59dc7
--- /dev/null
+++ b/lib/aurum_backend/find.js
@@ -0,0 +1,72 @@
+'use strict';
+
+import _ from 'lodash';
+import { errors, isErrorType } from 'appium-base-driver';
+
+let helpers = {},
+ extensions = {};
+
+let elements = {};
+
+
+helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
+ throw new errors.NotImplementedError('TODO');
+
+ this.validateLocatorStrategy(strategy);
+
+ if (!selector) {
+ throw new Error('Must provide a selector when finding elements');
+ }
+
+ let params = {
+ strategy,
+ selector,
+ context,
+ multiple: mult
+ };
+
+ let element;
+
+ let doFind = async () => {
+ try {
+ element = await this.doFindElementOrEls(params);
+ } catch (err) {
+ if (isErrorType(err, errors.NoSuchElementError)) {
+ return false;
+ }
+
+ throw err;
+ }
+
+ return !_.isEmpty(element);
+ };
+
+ try {
+ await this.implicitWaitForCondition(doFind);
+ } catch (err) {
+ if (err.message && err.message.match(/Condition unmet/)) {
+ element = [];
+ } else {
+ throw err;
+ }
+ }
+
+ if (mult) {
+ return element;
+ } else {
+ if (_.isEmpty(element)) {
+ throw new errors.NoSuchElementError();
+ }
+
+ return element;
+ }
+};
+
+helpers.getAutomationId = function (elementId) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+Object.assign(extensions, helpers);
+
+export { extensions };
+export default extensions;
diff --git a/lib/aurum_backend/general.js b/lib/aurum_backend/general.js
new file mode 100644
index 0000000..e10810d
--- /dev/null
+++ b/lib/aurum_backend/general.js
@@ -0,0 +1,80 @@
+import log from '../logger';
+import _ from 'lodash';
+import { fs } from 'appium-support';
+import path from 'path';
+
+import { errors } from 'appium-base-driver';
+
+let commands = {}, helpers = {}, extensions = {};
+
+commands.getDeviceTime = async function () {
+ /* TODO: rewrite using Aurum command? */
+ log.info('Attempting to capture tizen device date and time');
+ try {
+ let out = await this.sdb.shell(['date']);
+ return out.trim();
+ } catch (err) {
+ log.errorAndThrow(`Could not capture device date and time: ${err}`);
+ }
+};
+
+commands.pressKeyCode = async function (key) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.keys = async function (keys) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.sendKey = async function (key) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.back = async function () {
+};
+
+commands.installApp = async function (tpk) {
+ /* TODO: rewrite using Aurum? */
+ const rootDir = path.resolve(__dirname, '..', '..', '..');
+ const tpkPath = path.resolve(rootDir, 'app');
+
+ let fullPath = path.resolve(tpkPath, tpk);
+ if (!(await fs.exists(fullPath))) {
+ log.errorAndThrow(`Could not find app tpk at ${tpk}`);
+ return false;
+ }
+ return this.sdb.install(fullPath);
+};
+
+commands.removeApp = function (appPackage) {
+ /* TODO: rewrite using Aurum? */
+ return this.sdb.uninstall(appPackage);
+};
+
+commands.isAppInstalled = async function (appPackage) {
+ /* TODO: rewrite using Aurum? */
+ return this.sdb.isAppInstalled(appPackage);
+};
+
+// The 4 commands below need to be rewritten using Aurum
+// In initial tests, Aurum-app communication worked only
+// when app was started using Aurum commands
+commands.launchApp = async function () {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.startApp = async function (opts = {}) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.closeApp = async function () {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.isStartedApp = async function (opts = {}) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+Object.assign(extensions, commands, helpers);
+export { commands, helpers };
+export default extensions;
diff --git a/lib/aurum_backend/index.js b/lib/aurum_backend/index.js
new file mode 100644
index 0000000..62da369
--- /dev/null
+++ b/lib/aurum_backend/index.js
@@ -0,0 +1,22 @@
+import executeCmds from './execute';
+import { extensions as findCmds } from './find';
+import generalCmds from './general';
+import elementCmds from './element';
+import actionCmds from './action';
+import touchCmds from './touch';
+
+let commands = {};
+Object.assign(
+ commands,
+ executeCmds,
+ findCmds,
+ generalCmds,
+ elementCmds,
+ actionCmds,
+ touchCmds
+);
+
+const SYSTEM_PORT = 50051;
+
+export default commands;
+export { commands, SYSTEM_PORT };
diff --git a/lib/aurum_backend/touch.js b/lib/aurum_backend/touch.js
new file mode 100644
index 0000000..a4d7187
--- /dev/null
+++ b/lib/aurum_backend/touch.js
@@ -0,0 +1,41 @@
+import log from '../logger';
+import B from 'bluebird';
+import { errors, isErrorType } from 'appium-base-driver';
+
+let commands = {}, helpers = {}, extensions = {};
+
+commands.click = async function (elementId, x = 0, y = 0) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.touchUp = async function (x = 1, y = 1, elementId = '') {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.touchDown = async function (x, y, elementId = '') {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.touchMove = async function (xDown, yDown, xUp, yUp, steps = 10, elementId = null) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.touchLongClick = async function (elementId, x, y, duration) {
+ throw new errors.NotImplementedError('TODO');
+};
+
+commands.tap = async function (elementId, x = 0, y = 0, count = 1) {
+ /*
+ * TODO: remove this?
+ * WebDriver spec and appium-base-driver don't support "tap" command,
+ * but the previous version of appium-tizen-driver differentiated
+ * between tap/single tap
+ * It seems, that this old "tap" corresponds to "click" in the official
+ * spec.
+ */
+ throw new errors.NotImplementedError('TODO');
+};
+
+Object.assign(extensions, commands, helpers);
+export { commands, helpers };
+export default extensions;
diff --git a/package.json b/package.json
index 88343a6..36086a5 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,8 @@
"main": "./build/index.js",
"bin": {},
"directories": {
- "lib": "lib"
+ "lib": "lib",
+ "test": "test"
},
"files": [
"index.js",
From bc9cc49a0de949b68f87cfd17d5996fa7fa18fa9 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Fri, 2 Jul 2021 14:14:53 +0200
Subject: [PATCH 04/37] Add TizenAurumBootstrap class and TizenBootstrapFactory
---
lib/aurum_backend/utils.js | 15 +++++
lib/driver.js | 28 +++++-----
lib/tizen-bootstrap.js | 110 +++++++++++++++++++++++++++++++++----
package.json | 2 +
4 files changed, 131 insertions(+), 24 deletions(-)
create mode 100644 lib/aurum_backend/utils.js
diff --git a/lib/aurum_backend/utils.js b/lib/aurum_backend/utils.js
new file mode 100644
index 0000000..de92f83
--- /dev/null
+++ b/lib/aurum_backend/utils.js
@@ -0,0 +1,15 @@
+const utils = {};
+
+utils.grpcAsync = async function (grpcFunction, grpcClient, arg) {
+ return new Promise((resolve, reject) => {
+ grpcFunction.bind(grpcClient)(arg, function (error, result) {
+ if (error) {
+ reject(error);
+ }
+
+ resolve(result);
+ });
+ });
+};
+
+export default utils;
\ No newline at end of file
diff --git a/lib/driver.js b/lib/driver.js
index 3beee00..30eea0f 100644
--- a/lib/driver.js
+++ b/lib/driver.js
@@ -1,14 +1,14 @@
import { BaseDriver, DeviceSettings } from 'appium-base-driver';
import desiredConstraints from './desired-caps';
import commands from './commands/index';
+import aurum_commands from './aurum_backend/index';
import helpers from './tizen-helpers';
-import Bootstrap from './tizen-bootstrap.js';
+import BootstrapFactory from './tizen-bootstrap';
import log from './logger';
import _ from 'lodash';
import { DEFAULT_SDB_PORT } from 'appium-sdb';
import { tempDir } from 'appium-support';
-const BOOTSTRAP_PORT = 8888;
const NO_PROXY = [
['POST', new RegExp('^/session/[^/]+/appium')],
['GET', new RegExp('^/session/[^/]+/appium')],
@@ -18,21 +18,19 @@ class TizenDriver extends BaseDriver {
constructor (opts = {}, shouldValidateCaps = true) {
super(opts, shouldValidateCaps);
- this.locatorStrategies = [
- 'id',
- 'accessibility id',
- 'class name',
- 'name'
- ];
-
this.desiredCapConstraints = desiredConstraints;
this.jwpProxyActive = false;
this.jwpProxyAvoid = _.clone(NO_PROXY);
this.settings = new DeviceSettings({ignoreUnimportantViews: false});
- this.bootstrapPort = BOOTSTRAP_PORT;
- for (let [cmd, fn] of _.toPairs(commands)) {
- TizenDriver.prototype[cmd] = fn;
+ if (opts.tizenBackend === 'aurum') {
+ for (let [cmd, fn] of _.toPairs(aurum_commands)) {
+ TizenDriver.prototype[cmd] = fn;
+ }
+ } else {
+ for (let [cmd, fn] of _.toPairs(commands)) {
+ TizenDriver.prototype[cmd] = fn;
+ }
}
}
@@ -96,6 +94,10 @@ class TizenDriver extends BaseDriver {
if (this.opts.app) {
await this.installApp(this.opts.app);
}
+
+ this.bootstrap = BootstrapFactory(this.sdb, this.opts);
+ this.locatorStrategies = this.bootstrap.supportedLocatorStrategies;
+
let isAppInstalled = await this.isAppInstalled(this.opts.appPackage);
if (!isAppInstalled) {
log.errorAndThrow('Could not find to App in device.');
@@ -108,7 +110,7 @@ class TizenDriver extends BaseDriver {
await this.startApp({ timeout: 20000 });
}
- this.bootstrap = new Bootstrap(this.sdb, this.bootstrapPort, this.opts);
+
await this.bootstrap.start(this.opts.appPackage);
if (this.opts.ignoreUnimportantViews) {
diff --git a/lib/tizen-bootstrap.js b/lib/tizen-bootstrap.js
index 5c9c46c..e61e109 100644
--- a/lib/tizen-bootstrap.js
+++ b/lib/tizen-bootstrap.js
@@ -1,39 +1,91 @@
import net from 'net';
import _ from 'lodash';
-import commands from './commands/index';
+import ui_automator_commands from './commands/index';
import { errorFromCode } from 'appium-base-driver';
import { sleep } from 'asyncbox';
import path from 'path';
import log from './logger';
import B from 'bluebird';
+import * as aurum from './aurum_backend/index';
+//TODO: grpc NPM package is deprecated and superseded by @grpc/grpc-js
+// but the latter doesn't work - find out why and replace grpc with grpc-js
+const grpc = require('grpc');
+import messages from './aurum_backend/aurum_pb';
+// const grpc = require('@grpc/grpc-js');
+import services from './aurum_backend/aurum_grpc_pb';
+
+import utils from './aurum_backend/utils';
+
const COMMAND_TYPES = {
ACTION: 'action',
SHUTDOWN: 'shutdown'
};
+const LEGACY_SYSTEM_PORT = 8888;
+
+class AbstractMethodError extends Error {
+ constructor (message = null) {
+ super(message || 'This is an abstract method with no implementation. Call one of its overriden implementations.');
+ this.name = AbstractMethodError;
+ }
+}
+
class TizenBootstrap {
- constructor (sdb, systemPort = 8888, opts = {}) {
+ constructor (sdb, opts, commands) {
this.appPackage;
this.sdb = sdb;
- this.systemPort = systemPort;
this.opts = opts;
- this.webSocket = opts.webSocket;
+ this.webSocket = opts.webSocket; // TODO: remove it? Where it's used?
this.ignoreUnexpectedShutdown = false;
- this.uiautomator = 'org.tizen.uiautomator';
- this.uiautomatorVersion = '1.0.1';
this.isRestart = false;
+ this.supportedLocatorStrategies = [
+ 'id',
+ 'accessibility id',
+ 'class name',
+ 'name'
+ ];
+
for (let [cmd, fn] of _.toPairs(commands)) {
TizenBootstrap.prototype[cmd] = fn;
}
}
+ async start (appPackage) {
+ //TODO: do we really need appPackage argument in Aurum backend?
+ throw new AbstractMethodError();
+ }
+
+ async shutdown () {
+ throw new AbstractMethodError();
+ }
+
+ set ignoreUnexpectedShutdown (ignore) {
+ log.debug(`${ignore ? 'Ignoring' : 'Watching for'} bootstrap disconnect`);
+ this._ignoreUnexpectedShutdown = ignore;
+ }
+
+ get ignoreUnexpectedShutdown () {
+ return this._ignoreUnexpectedShutdown;
+ }
+}
+
+class TizenLegacyBootstrap extends TizenBootstrap {
+ constructor (sdb, opts = {}) {
+ super(sdb, opts, ui_automator_commands);
+
+ log.debug('DEBUG_LOG: HELLO FROM TizenLegacyBootstrap !!!!');
+
+ this.uiautomator = 'org.tizen.uiautomator';
+ this.uiautomatorVersion = '1.0.1';
+ }
+
async start (appPackage) {
this.appPackage = appPackage;
await this.init();
- await this.sdb.forwardPort(this.systemPort, 8888);
+ await this.sdb.forwardPort(LEGACY_SYSTEM_PORT, LEGACY_SYSTEM_PORT);
await sleep(6000);
return await this.connectSocket();
@@ -44,7 +96,7 @@ class TizenBootstrap {
return await new B((resolve, reject) => {
try {
if (!this.socketClient) {
- this.socketClient = net.connect(this.systemPort);
+ this.socketClient = net.connect(LEGACY_SYSTEM_PORT);
this.socketClient.setEncoding('utf8');
this.socketClient.on('error', (err) => {
if (!this.ignoreUnexpectedShutdown) {
@@ -148,7 +200,7 @@ class TizenBootstrap {
await this.stopUIAutomator();
await this.uninstallUIAutomator();
- await this.sdb.removePortForward(this.systemPort);
+ await this.sdb.removePortForward(LEGACY_SYSTEM_PORT);
}
async init () {
@@ -204,6 +256,28 @@ class TizenBootstrap {
return await this.sdb.isStartedApp(this.uiautomator);
}
+}
+
+class TizenAurumBootstrap extends TizenBootstrap {
+ constructor (sdb, opts = {}) {
+ super(sdb, opts, aurum.commands);
+
+ // TODO: let the user set this IP? Is it needed?
+ const credentials = grpc.credentials.createInsecure();
+ this.client = new services.BootstrapClient(`localhost:${aurum.SYSTEM_PORT}`,
+ credentials);
+ // grpc.credentials.createInsecure());
+ this.supportedLocatorStrategies = aurum.SUPPORTED_LOCATOR_STRATEGIES;
+ }
+
+ async start (appPackage) {
+ await utils.grpcAsync(this.client.sync, this.client, new messages.ReqEmpty());
+ }
+
+ async shutdown () {
+ throw new NotImplementedError();
+ }
+
set ignoreUnexpectedShutdown (ignore) {
log.debug(`${ignore ? 'Ignoring' : 'Watching for'} bootstrap disconnect`);
this._ignoreUnexpectedShutdown = ignore;
@@ -214,5 +288,19 @@ class TizenBootstrap {
}
}
-export { TizenBootstrap, COMMAND_TYPES };
-export default TizenBootstrap;
+function TizenBootstrapFactory (sdb, opts) {
+ if (new.target) {
+ throw new Error('This function is not a constructor, but a factory. Don\'t precede its call with "new"');
+ }
+
+ if (opts.tizenBackend === 'aurum') {
+ return new TizenAurumBootstrap(sdb, opts);
+ } else {
+ log.debug('Creating TizenLegacyBootstrap');
+ return new TizenLegacyBootstrap(sdb, opts);
+ }
+}
+
+
+export { TizenBootstrapFactory, COMMAND_TYPES };
+export default TizenBootstrapFactory;
diff --git a/package.json b/package.json
index 36086a5..01ef33f 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,8 @@
"asyncbox": "^2.0.4",
"bluebird": "^3.4.7",
"fancy-log": "^1.3.2",
+ "google-protobuf": "^3.17.3",
+ "grpc": "^1.24.10",
"jimp": "^0.16.1",
"lodash": "^4.17.9",
"source-map-support": "^0.5.9",
From 89d5e35e1bfa7f09b022e4cf879cfd8f5acbd672 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Fri, 2 Jul 2021 14:58:45 +0200
Subject: [PATCH 05/37] Implement commands for finding elements and app
management
Implemented (with tests):
- findElOrEls (used by BaseDriver to implement all findElement*
commands, so they should all work now)
- {start, launch, close}App - new implementation using Aurum instead
of SDB was needed, because connection only works with apps launched
by Aurum
- isStartedApp
---
gulpfile.js | 5 +-
lib/aurum_backend/aurum_client.js | 17 ++++
lib/aurum_backend/find.js | 95 +++++++++++++++++++++-
lib/aurum_backend/general.js | 15 ++--
lib/aurum_backend/index.js | 4 +-
test/elm-demo-tizen-mobile-test.js | 124 +++++++++++++++++++++++++++++
test/utils.js | 7 ++
7 files changed, 253 insertions(+), 14 deletions(-)
create mode 100644 lib/aurum_backend/aurum_client.js
create mode 100644 test/elm-demo-tizen-mobile-test.js
create mode 100644 test/utils.js
diff --git a/gulpfile.js b/gulpfile.js
index 1537f36..9bdf1a9 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -18,6 +18,7 @@ const fs = require('fs');
boilerplate.use(gulp)({
build: 'appium-tizen-driver',
- testTimeout: 100000,
- test: {files: ['${testDir}/**/*.js']}
+ testTimeout: 10000,
+ test: {files: ['${testDir}/**/*.js']},
+ testReporter: 'spec'
});
diff --git a/lib/aurum_backend/aurum_client.js b/lib/aurum_backend/aurum_client.js
new file mode 100644
index 0000000..15f0b59
--- /dev/null
+++ b/lib/aurum_backend/aurum_client.js
@@ -0,0 +1,17 @@
+let PROTO_PATH = __dirname + '/aurum.proto';
+let grpc = require('@grpc/grpc-js');
+let protoLoader = require('@grpc/proto-loader');
+
+
+let packageDefinition = protoLoader.loadSync(
+ PROTO_PATH,
+ {keepCase: true,
+ longs: String,
+ enums: String,
+ defaults: true,
+ oneofs: true
+ });
+
+let protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
+// The protoDescriptor object has the full package hierarchy
+let routeguide = protoDescriptor.routeguide;
\ No newline at end of file
diff --git a/lib/aurum_backend/find.js b/lib/aurum_backend/find.js
index dd59dc7..6de57f0 100644
--- a/lib/aurum_backend/find.js
+++ b/lib/aurum_backend/find.js
@@ -2,16 +2,104 @@
import _ from 'lodash';
import { errors, isErrorType } from 'appium-base-driver';
+import utils from './utils';
+import messages from './aurum_pb';
+import { reject, resolve } from 'bluebird';
let helpers = {},
extensions = {};
let elements = {};
+class FindElementReqFactory {
+ constructor (grpc_message_defs) {
+ this.grpc_message_defs = grpc_message_defs;
+
+ this.strategies = {
+ 'id': this.makeIdReq.bind(this),
+ '-tizen aurum': this.makeTizenAurumReq.bind(this),
+ 'automationId': this.makeAutomationIdRequest.bind(this),
+ 'accessibility id': this.makeIdReq.bind(this),
+ // TODO: does "class name" strategy correspond to "ReqFindElement.widgetStyle?
+ 'class name': this.makeWidgetStyle.bind(this),
+ // TODO: does "name" strategy correspond to "ReqFindElementtextField?
+ 'name': this.makeTextFieldReq.bind(this)
+ };
+ }
-helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
- throw new errors.NotImplementedError('TODO');
+ create (strategy, selector) {
+ if (!(strategy in this.strategies)) {
+ throw errors.InvalidSelectorError(`"${strategy}" strategy is not supported`);
+ }
+
+ return this.strategies[strategy](selector);
+ }
+
+ makeIdReq (elementId) {
+ return new messages.ReqFindElement({elementId});
+ }
+
+ makeTizenAurumReq (constraints) {
+ // TODO: do we need validateTizenAurmReqValue(constraints);?
+ // grpc lib should throw an error anyway
+ return new messages.ReqFindElement(constraints);
+ }
+
+ makeAutomationIdRequest (automationId) {
+ return new messages.ReqFindElement({automationId});
+ }
+
+ makeWidgetStyle (widgetStyle) {
+ return new messages.ReqFindElement({widgetStyle});
+ }
+
+ makeTextFieldReq (textField) {
+ return new messages.ReqFindElement({
+ textField
+ });
+ }
+}
+
+const requestFactory = new FindElementReqFactory(messages);
+
+helpers.doFindElementOrEls = async function (params) {
+ const {
+ strategy = 'automationId',
+ selector,
+ multiple
+ } = params;
+
+ if (!selector) {
+ // TODO: is this the most appropriate error type?
+ throw new errors.InvalidSelectorError('findElement()/findElements() require selector');
+ }
+
+ const findElementReq = requestFactory.create(strategy, selector);
+
+ return new Promise((resolve, reject) => {
+ const call = this.bootstrap.client.findElement(findElementReq,
+ (error, result) => {
+ if (error) {
+ reject(error);
+ }
+
+ if (result.getStatus() !== messages.RspStatus.OK) {
+ reject(new Error('Must provide a selector when finding elements'));
+ }
+
+ const elementIds = result.getElementsList().map((element) => element.getElementid());
+
+ if (multiple) {
+ resolve(elementIds);
+ }
+
+ resolve(elementIds[0]);
+ });
+ });
+};
+
+helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
this.validateLocatorStrategy(strategy);
if (!selector) {
@@ -66,7 +154,8 @@ helpers.getAutomationId = function (elementId) {
throw new errors.NotImplementedError('TODO');
};
+const SUPPORTED_LOCATOR_STRATEGIES = Object.keys(requestFactory.strategies);
Object.assign(extensions, helpers);
-export { extensions };
+export { extensions, SUPPORTED_LOCATOR_STRATEGIES };
export default extensions;
diff --git a/lib/aurum_backend/general.js b/lib/aurum_backend/general.js
index e10810d..6014885 100644
--- a/lib/aurum_backend/general.js
+++ b/lib/aurum_backend/general.js
@@ -4,6 +4,8 @@ import { fs } from 'appium-support';
import path from 'path';
import { errors } from 'appium-base-driver';
+import messages from './aurum_pb';
+import utils from './utils';
let commands = {}, helpers = {}, extensions = {};
@@ -56,23 +58,22 @@ commands.isAppInstalled = async function (appPackage) {
return this.sdb.isAppInstalled(appPackage);
};
-// The 4 commands below need to be rewritten using Aurum
-// In initial tests, Aurum-app communication worked only
-// when app was started using Aurum commands
commands.launchApp = async function () {
- throw new errors.NotImplementedError('TODO');
+ return await this.startApp();
};
commands.startApp = async function (opts = {}) {
- throw new errors.NotImplementedError('TODO');
+ return await utils.grpcAsync(this.bootstrap.client.launchApp, this.bootstrap.client, new messages.ReqLaunchApp({packageName: this.opts.packageName}));
};
commands.closeApp = async function () {
- throw new errors.NotImplementedError('TODO');
+ await utils.grpcAsync(this.bootstrap.client.closeApp, this.bootstrap.client, new messages.ReqCloseApp({packageName: this.opts.appPackage}));
};
commands.isStartedApp = async function (opts = {}) {
- throw new errors.NotImplementedError('TODO');
+ const appStatus = await utils.grpcAsync(this.bootstrap.client.getAppInfo, this.bootstrap.client, new messages.ReqGetAppInfo({packageName: this.opts.packageName}));
+
+ return appStatus.getIsrunning();
};
Object.assign(extensions, commands, helpers);
diff --git a/lib/aurum_backend/index.js b/lib/aurum_backend/index.js
index 62da369..46de996 100644
--- a/lib/aurum_backend/index.js
+++ b/lib/aurum_backend/index.js
@@ -1,5 +1,5 @@
import executeCmds from './execute';
-import { extensions as findCmds } from './find';
+import { extensions as findCmds, SUPPORTED_LOCATOR_STRATEGIES } from './find';
import generalCmds from './general';
import elementCmds from './element';
import actionCmds from './action';
@@ -19,4 +19,4 @@ Object.assign(
const SYSTEM_PORT = 50051;
export default commands;
-export { commands, SYSTEM_PORT };
+export { commands, SYSTEM_PORT, SUPPORTED_LOCATOR_STRATEGIES };
diff --git a/test/elm-demo-tizen-mobile-test.js b/test/elm-demo-tizen-mobile-test.js
new file mode 100644
index 0000000..a9ba3fd
--- /dev/null
+++ b/test/elm-demo-tizen-mobile-test.js
@@ -0,0 +1,124 @@
+const utils = require('./utils');
+
+import { strict as assert } from 'assert';
+const TizenDriver = require('../lib/driver').TizenDriver;
+
+let driver;
+
+beforeEach(async function setUpTizenDriver () {
+ // TODO: check precondition: elm-demo app installed, aurum running, etc.
+ const opts = {
+ tizenBackend: 'aurum',
+ appPackage: 'org.tizen.elm-demo-tizen-mobile'
+ };
+ driver = new TizenDriver(opts, true);
+ const sessionCaps = {
+ platformName: 'tizen',
+ deviceName: 'TM1',
+ appPackage: 'org.tizen.elm-demo-tizen-mobile'
+ };
+
+ return await driver.createSession(sessionCaps);
+});
+
+describe('findElement', function () {
+
+ describe('using "-tizen aurum" strategy', function () {
+
+ it('should support nested selectors', async function () {
+ let result = await driver.findElement('-tizen aurum', {
+ children: [{
+ isClickable: true
+ }, {
+ isShowing: true
+ }]
+ });
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it ('should find an array of non-zero elements when no constraint is set', async function () {
+ let result = await driver.findElement('-tizen aurum', {/* No constraints */});
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it ('should find an element with a simple single-condition strategy', async function () {
+ let result = await driver.findElement('-tizen aurum', {isClickable: true});
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+ });
+
+ describe('using standard JSON Wire Protocol strategies', function () {
+
+ it('should support "id" strategy', async function () {
+ const existingId = await driver.findElement('-tizen aurum', {});
+ const result = await driver.findElement('id', existingId);
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it('should support "automationId" strategy', async function () {
+ const result = await driver.findElement('automationId', 'TODO');
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it('should support "accessibility id" strategy', async function () {
+ // TODO: finish
+ const existingId = await driver.findElement('-tizen aurum', {});
+ const result = await driver.findElement('accessibility id', 'TODO');
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it('should support "name" strategy', async function () {
+ const result = await driver.findElement('name', 'Button');
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it('should support "class name" strategy', async function () {
+ const result = await driver.findElement('class name', 'TODO');
+ assert(result !== null);
+ assert(typeof result === 'string');
+ assert(utils.hasOnlyDigits(result));
+ return true;
+ });
+
+ it('should throw NoSuchElementError when element is not found', async function () {
+ await driver.findElement('-tizen aurum', {
+ elementId: 'Non-existent elementId'
+ });
+ });
+ });
+
+ describe('using unsupported strategy', function () {
+
+ it('should throw InvalidSelectorError', async function () {
+ assert.rejects(
+ async function () {
+ return await driver.findElement('Not supported strategy', 'value');
+ },
+ {
+ name: 'InvalidSelectorError'
+ });
+ });
+ });
+});
+
diff --git a/test/utils.js b/test/utils.js
new file mode 100644
index 0000000..47c2c25
--- /dev/null
+++ b/test/utils.js
@@ -0,0 +1,7 @@
+const utils = {};
+
+utils.hasOnlyDigits = function (string) {
+ return /^-?\d+$/.test(string);
+};
+
+module.exports = utils;
\ No newline at end of file
From cbb1b7450a8d884c745417c20928568419a417e6 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Tue, 6 Jul 2021 16:42:03 +0200
Subject: [PATCH 06/37] Unify gRPC/Aurum error handling. Add tests
---
lib/aurum_backend/find.js | 37 ++++++++++---------
lib/aurum_backend/general.js | 57 ++++++++++++++++++++++++++----
lib/aurum_backend/utils.js | 48 ++++++++++++++++++-------
lib/tizen-bootstrap.js | 15 +++++---
test/elm-demo-tizen-mobile-test.js | 42 +++++++++++++++++-----
5 files changed, 151 insertions(+), 48 deletions(-)
diff --git a/lib/aurum_backend/find.js b/lib/aurum_backend/find.js
index 6de57f0..8d05cdc 100644
--- a/lib/aurum_backend/find.js
+++ b/lib/aurum_backend/find.js
@@ -2,10 +2,11 @@
import _ from 'lodash';
import { errors, isErrorType } from 'appium-base-driver';
-import utils from './utils';
import messages from './aurum_pb';
import { reject, resolve } from 'bluebird';
+import { throwOnUnsuccessfulAurumCall } from './utils';
+
let helpers = {},
extensions = {};
@@ -36,27 +37,35 @@ class FindElementReqFactory {
}
makeIdReq (elementId) {
- return new messages.ReqFindElement({elementId});
+ const req = new messages.ReqFindElement();
+ req.setElementid(elementId);
+ return req;
}
makeTizenAurumReq (constraints) {
// TODO: do we need validateTizenAurmReqValue(constraints);?
// grpc lib should throw an error anyway
- return new messages.ReqFindElement(constraints);
+ const req = new messages.ReqFindElement();
+ // TODO: finish
+ return req;
}
makeAutomationIdRequest (automationId) {
- return new messages.ReqFindElement({automationId});
+ const req = new messages.ReqFindElement();
+ req.setAutomationid(automationId);
+ return req;
}
makeWidgetStyle (widgetStyle) {
- return new messages.ReqFindElement({widgetStyle});
+ const req = new messages.ReqFindElement();
+ req.setWidgetstyle(widgetStyle);
+ return req;
}
makeTextFieldReq (textField) {
- return new messages.ReqFindElement({
- textField
- });
+ const req = new messages.ReqFindElement();
+ req.setTextfield(textField);
+ return req;
}
}
@@ -80,21 +89,15 @@ helpers.doFindElementOrEls = async function (params) {
return new Promise((resolve, reject) => {
const call = this.bootstrap.client.findElement(findElementReq,
(error, result) => {
- if (error) {
- reject(error);
- }
-
- if (result.getStatus() !== messages.RspStatus.OK) {
- reject(new Error('Must provide a selector when finding elements'));
- }
+ throwOnUnsuccessfulAurumCall('findElement or findElements', error, result, 'findElement');
const elementIds = result.getElementsList().map((element) => element.getElementid());
if (multiple) {
- resolve(elementIds);
+ return resolve(elementIds);
}
- resolve(elementIds[0]);
+ return resolve(elementIds[0]);
});
});
};
diff --git a/lib/aurum_backend/general.js b/lib/aurum_backend/general.js
index 6014885..9b77e7b 100644
--- a/lib/aurum_backend/general.js
+++ b/lib/aurum_backend/general.js
@@ -5,7 +5,7 @@ import path from 'path';
import { errors } from 'appium-base-driver';
import messages from './aurum_pb';
-import utils from './utils';
+import { logAndThrowGrpcCommandError, throwOnAurumRequestFailure, throwOnUnsuccessfulAurumCall } from './utils';
let commands = {}, helpers = {}, extensions = {};
@@ -63,17 +63,62 @@ commands.launchApp = async function () {
};
commands.startApp = async function (opts = {}) {
- return await utils.grpcAsync(this.bootstrap.client.launchApp, this.bootstrap.client, new messages.ReqLaunchApp({packageName: this.opts.packageName}));
+ return new Promise((resolve, reject) => {
+ const packageName = this.opts.appPackage;
+
+ const callOptions = {};
+ if ('timeout' in opts) {
+ callOptions.deadline = new Date(Date.now() + opts.timeout);
+ }
+
+ const req = new messages.ReqLaunchApp();
+ req.setPackagename(packageName);
+ this.bootstrap.client.launchApp(req,
+ callOptions,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('startApp', error, result, 'launchApp');
+
+ log.info(`Application started: ${packageName}`);
+ resolve();
+ });
+ });
};
commands.closeApp = async function () {
- await utils.grpcAsync(this.bootstrap.client.closeApp, this.bootstrap.client, new messages.ReqCloseApp({packageName: this.opts.appPackage}));
+ return new Promise((resolve, reject) => {
+ const packageName = this.opts.appPackage;
+
+ const req = new messages.ReqCloseApp();
+ req.setPackagename(packageName);
+ this.bootstrap.client.closeApp(req,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('closeApp', error, result);
+
+ log.info(`App closed: ${packageName}`);
+ resolve();
+ });
+ });
};
commands.isStartedApp = async function (opts = {}) {
- const appStatus = await utils.grpcAsync(this.bootstrap.client.getAppInfo, this.bootstrap.client, new messages.ReqGetAppInfo({packageName: this.opts.packageName}));
-
- return appStatus.getIsrunning();
+ return new Promise((resolve, reject) => {
+ const packageName = this.opts.appPackage;
+
+ const req = new messages.ReqGetAppInfo();
+ req.setPackagename(packageName);
+ this.bootstrap.client.getAppInfo(req,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('isStartedApp', error, result, 'getAppInfo');
+
+ if (!result.getIsinstalled()) {
+ const errorMessage = `The application is not installed ${packageName}`;
+ log.error(errorMessage);
+ throw new errors.InvalidArgumentError(errorMessage);
+ }
+
+ resolve(result.getIsrunning());
+ });
+ });
};
Object.assign(extensions, commands, helpers);
diff --git a/lib/aurum_backend/utils.js b/lib/aurum_backend/utils.js
index de92f83..8ff6d2d 100644
--- a/lib/aurum_backend/utils.js
+++ b/lib/aurum_backend/utils.js
@@ -1,15 +1,39 @@
-const utils = {};
+import log from '../logger';
+import messages from './aurum_pb';
+import _ from 'lodash';
+import { errors } from 'appium-base-driver';
-utils.grpcAsync = async function (grpcFunction, grpcClient, arg) {
- return new Promise((resolve, reject) => {
- grpcFunction.bind(grpcClient)(arg, function (error, result) {
- if (error) {
- reject(error);
- }
+const grpc = require('grpc');
- resolve(result);
- });
- });
-};
+function logAndThrowGrpcCommandError (commandName, error) {
+ log.error(`gRPC error: ${commandName}() failed. Cause: ${error.name} (${error.message})`);
-export default utils;
\ No newline at end of file
+ let message;
+ if (error.code === grpc.status.UNAVAILABLE) {
+ message = 'Device-side server unavailable. Check if Aurum is running on the device under test and if there\'s a connection with the device.';
+ } else {
+ message = `An unknown server-side error occurred: ${error.name}: ${error.message}`;
+ }
+ throw new errors.UnknownError(message);
+}
+
+function throwOnAurumRequestFailure (commandName, result) {
+ if (typeof result.getStatus === 'undefined') {
+ // This Aurum response message has no "status" - no error
+ return;
+ }
+
+ if (result.getStatus() !== messages.RspStatus.OK) {
+ log.error(`Aurum ${commandName}() request was unsuccessful; status: ${result.getStatus()} (${_.findKey(messages.RspStatus, (val) => val === result.getStatus())})`);
+ throw new errors.UnknownError(`Command failed: ${commandName}`);
+ }
+}
+
+function throwOnUnsuccessfulAurumCall (aurumCommandName, grpcError, aurumResult, grpcCommandName = aurumCommandName) {
+ if (grpcError) {
+ logAndThrowGrpcCommandError(grpcCommandName, grpcError);
+ }
+ throwOnAurumRequestFailure(aurumCommandName, aurumResult);
+}
+
+export { logAndThrowGrpcCommandError, throwOnAurumRequestFailure, throwOnUnsuccessfulAurumCall };
\ No newline at end of file
diff --git a/lib/tizen-bootstrap.js b/lib/tizen-bootstrap.js
index e61e109..849f38b 100644
--- a/lib/tizen-bootstrap.js
+++ b/lib/tizen-bootstrap.js
@@ -1,7 +1,7 @@
import net from 'net';
import _ from 'lodash';
import ui_automator_commands from './commands/index';
-import { errorFromCode } from 'appium-base-driver';
+import { errorFromCode, errors } from 'appium-base-driver';
import { sleep } from 'asyncbox';
import path from 'path';
import log from './logger';
@@ -15,7 +15,7 @@ import messages from './aurum_backend/aurum_pb';
// const grpc = require('@grpc/grpc-js');
import services from './aurum_backend/aurum_grpc_pb';
-import utils from './aurum_backend/utils';
+import { throwOnUnsuccessfulAurumCall } from './aurum_backend/utils';
const COMMAND_TYPES = {
@@ -264,14 +264,21 @@ class TizenAurumBootstrap extends TizenBootstrap {
// TODO: let the user set this IP? Is it needed?
const credentials = grpc.credentials.createInsecure();
- this.client = new services.BootstrapClient(`localhost:${aurum.SYSTEM_PORT}`,
+ this.client = new services.BootstrapClient(`127.0.0.1:${aurum.SYSTEM_PORT}`,
credentials);
// grpc.credentials.createInsecure());
this.supportedLocatorStrategies = aurum.SUPPORTED_LOCATOR_STRATEGIES;
}
async start (appPackage) {
- await utils.grpcAsync(this.client.sync, this.client, new messages.ReqEmpty());
+ new Promise((resolve, reject) => {
+ this.client.sync(new messages.ReqEmpty(), (error, result) => {
+ throwOnUnsuccessfulAurumCall('start', error, result, 'sync');
+
+ log.info('TizenAurumBootstrap started');
+ return resolve();
+ });
+ });
}
async shutdown () {
diff --git a/test/elm-demo-tizen-mobile-test.js b/test/elm-demo-tizen-mobile-test.js
index a9ba3fd..4104e94 100644
--- a/test/elm-demo-tizen-mobile-test.js
+++ b/test/elm-demo-tizen-mobile-test.js
@@ -6,7 +6,6 @@ const TizenDriver = require('../lib/driver').TizenDriver;
let driver;
beforeEach(async function setUpTizenDriver () {
- // TODO: check precondition: elm-demo app installed, aurum running, etc.
const opts = {
tizenBackend: 'aurum',
appPackage: 'org.tizen.elm-demo-tizen-mobile'
@@ -18,7 +17,29 @@ beforeEach(async function setUpTizenDriver () {
appPackage: 'org.tizen.elm-demo-tizen-mobile'
};
- return await driver.createSession(sessionCaps);
+ return driver.createSession(sessionCaps);
+});
+
+describe('Application management', function () {
+ beforeEach(async function () {
+ await driver.closeApp();
+ });
+
+ describe('isStartedApp', function () {
+ it('should return "false" when app is not running', async function () {
+ let result = await driver.isStartedApp();
+ console.log(result);
+ assert(typeof result === 'boolean');
+ assert(result === false);
+ });
+
+ it('should return "true" when app is running', async function () {
+ await driver.startApp();
+ let result = await driver.isStartedApp();
+ assert(typeof result === 'boolean');
+ assert(result === true);
+ });
+ });
});
describe('findElement', function () {
@@ -36,7 +57,7 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
it ('should find an array of non-zero elements when no constraint is set', async function () {
@@ -44,7 +65,7 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
it ('should find an element with a simple single-condition strategy', async function () {
@@ -64,7 +85,8 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ assert(existingId === result);
+ return;
});
it('should support "automationId" strategy', async function () {
@@ -72,7 +94,7 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
it('should support "accessibility id" strategy', async function () {
@@ -82,7 +104,7 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
it('should support "name" strategy', async function () {
@@ -90,7 +112,7 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
it('should support "class name" strategy', async function () {
@@ -98,13 +120,14 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
it('should throw NoSuchElementError when element is not found', async function () {
await driver.findElement('-tizen aurum', {
elementId: 'Non-existent elementId'
});
+ return;
});
});
@@ -118,6 +141,7 @@ describe('findElement', function () {
{
name: 'InvalidSelectorError'
});
+ return;
});
});
});
From 6646f7779ef4c87bbc4235d63b2b73ff819f18b4 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Tue, 6 Jul 2021 17:26:11 +0200
Subject: [PATCH 07/37] Implement findElOrEls with "-tizen aurum" strategy
---
lib/aurum_backend/find.js | 28 +++++++++++++++++++++++-----
lib/aurum_backend/utils.js | 6 +++++-
2 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/lib/aurum_backend/find.js b/lib/aurum_backend/find.js
index 8d05cdc..12d5478 100644
--- a/lib/aurum_backend/find.js
+++ b/lib/aurum_backend/find.js
@@ -5,7 +5,7 @@ import { errors, isErrorType } from 'appium-base-driver';
import messages from './aurum_pb';
import { reject, resolve } from 'bluebird';
-import { throwOnUnsuccessfulAurumCall } from './utils';
+import { throwOnUnsuccessfulAurumCall, isIterable } from './utils';
let helpers = {},
extensions = {};
@@ -43,10 +43,29 @@ class FindElementReqFactory {
}
makeTizenAurumReq (constraints) {
- // TODO: do we need validateTizenAurmReqValue(constraints);?
- // grpc lib should throw an error anyway
const req = new messages.ReqFindElement();
- // TODO: finish
+
+ req.setElementid(constraints?.elementId);
+ req.setAutomationid(constraints?.automationId);
+ req.setTextfield(constraints?.textField);
+ req.setWidgettype(constraints?.widgetType);
+ req.setWidgetstyle(constraints?.widgetStyle);
+ req.setIschecked(constraints?.isChecked);
+ req.setIscheckable(constraints?.isCheckable);
+ req.setIsclickable(constraints?.isClickable);
+ req.setIsenabled(constraints?.isEnabled);
+ req.setIsfocused(constraints?.isFocused);
+ req.setIsfocusable(constraints?.isFocusable);
+ req.setIsscrollable(constraints?.isScrollable);
+ req.setIsselected(constraints?.isSelected);
+ req.setIsshowing(constraints?.isShowing);
+ req.setIsactive(constraints?.isActive);
+ req.setMindepth(constraints?.minDepth);
+ req.setMaxdepth(constraints?.maxDepth);
+
+ if (isIterable(constraints.children)) {
+ for (let childConstraints of constraints.children) {req.addChildren(this.makeTizenAurumReq(childConstraints));}
+ }
return req;
}
@@ -80,7 +99,6 @@ helpers.doFindElementOrEls = async function (params) {
} = params;
if (!selector) {
- // TODO: is this the most appropriate error type?
throw new errors.InvalidSelectorError('findElement()/findElements() require selector');
}
diff --git a/lib/aurum_backend/utils.js b/lib/aurum_backend/utils.js
index 8ff6d2d..4817604 100644
--- a/lib/aurum_backend/utils.js
+++ b/lib/aurum_backend/utils.js
@@ -36,4 +36,8 @@ function throwOnUnsuccessfulAurumCall (aurumCommandName, grpcError, aurumResult,
throwOnAurumRequestFailure(aurumCommandName, aurumResult);
}
-export { logAndThrowGrpcCommandError, throwOnAurumRequestFailure, throwOnUnsuccessfulAurumCall };
\ No newline at end of file
+function isIterable (object) {
+ return Symbol.iterator in Object(object);
+}
+
+export { logAndThrowGrpcCommandError, throwOnAurumRequestFailure, throwOnUnsuccessfulAurumCall, isIterable };
\ No newline at end of file
From 7403eded27fe74a67ad19a4b6c8c1fd1730777c8 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Wed, 7 Jul 2021 20:53:50 +0200
Subject: [PATCH 08/37] Implement getAttribute() and its tests
---
lib/aurum_backend/element.js | 59 ++++++++++++++++++++-
lib/aurum_backend/general.js | 2 +-
lib/aurum_backend/utils.js | 12 ++++-
package.json | 1 +
test/elm-demo-tizen-mobile-test.js | 82 ++++++++++++++++++++++++++----
5 files changed, 143 insertions(+), 13 deletions(-)
diff --git a/lib/aurum_backend/element.js b/lib/aurum_backend/element.js
index 1d34ad6..925ff81 100644
--- a/lib/aurum_backend/element.js
+++ b/lib/aurum_backend/element.js
@@ -5,8 +5,65 @@ let commands = {}, extensions = {};
import { errors } from 'appium-base-driver';
+import { throwOnUnsuccessfulAurumCall } from './utils';
+import messages from './aurum_pb';
+
+// Spec: https://w3c.github.io/webdriver/webdriver-spec.html#get-element-attribute
commands.getAttribute = async function (attribute, elementId) {
- throw new errors.NotImplementedError('TODO');
+ // This function is case-insensitive with regard to
+ // attributes to resemble HTML
+ const attributeName = attribute.toUpperCase();
+
+ if (!(attributeName in messages.ReqGetAttribute.RequestType)) {
+ const errorMessage = `${attributeName} is not a valid attribute name. Valid attribute names are:\n${Object.keys(messages.ReqGetAttribute.RequestType).reduce((accum, x) => accum + '\n' + x)}`;
+ log.errorAndThrow(new errors.InvalidArgumentError(errorMessage));
+ }
+
+ const req = new messages.ReqGetAttribute();
+ req.setElementid(elementId);
+ req.setAttribute(messages.ReqGetAttribute.RequestType[attributeName]);
+
+ return new Promise((resolve, reject) => {
+ this.bootstrap.client.getAttribute(req, (error, result) => {
+ throwOnUnsuccessfulAurumCall('getAttribute', error, result);
+
+ const resultType = result.getType();
+ //
+ log.debug(`RspGetAttribute.type: ${resultType}`);
+
+ // BUG: result.getValue() always returns 0 (STRING)
+ // even though, the value sent is a BOOL
+ // For now we ignore getValue() and always return boolean
+ // because currently supported attributes are all boolean
+
+ // TODO: remove this if, when the bug is fixed
+ if (result.getBoolvalue()) {
+ return resolve(true);
+ }
+ return resolve(null);
+
+ switch (resultType) {
+ case messages.ParamType.STRING:
+ return resolve(result.getStringvalue());
+ case messages.ParamType.INT:
+ return resolve(result.getIntvalue());
+ case messages.ParamType.DOUBLE:
+ return resolve(result.getDoublevalue());
+ case messages.ParamType.BOOL:
+ // The W3C spec requires to return 'true'
+ // (a *string*, not *boolean*) or null
+ if (result.getBoolvalue()) {
+ return resolve('true');
+ }
+ return resolve(null);
+ default:
+ // In case new ParamTypes will be added in the future
+ const resultTypeName = _.findKey(messages.ParamType, (val) => val === resultType);
+ log.error(`"${string(resultTypeName)}" parameter type is currently not supported`);
+ throw new errors.NotImplementedError(`Cannot handle "${string(resultTypeName)}" attribute type`);
+ }
+ });
+ });
};
commands.getLocation = async function (elementId) {
diff --git a/lib/aurum_backend/general.js b/lib/aurum_backend/general.js
index 9b77e7b..7fe07e6 100644
--- a/lib/aurum_backend/general.js
+++ b/lib/aurum_backend/general.js
@@ -48,7 +48,7 @@ commands.installApp = async function (tpk) {
return this.sdb.install(fullPath);
};
-commands.removeApp = function (appPackage) {
+commands.removeApp = async function (appPackage) {
/* TODO: rewrite using Aurum? */
return this.sdb.uninstall(appPackage);
};
diff --git a/lib/aurum_backend/utils.js b/lib/aurum_backend/utils.js
index 4817604..41efb1b 100644
--- a/lib/aurum_backend/utils.js
+++ b/lib/aurum_backend/utils.js
@@ -29,11 +29,19 @@ function throwOnAurumRequestFailure (commandName, result) {
}
}
-function throwOnUnsuccessfulAurumCall (aurumCommandName, grpcError, aurumResult, grpcCommandName = aurumCommandName) {
+/*
+ * Use this function to check, if there were any errors in:
+ * 1. gRPC protocol layer - if there was an error, "grpcError"
+ * argument will be an object, other than "undefined"
+ * 2. Aurum layer - if there was an error, the response from
+ * Aurum bootstrap, contained in grpcResult, will have "status"
+ * field set to a value other than "OK".
+ */
+function throwOnUnsuccessfulAurumCall (appiumCommandName, grpcError, grpcResult, grpcCommandName = appiumCommandName) {
if (grpcError) {
logAndThrowGrpcCommandError(grpcCommandName, grpcError);
}
- throwOnAurumRequestFailure(aurumCommandName, aurumResult);
+ throwOnAurumRequestFailure(appiumCommandName, grpcResult);
}
function isIterable (object) {
diff --git a/package.json b/package.json
index 01ef33f..e92bb74 100644
--- a/package.json
+++ b/package.json
@@ -70,6 +70,7 @@
"ajv": "^6.5.3",
"appium-gulp-plugins": "^5.4.0",
"babel-eslint": "^10.0.0",
+ "chai": "^4.3.4",
"eslint": "^7.9.0",
"eslint-config-appium": "^4.5.0",
"eslint-plugin-import": "^2.2.0",
diff --git a/test/elm-demo-tizen-mobile-test.js b/test/elm-demo-tizen-mobile-test.js
index 4104e94..59a22b9 100644
--- a/test/elm-demo-tizen-mobile-test.js
+++ b/test/elm-demo-tizen-mobile-test.js
@@ -1,23 +1,29 @@
+import { errors } from 'appium-base-driver/build/lib/protocol';
+import { assert } from 'chai';
const utils = require('./utils');
-import { strict as assert } from 'assert';
const TizenDriver = require('../lib/driver').TizenDriver;
-let driver;
-
-beforeEach(async function setUpTizenDriver () {
+async function getTizenDriver () {
const opts = {
tizenBackend: 'aurum',
appPackage: 'org.tizen.elm-demo-tizen-mobile'
};
- driver = new TizenDriver(opts, true);
+
+ const driver = new TizenDriver(opts, true);
const sessionCaps = {
platformName: 'tizen',
deviceName: 'TM1',
appPackage: 'org.tizen.elm-demo-tizen-mobile'
};
- return driver.createSession(sessionCaps);
+ await driver.createSession(sessionCaps);
+ return driver;
+}
+
+let driver;
+beforeEach('initialize driver', async function () {
+ driver = await getTizenDriver();
});
describe('Application management', function () {
@@ -43,9 +49,7 @@ describe('Application management', function () {
});
describe('findElement', function () {
-
describe('using "-tizen aurum" strategy', function () {
-
it('should support nested selectors', async function () {
let result = await driver.findElement('-tizen aurum', {
children: [{
@@ -73,7 +77,7 @@ describe('findElement', function () {
assert(result !== null);
assert(typeof result === 'string');
assert(utils.hasOnlyDigits(result));
- return true;
+ return;
});
});
@@ -146,3 +150,63 @@ describe('findElement', function () {
});
});
+describe('getAttribute', async function () {
+ // Attributes below are present in org.tizen.elm-demo-tizen-mobile
+ // application available at https://github.sec.samsung.net/p-kalota/elm-demo-tizen-mobile/
+ // The list below is based on the corresponding test case for Python API:
+ // https://github.sec.samsung.net/tizen/aurum/blob/7386c192cdcbea8c831ab7abc0e48a52873f7fed/protocol/examples/python/mobileDemoTestTM1/mobileDemoTest.py#L78
+
+ // Using 'true' and null instead of true/false is required by
+ // the W3C and JSONWP specs
+ const buttonAttributeValueList = [
+ ['VISIBLE', true],
+ ['FOCUSABLE', true],
+ ['FOCUSED', null],
+ ['ENABLED', true],
+ ['CLICKABLE', true],
+ ['SCROLLABLE', null],
+ ['CHECKABLE', null],
+ ['CHECKED', null],
+ ['SELECTED', null],
+ ['SELECTABLE', true],
+ ['SHOWING', true],
+ ];
+
+ // Element IDs differ between different TizenDriver instances
+ let buttonId;
+ beforeEach('get buttonId', async function () {
+ buttonId = await driver.findElement('-tizen aurum', {textField: 'Button'});
+ });
+
+ it('should get proper values of "Button"\'s attributes', async function () {
+ for (let [attributeName, expectedValue] of buttonAttributeValueList) {
+ const foundValue = await driver.getAttribute(attributeName, buttonId);
+ if (foundValue === null) {
+ assert.isNull(foundValue);
+ } else {
+ assert.typeOf(foundValue, typeof expectedValue);
+ }
+ assert.strictEqual(expectedValue, foundValue);
+ }
+ });
+
+ it('should succeed in getting an attribute when its name is not upper-case-only', async function () {
+ const [pokemonCaseAttributeName, expectedValue] = ['vIsIbLe', true];
+ const foundValue = await driver.getAttribute(pokemonCaseAttributeName, buttonId);
+ if (foundValue === null) {
+ assert.isNull(foundValue);
+ } else {
+ assert.typeOf(foundValue, typeof expectedValue);
+ }
+ assert.strictEqual(expectedValue, foundValue);
+ });
+
+ it('should raise InvalidArgumentError when given attribute with unsupported name', async function () {
+ const unsupportedAttributeName = 'unsupported_attribute_name';
+ try {
+ await driver.getAttribute(unsupportedAttributeName, buttonId);
+ } catch (error) {
+ assert.instanceOf(error, errors.InvalidArgumentError);
+ }
+ });
+});
\ No newline at end of file
From 2fd4ce8205ad36654962a9bbb3094cc4c98a5274 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Thu, 8 Jul 2021 14:19:16 +0200
Subject: [PATCH 09/37] Use Aurum as the backend for Tizen's Appium
From now on, Aurum is the main and only backend used for communication
between the Appium driver implemented in this repo and Tizen target.
This commit removes support for the old backend (UIAutomator).
---
gulpfile.js | 6 +-
lib/aurum_backend/action.js | 90 -----
lib/aurum_backend/aurum_client.js | 17 -
lib/aurum_backend/element.js | 109 ------
lib/aurum_backend/execute.js | 12 -
lib/aurum_backend/find.js | 182 ----------
lib/aurum_backend/general.js | 126 -------
lib/aurum_backend/index.js | 22 --
lib/aurum_backend/touch.js | 41 ---
lib/commands/action.js | 54 +--
lib/{aurum_backend => commands}/aurum.proto | 0
.../aurum_grpc_pb.js | 182 +++++-----
lib/{aurum_backend => commands}/aurum_pb.js | 0
lib/commands/element.js | 215 ++++--------
lib/commands/execute.js | 5 +-
lib/commands/find.js | 137 ++++++--
lib/{aurum_backend => commands}/gen.sh | 0
lib/commands/general.js | 86 +++--
lib/commands/index.js | 6 +-
lib/commands/touch.js | 77 ++---
lib/{aurum_backend => commands}/utils.js | 0
lib/driver.js | 46 ++-
lib/tizen-bootstrap.js | 313 ------------------
package.json | 9 +-
.../org.tizen.uiautomator-1.0.1-arm.tpk | Bin 66075 -> 0 bytes
.../org.tizen.uiautomator-1.0.1-x86.tpk | Bin 66490 -> 0 bytes
26 files changed, 389 insertions(+), 1346 deletions(-)
delete mode 100644 lib/aurum_backend/action.js
delete mode 100644 lib/aurum_backend/aurum_client.js
delete mode 100644 lib/aurum_backend/element.js
delete mode 100644 lib/aurum_backend/execute.js
delete mode 100644 lib/aurum_backend/find.js
delete mode 100644 lib/aurum_backend/general.js
delete mode 100644 lib/aurum_backend/index.js
delete mode 100644 lib/aurum_backend/touch.js
rename lib/{aurum_backend => commands}/aurum.proto (100%)
rename lib/{aurum_backend => commands}/aurum_grpc_pb.js (82%)
rename lib/{aurum_backend => commands}/aurum_pb.js (100%)
rename lib/{aurum_backend => commands}/gen.sh (100%)
rename lib/{aurum_backend => commands}/utils.js (100%)
delete mode 100644 lib/tizen-bootstrap.js
delete mode 100644 uiautomator/org.tizen.uiautomator-1.0.1-arm.tpk
delete mode 100644 uiautomator/org.tizen.uiautomator-1.0.1-x86.tpk
diff --git a/gulpfile.js b/gulpfile.js
index 9bdf1a9..8e8dbb2 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -11,14 +11,14 @@ const fs = require('fs');
*/
(function copyAurumProtoTask () {
const buildDir = boilerplate.DEFAULTS.transpile ? boilerplate.DEFAULTS.transpileOut : '.';
- const aurumProtoDestDir = `${__dirname}/${buildDir}/lib/aurum_backend`;
+ const aurumProtoDestDir = `${__dirname}/${buildDir}/lib/commands`;
fs.mkdirSync(aurumProtoDestDir, {recursive: true});
- fs.copyFileSync(__dirname + '/lib/aurum_backend/aurum.proto', `${aurumProtoDestDir}/aurum.proto`);
+ fs.copyFileSync(__dirname + '/lib/commands/aurum.proto', `${aurumProtoDestDir}/aurum.proto`);
})();
boilerplate.use(gulp)({
build: 'appium-tizen-driver',
- testTimeout: 10000,
+ testTimeout: 30000,
test: {files: ['${testDir}/**/*.js']},
testReporter: 'spec'
});
diff --git a/lib/aurum_backend/action.js b/lib/aurum_backend/action.js
deleted file mode 100644
index 0f6e995..0000000
--- a/lib/aurum_backend/action.js
+++ /dev/null
@@ -1,90 +0,0 @@
-import { fs } from 'appium-support';
-import _ from 'lodash';
-import B from 'bluebird';
-import path from 'path';
-import jimp from 'jimp';
-import log from '../logger';
-
-import { errors } from 'appium-base-driver';
-
-let commands = {}, extensions = {};
-
-commands.flick = async function (element, xSpeed, ySpeed, xOffset, yOffset, speed) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.pullFile = async function (remotePath) {
- const rootDir = path.resolve(__dirname, '..', '..');
- const filePath = path.resolve(rootDir, 'file');
- let localFile = filePath + '/appiumfile.tmp';
- await this.sdb.pull(remotePath, localFile);
- let data = await fs.readFile(localFile);
- let b64data = new Buffer(data).toString('base64');
- if (await fs.exists(localFile)) {
- await fs.unlink(localFile);
- }
- return b64data;
-};
-
-commands.pushFile = async function (file, base64Data) {
- const rootDir = path.resolve(__dirname, '..', '..', '..');
- const fileDir = path.resolve(rootDir, 'app');
- const localFile = path.resolve(fileDir, file);
- if (file.indexOf('/') > -1) {
- log.errorAndThrow(`It is expected that file point to a file and not to a folder. ` + `'${file}' is given instead`);
- }
-
- if (_.isArray(base64Data)) {
- base64Data = Buffer.from(base64Data).toString('utf8');
- }
-
- const content = Buffer.from(base64Data, 'base64');
- let isFileDir = await fs.exists(fileDir);
- if (!isFileDir) {
- await fs.mkdir(fileDir);
- }
-
- await fs.writeFile(localFile, content.toString('binary'), 'binary');
-
- return true;
-};
-
-async function takeScreenShot (sdb) {
- return await sdb.takeScreenShot();
-}
-
-async function getScreenshotData (sdb) {
- const rootDir = path.resolve(__dirname, '..', '..');
- const filePath = path.resolve(rootDir, 'file');
- let localFile = filePath + '/screenShot.tmp';
- if (await fs.exists(localFile)) {
- await fs.unlink(localFile);
- }
- try {
- const pngDir = '/tmp/';
- const png = path.posix.resolve(pngDir, 'dump_screen.png');
- await sdb.pull(png, localFile);
- return await jimp.read(localFile);
- } finally {
- if (await fs.exists(localFile)) {
- await fs.unlink(localFile);
- }
- }
-}
-
-commands.getScreenshot = async function () {
- let result = await takeScreenShot(this.sdb);
-
- if (result) {
- let image = await getScreenshotData(this.sdb);
- const getBuffer = B.promisify(image.getBuffer, { context: image });
- const imgBuffer = await getBuffer(jimp.MIME_PNG);
- return imgBuffer.toString('base64');
- } else {
- return null;
- }
-};
-
-Object.assign(extensions, commands);
-export { commands };
-export default extensions;
diff --git a/lib/aurum_backend/aurum_client.js b/lib/aurum_backend/aurum_client.js
deleted file mode 100644
index 15f0b59..0000000
--- a/lib/aurum_backend/aurum_client.js
+++ /dev/null
@@ -1,17 +0,0 @@
-let PROTO_PATH = __dirname + '/aurum.proto';
-let grpc = require('@grpc/grpc-js');
-let protoLoader = require('@grpc/proto-loader');
-
-
-let packageDefinition = protoLoader.loadSync(
- PROTO_PATH,
- {keepCase: true,
- longs: String,
- enums: String,
- defaults: true,
- oneofs: true
- });
-
-let protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
-// The protoDescriptor object has the full package hierarchy
-let routeguide = protoDescriptor.routeguide;
\ No newline at end of file
diff --git a/lib/aurum_backend/element.js b/lib/aurum_backend/element.js
deleted file mode 100644
index 925ff81..0000000
--- a/lib/aurum_backend/element.js
+++ /dev/null
@@ -1,109 +0,0 @@
-import log from '../logger';
-import _ from 'lodash';
-import { sleep } from 'asyncbox';
-let commands = {}, extensions = {};
-
-import { errors } from 'appium-base-driver';
-
-import { throwOnUnsuccessfulAurumCall } from './utils';
-import messages from './aurum_pb';
-
-// Spec: https://w3c.github.io/webdriver/webdriver-spec.html#get-element-attribute
-commands.getAttribute = async function (attribute, elementId) {
- // This function is case-insensitive with regard to
- // attributes to resemble HTML
- const attributeName = attribute.toUpperCase();
-
- if (!(attributeName in messages.ReqGetAttribute.RequestType)) {
- const errorMessage = `${attributeName} is not a valid attribute name. Valid attribute names are:\n${Object.keys(messages.ReqGetAttribute.RequestType).reduce((accum, x) => accum + '\n' + x)}`;
- log.errorAndThrow(new errors.InvalidArgumentError(errorMessage));
- }
-
- const req = new messages.ReqGetAttribute();
- req.setElementid(elementId);
- req.setAttribute(messages.ReqGetAttribute.RequestType[attributeName]);
-
- return new Promise((resolve, reject) => {
- this.bootstrap.client.getAttribute(req, (error, result) => {
- throwOnUnsuccessfulAurumCall('getAttribute', error, result);
-
- const resultType = result.getType();
- //
- log.debug(`RspGetAttribute.type: ${resultType}`);
-
- // BUG: result.getValue() always returns 0 (STRING)
- // even though, the value sent is a BOOL
- // For now we ignore getValue() and always return boolean
- // because currently supported attributes are all boolean
-
- // TODO: remove this if, when the bug is fixed
- if (result.getBoolvalue()) {
- return resolve(true);
- }
- return resolve(null);
-
- switch (resultType) {
- case messages.ParamType.STRING:
- return resolve(result.getStringvalue());
- case messages.ParamType.INT:
- return resolve(result.getIntvalue());
- case messages.ParamType.DOUBLE:
- return resolve(result.getDoublevalue());
- case messages.ParamType.BOOL:
- // The W3C spec requires to return 'true'
- // (a *string*, not *boolean*) or null
- if (result.getBoolvalue()) {
- return resolve('true');
- }
- return resolve(null);
- default:
- // In case new ParamTypes will be added in the future
- const resultTypeName = _.findKey(messages.ParamType, (val) => val === resultType);
- log.error(`"${string(resultTypeName)}" parameter type is currently not supported`);
- throw new errors.NotImplementedError(`Cannot handle "${string(resultTypeName)}" attribute type`);
- }
- });
- });
-};
-
-commands.getLocation = async function (elementId) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.getLocationInView = async function (elementId) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.getText = async function (elementId) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.elementEnabled = async function (elementId) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.elementDisplayed = async function (elementId) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.elementSelected = function () {
-};
-
-commands.getSize = async function (elementId) {
-};
-
-commands.setValue = async function (keys, elementId) {
-};
-
-commands.setValueImmediate = async function (keys, elementId) {
-};
-
-commands.clear = async function (elementId) {
-};
-
-commands.replaceValue = async function (value, elementId) {
-};
-
-Object.assign(extensions, commands);
-export { commands };
-export default extensions;
diff --git a/lib/aurum_backend/execute.js b/lib/aurum_backend/execute.js
deleted file mode 100644
index 9e22d62..0000000
--- a/lib/aurum_backend/execute.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { errors } from 'appium-base-driver';
-
-let commands = {}, extensions = {};
-
-commands.execute = async function (script) {
- // Aurum does not support JS script execution on-device
- throw new errors.UnsupportedOpperationError('Execution of JS on device under test is not supported.');
-};
-
-Object.assign(extensions, commands);
-export { commands };
-export default extensions;
diff --git a/lib/aurum_backend/find.js b/lib/aurum_backend/find.js
deleted file mode 100644
index 12d5478..0000000
--- a/lib/aurum_backend/find.js
+++ /dev/null
@@ -1,182 +0,0 @@
-'use strict';
-
-import _ from 'lodash';
-import { errors, isErrorType } from 'appium-base-driver';
-import messages from './aurum_pb';
-import { reject, resolve } from 'bluebird';
-
-import { throwOnUnsuccessfulAurumCall, isIterable } from './utils';
-
-let helpers = {},
- extensions = {};
-
-let elements = {};
-
-class FindElementReqFactory {
- constructor (grpc_message_defs) {
- this.grpc_message_defs = grpc_message_defs;
-
- this.strategies = {
- 'id': this.makeIdReq.bind(this),
- '-tizen aurum': this.makeTizenAurumReq.bind(this),
- 'automationId': this.makeAutomationIdRequest.bind(this),
- 'accessibility id': this.makeIdReq.bind(this),
- // TODO: does "class name" strategy correspond to "ReqFindElement.widgetStyle?
- 'class name': this.makeWidgetStyle.bind(this),
- // TODO: does "name" strategy correspond to "ReqFindElementtextField?
- 'name': this.makeTextFieldReq.bind(this)
- };
- }
-
- create (strategy, selector) {
- if (!(strategy in this.strategies)) {
- throw errors.InvalidSelectorError(`"${strategy}" strategy is not supported`);
- }
-
- return this.strategies[strategy](selector);
- }
-
- makeIdReq (elementId) {
- const req = new messages.ReqFindElement();
- req.setElementid(elementId);
- return req;
- }
-
- makeTizenAurumReq (constraints) {
- const req = new messages.ReqFindElement();
-
- req.setElementid(constraints?.elementId);
- req.setAutomationid(constraints?.automationId);
- req.setTextfield(constraints?.textField);
- req.setWidgettype(constraints?.widgetType);
- req.setWidgetstyle(constraints?.widgetStyle);
- req.setIschecked(constraints?.isChecked);
- req.setIscheckable(constraints?.isCheckable);
- req.setIsclickable(constraints?.isClickable);
- req.setIsenabled(constraints?.isEnabled);
- req.setIsfocused(constraints?.isFocused);
- req.setIsfocusable(constraints?.isFocusable);
- req.setIsscrollable(constraints?.isScrollable);
- req.setIsselected(constraints?.isSelected);
- req.setIsshowing(constraints?.isShowing);
- req.setIsactive(constraints?.isActive);
- req.setMindepth(constraints?.minDepth);
- req.setMaxdepth(constraints?.maxDepth);
-
- if (isIterable(constraints.children)) {
- for (let childConstraints of constraints.children) {req.addChildren(this.makeTizenAurumReq(childConstraints));}
- }
- return req;
- }
-
- makeAutomationIdRequest (automationId) {
- const req = new messages.ReqFindElement();
- req.setAutomationid(automationId);
- return req;
- }
-
- makeWidgetStyle (widgetStyle) {
- const req = new messages.ReqFindElement();
- req.setWidgetstyle(widgetStyle);
- return req;
- }
-
- makeTextFieldReq (textField) {
- const req = new messages.ReqFindElement();
- req.setTextfield(textField);
- return req;
- }
-
-}
-
-const requestFactory = new FindElementReqFactory(messages);
-
-helpers.doFindElementOrEls = async function (params) {
- const {
- strategy = 'automationId',
- selector,
- multiple
- } = params;
-
- if (!selector) {
- throw new errors.InvalidSelectorError('findElement()/findElements() require selector');
- }
-
- const findElementReq = requestFactory.create(strategy, selector);
-
- return new Promise((resolve, reject) => {
- const call = this.bootstrap.client.findElement(findElementReq,
- (error, result) => {
- throwOnUnsuccessfulAurumCall('findElement or findElements', error, result, 'findElement');
-
- const elementIds = result.getElementsList().map((element) => element.getElementid());
-
- if (multiple) {
- return resolve(elementIds);
- }
-
- return resolve(elementIds[0]);
- });
- });
-};
-
-helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
- this.validateLocatorStrategy(strategy);
-
- if (!selector) {
- throw new Error('Must provide a selector when finding elements');
- }
-
- let params = {
- strategy,
- selector,
- context,
- multiple: mult
- };
-
- let element;
-
- let doFind = async () => {
- try {
- element = await this.doFindElementOrEls(params);
- } catch (err) {
- if (isErrorType(err, errors.NoSuchElementError)) {
- return false;
- }
-
- throw err;
- }
-
- return !_.isEmpty(element);
- };
-
- try {
- await this.implicitWaitForCondition(doFind);
- } catch (err) {
- if (err.message && err.message.match(/Condition unmet/)) {
- element = [];
- } else {
- throw err;
- }
- }
-
- if (mult) {
- return element;
- } else {
- if (_.isEmpty(element)) {
- throw new errors.NoSuchElementError();
- }
-
- return element;
- }
-};
-
-helpers.getAutomationId = function (elementId) {
- throw new errors.NotImplementedError('TODO');
-};
-
-const SUPPORTED_LOCATOR_STRATEGIES = Object.keys(requestFactory.strategies);
-Object.assign(extensions, helpers);
-
-export { extensions, SUPPORTED_LOCATOR_STRATEGIES };
-export default extensions;
diff --git a/lib/aurum_backend/general.js b/lib/aurum_backend/general.js
deleted file mode 100644
index 7fe07e6..0000000
--- a/lib/aurum_backend/general.js
+++ /dev/null
@@ -1,126 +0,0 @@
-import log from '../logger';
-import _ from 'lodash';
-import { fs } from 'appium-support';
-import path from 'path';
-
-import { errors } from 'appium-base-driver';
-import messages from './aurum_pb';
-import { logAndThrowGrpcCommandError, throwOnAurumRequestFailure, throwOnUnsuccessfulAurumCall } from './utils';
-
-let commands = {}, helpers = {}, extensions = {};
-
-commands.getDeviceTime = async function () {
- /* TODO: rewrite using Aurum command? */
- log.info('Attempting to capture tizen device date and time');
- try {
- let out = await this.sdb.shell(['date']);
- return out.trim();
- } catch (err) {
- log.errorAndThrow(`Could not capture device date and time: ${err}`);
- }
-};
-
-commands.pressKeyCode = async function (key) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.keys = async function (keys) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.sendKey = async function (key) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.back = async function () {
-};
-
-commands.installApp = async function (tpk) {
- /* TODO: rewrite using Aurum? */
- const rootDir = path.resolve(__dirname, '..', '..', '..');
- const tpkPath = path.resolve(rootDir, 'app');
-
- let fullPath = path.resolve(tpkPath, tpk);
- if (!(await fs.exists(fullPath))) {
- log.errorAndThrow(`Could not find app tpk at ${tpk}`);
- return false;
- }
- return this.sdb.install(fullPath);
-};
-
-commands.removeApp = async function (appPackage) {
- /* TODO: rewrite using Aurum? */
- return this.sdb.uninstall(appPackage);
-};
-
-commands.isAppInstalled = async function (appPackage) {
- /* TODO: rewrite using Aurum? */
- return this.sdb.isAppInstalled(appPackage);
-};
-
-commands.launchApp = async function () {
- return await this.startApp();
-};
-
-commands.startApp = async function (opts = {}) {
- return new Promise((resolve, reject) => {
- const packageName = this.opts.appPackage;
-
- const callOptions = {};
- if ('timeout' in opts) {
- callOptions.deadline = new Date(Date.now() + opts.timeout);
- }
-
- const req = new messages.ReqLaunchApp();
- req.setPackagename(packageName);
- this.bootstrap.client.launchApp(req,
- callOptions,
- (error, result) => {
- throwOnUnsuccessfulAurumCall('startApp', error, result, 'launchApp');
-
- log.info(`Application started: ${packageName}`);
- resolve();
- });
- });
-};
-
-commands.closeApp = async function () {
- return new Promise((resolve, reject) => {
- const packageName = this.opts.appPackage;
-
- const req = new messages.ReqCloseApp();
- req.setPackagename(packageName);
- this.bootstrap.client.closeApp(req,
- (error, result) => {
- throwOnUnsuccessfulAurumCall('closeApp', error, result);
-
- log.info(`App closed: ${packageName}`);
- resolve();
- });
- });
-};
-
-commands.isStartedApp = async function (opts = {}) {
- return new Promise((resolve, reject) => {
- const packageName = this.opts.appPackage;
-
- const req = new messages.ReqGetAppInfo();
- req.setPackagename(packageName);
- this.bootstrap.client.getAppInfo(req,
- (error, result) => {
- throwOnUnsuccessfulAurumCall('isStartedApp', error, result, 'getAppInfo');
-
- if (!result.getIsinstalled()) {
- const errorMessage = `The application is not installed ${packageName}`;
- log.error(errorMessage);
- throw new errors.InvalidArgumentError(errorMessage);
- }
-
- resolve(result.getIsrunning());
- });
- });
-};
-
-Object.assign(extensions, commands, helpers);
-export { commands, helpers };
-export default extensions;
diff --git a/lib/aurum_backend/index.js b/lib/aurum_backend/index.js
deleted file mode 100644
index 46de996..0000000
--- a/lib/aurum_backend/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import executeCmds from './execute';
-import { extensions as findCmds, SUPPORTED_LOCATOR_STRATEGIES } from './find';
-import generalCmds from './general';
-import elementCmds from './element';
-import actionCmds from './action';
-import touchCmds from './touch';
-
-let commands = {};
-Object.assign(
- commands,
- executeCmds,
- findCmds,
- generalCmds,
- elementCmds,
- actionCmds,
- touchCmds
-);
-
-const SYSTEM_PORT = 50051;
-
-export default commands;
-export { commands, SYSTEM_PORT, SUPPORTED_LOCATOR_STRATEGIES };
diff --git a/lib/aurum_backend/touch.js b/lib/aurum_backend/touch.js
deleted file mode 100644
index a4d7187..0000000
--- a/lib/aurum_backend/touch.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import log from '../logger';
-import B from 'bluebird';
-import { errors, isErrorType } from 'appium-base-driver';
-
-let commands = {}, helpers = {}, extensions = {};
-
-commands.click = async function (elementId, x = 0, y = 0) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.touchUp = async function (x = 1, y = 1, elementId = '') {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.touchDown = async function (x, y, elementId = '') {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.touchMove = async function (xDown, yDown, xUp, yUp, steps = 10, elementId = null) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.touchLongClick = async function (elementId, x, y, duration) {
- throw new errors.NotImplementedError('TODO');
-};
-
-commands.tap = async function (elementId, x = 0, y = 0, count = 1) {
- /*
- * TODO: remove this?
- * WebDriver spec and appium-base-driver don't support "tap" command,
- * but the previous version of appium-tizen-driver differentiated
- * between tap/single tap
- * It seems, that this old "tap" corresponds to "click" in the official
- * spec.
- */
- throw new errors.NotImplementedError('TODO');
-};
-
-Object.assign(extensions, commands, helpers);
-export { commands, helpers };
-export default extensions;
diff --git a/lib/commands/action.js b/lib/commands/action.js
index 8d16e9a..0f6e995 100644
--- a/lib/commands/action.js
+++ b/lib/commands/action.js
@@ -5,62 +5,12 @@ import path from 'path';
import jimp from 'jimp';
import log from '../logger';
-const swipeStepsPerSec = 28;
+import { errors } from 'appium-base-driver';
let commands = {}, extensions = {};
commands.flick = async function (element, xSpeed, ySpeed, xOffset, yOffset, speed) {
- if (element) {
- return await this.fakeFlickElement(element, xOffset, yOffset, speed);
- } else {
- return await this.fakeFlick(xSpeed, ySpeed);
- }
-};
-
-commands.fakeFlick = async function (xSpeed, ySpeed) {
- return await this.bootstrap.sendAction('element:flick', { xSpeed, ySpeed });
-};
-
-commands.fakeFlickElement = async function (elementId, xoffset, yoffset, speed) {
- let steps = 1250.0 / speed + 1;
-
- let xStart = 1;
- let yStart = 1;
-
- if (elementId === this.sessionId) {
- elementId = null;
- }
- if (elementId) {
- let location = await this.getLocationValueByElementId(elementId);
- xStart = location[0];
- yStart = location[1];
- }
-
- let xEnd = xStart + xoffset;
- let yEnd = yStart + yoffset;
-
- let params = [xStart, yStart, xEnd, yEnd, steps];
-
- return await this.doSwipe(params);
-};
-
-commands.swipe = async function (startX, startY, endX, endY, duration) {
- if (startX === 'null') {
- startX = 1;
- }
- if (startY === 'null') {
- startY = 1;
- }
- let swipeOpts = [
- startX, startY, endX, endY,
- Math.round(duration * swipeStepsPerSec)
- ];
-
- return await this.doSwipe(swipeOpts);
-};
-
-commands.doSwipe = async function (swipeOpts) {
- return await this.bootstrap.sendAction('element:drag', swipeOpts);
+ throw new errors.NotImplementedError('TODO');
};
commands.pullFile = async function (remotePath) {
diff --git a/lib/aurum_backend/aurum.proto b/lib/commands/aurum.proto
similarity index 100%
rename from lib/aurum_backend/aurum.proto
rename to lib/commands/aurum.proto
diff --git a/lib/aurum_backend/aurum_grpc_pb.js b/lib/commands/aurum_grpc_pb.js
similarity index 82%
rename from lib/aurum_backend/aurum_grpc_pb.js
rename to lib/commands/aurum_grpc_pb.js
index 77d4fc8..a913155 100644
--- a/lib/aurum_backend/aurum_grpc_pb.js
+++ b/lib/commands/aurum_grpc_pb.js
@@ -1,490 +1,490 @@
// GENERATED CODE -- DO NOT EDIT!
'use strict';
-var grpc = require('grpc');
-var aurum_pb = require('./aurum_pb.js');
+let grpc = require('grpc');
+let aurum_pb = require('./aurum_pb.js');
-function serialize_aurum_ReqClear(arg) {
+function serialize_aurum_ReqClear (arg) {
if (!(arg instanceof aurum_pb.ReqClear)) {
throw new Error('Expected argument of type aurum.ReqClear');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqClear(buffer_arg) {
+function deserialize_aurum_ReqClear (buffer_arg) {
return aurum_pb.ReqClear.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqClick(arg) {
+function serialize_aurum_ReqClick (arg) {
if (!(arg instanceof aurum_pb.ReqClick)) {
throw new Error('Expected argument of type aurum.ReqClick');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqClick(buffer_arg) {
+function deserialize_aurum_ReqClick (buffer_arg) {
return aurum_pb.ReqClick.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqCloseApp(arg) {
+function serialize_aurum_ReqCloseApp (arg) {
if (!(arg instanceof aurum_pb.ReqCloseApp)) {
throw new Error('Expected argument of type aurum.ReqCloseApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqCloseApp(buffer_arg) {
+function deserialize_aurum_ReqCloseApp (buffer_arg) {
return aurum_pb.ReqCloseApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqDumpObjectTree(arg) {
+function serialize_aurum_ReqDumpObjectTree (arg) {
if (!(arg instanceof aurum_pb.ReqDumpObjectTree)) {
throw new Error('Expected argument of type aurum.ReqDumpObjectTree');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqDumpObjectTree(buffer_arg) {
+function deserialize_aurum_ReqDumpObjectTree (buffer_arg) {
return aurum_pb.ReqDumpObjectTree.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqEmpty(arg) {
+function serialize_aurum_ReqEmpty (arg) {
if (!(arg instanceof aurum_pb.ReqEmpty)) {
throw new Error('Expected argument of type aurum.ReqEmpty');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqEmpty(buffer_arg) {
+function deserialize_aurum_ReqEmpty (buffer_arg) {
return aurum_pb.ReqEmpty.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqFindElement(arg) {
+function serialize_aurum_ReqFindElement (arg) {
if (!(arg instanceof aurum_pb.ReqFindElement)) {
throw new Error('Expected argument of type aurum.ReqFindElement');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqFindElement(buffer_arg) {
+function deserialize_aurum_ReqFindElement (buffer_arg) {
return aurum_pb.ReqFindElement.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqFlick(arg) {
+function serialize_aurum_ReqFlick (arg) {
if (!(arg instanceof aurum_pb.ReqFlick)) {
throw new Error('Expected argument of type aurum.ReqFlick');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqFlick(buffer_arg) {
+function deserialize_aurum_ReqFlick (buffer_arg) {
return aurum_pb.ReqFlick.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqGetAppInfo(arg) {
+function serialize_aurum_ReqGetAppInfo (arg) {
if (!(arg instanceof aurum_pb.ReqGetAppInfo)) {
throw new Error('Expected argument of type aurum.ReqGetAppInfo');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqGetAppInfo(buffer_arg) {
+function deserialize_aurum_ReqGetAppInfo (buffer_arg) {
return aurum_pb.ReqGetAppInfo.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqGetAttribute(arg) {
+function serialize_aurum_ReqGetAttribute (arg) {
if (!(arg instanceof aurum_pb.ReqGetAttribute)) {
throw new Error('Expected argument of type aurum.ReqGetAttribute');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqGetAttribute(buffer_arg) {
+function deserialize_aurum_ReqGetAttribute (buffer_arg) {
return aurum_pb.ReqGetAttribute.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqGetDeviceTime(arg) {
+function serialize_aurum_ReqGetDeviceTime (arg) {
if (!(arg instanceof aurum_pb.ReqGetDeviceTime)) {
throw new Error('Expected argument of type aurum.ReqGetDeviceTime');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqGetDeviceTime(buffer_arg) {
+function deserialize_aurum_ReqGetDeviceTime (buffer_arg) {
return aurum_pb.ReqGetDeviceTime.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqGetLocation(arg) {
+function serialize_aurum_ReqGetLocation (arg) {
if (!(arg instanceof aurum_pb.ReqGetLocation)) {
throw new Error('Expected argument of type aurum.ReqGetLocation');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqGetLocation(buffer_arg) {
+function deserialize_aurum_ReqGetLocation (buffer_arg) {
return aurum_pb.ReqGetLocation.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqGetSize(arg) {
+function serialize_aurum_ReqGetSize (arg) {
if (!(arg instanceof aurum_pb.ReqGetSize)) {
throw new Error('Expected argument of type aurum.ReqGetSize');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqGetSize(buffer_arg) {
+function deserialize_aurum_ReqGetSize (buffer_arg) {
return aurum_pb.ReqGetSize.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqGetValue(arg) {
+function serialize_aurum_ReqGetValue (arg) {
if (!(arg instanceof aurum_pb.ReqGetValue)) {
throw new Error('Expected argument of type aurum.ReqGetValue');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqGetValue(buffer_arg) {
+function deserialize_aurum_ReqGetValue (buffer_arg) {
return aurum_pb.ReqGetValue.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqInstallApp(arg) {
+function serialize_aurum_ReqInstallApp (arg) {
if (!(arg instanceof aurum_pb.ReqInstallApp)) {
throw new Error('Expected argument of type aurum.ReqInstallApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqInstallApp(buffer_arg) {
+function deserialize_aurum_ReqInstallApp (buffer_arg) {
return aurum_pb.ReqInstallApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqKey(arg) {
+function serialize_aurum_ReqKey (arg) {
if (!(arg instanceof aurum_pb.ReqKey)) {
throw new Error('Expected argument of type aurum.ReqKey');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqKey(buffer_arg) {
+function deserialize_aurum_ReqKey (buffer_arg) {
return aurum_pb.ReqKey.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqLaunchApp(arg) {
+function serialize_aurum_ReqLaunchApp (arg) {
if (!(arg instanceof aurum_pb.ReqLaunchApp)) {
throw new Error('Expected argument of type aurum.ReqLaunchApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqLaunchApp(buffer_arg) {
+function deserialize_aurum_ReqLaunchApp (buffer_arg) {
return aurum_pb.ReqLaunchApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqRemoveApp(arg) {
+function serialize_aurum_ReqRemoveApp (arg) {
if (!(arg instanceof aurum_pb.ReqRemoveApp)) {
throw new Error('Expected argument of type aurum.ReqRemoveApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqRemoveApp(buffer_arg) {
+function deserialize_aurum_ReqRemoveApp (buffer_arg) {
return aurum_pb.ReqRemoveApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqSetValue(arg) {
+function serialize_aurum_ReqSetValue (arg) {
if (!(arg instanceof aurum_pb.ReqSetValue)) {
throw new Error('Expected argument of type aurum.ReqSetValue');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqSetValue(buffer_arg) {
+function deserialize_aurum_ReqSetValue (buffer_arg) {
return aurum_pb.ReqSetValue.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqTakeScreenshot(arg) {
+function serialize_aurum_ReqTakeScreenshot (arg) {
if (!(arg instanceof aurum_pb.ReqTakeScreenshot)) {
throw new Error('Expected argument of type aurum.ReqTakeScreenshot');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqTakeScreenshot(buffer_arg) {
+function deserialize_aurum_ReqTakeScreenshot (buffer_arg) {
return aurum_pb.ReqTakeScreenshot.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqTouchDown(arg) {
+function serialize_aurum_ReqTouchDown (arg) {
if (!(arg instanceof aurum_pb.ReqTouchDown)) {
throw new Error('Expected argument of type aurum.ReqTouchDown');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqTouchDown(buffer_arg) {
+function deserialize_aurum_ReqTouchDown (buffer_arg) {
return aurum_pb.ReqTouchDown.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqTouchMove(arg) {
+function serialize_aurum_ReqTouchMove (arg) {
if (!(arg instanceof aurum_pb.ReqTouchMove)) {
throw new Error('Expected argument of type aurum.ReqTouchMove');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqTouchMove(buffer_arg) {
+function deserialize_aurum_ReqTouchMove (buffer_arg) {
return aurum_pb.ReqTouchMove.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_ReqTouchUp(arg) {
+function serialize_aurum_ReqTouchUp (arg) {
if (!(arg instanceof aurum_pb.ReqTouchUp)) {
throw new Error('Expected argument of type aurum.ReqTouchUp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_ReqTouchUp(buffer_arg) {
+function deserialize_aurum_ReqTouchUp (buffer_arg) {
return aurum_pb.ReqTouchUp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspClear(arg) {
+function serialize_aurum_RspClear (arg) {
if (!(arg instanceof aurum_pb.RspClear)) {
throw new Error('Expected argument of type aurum.RspClear');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspClear(buffer_arg) {
+function deserialize_aurum_RspClear (buffer_arg) {
return aurum_pb.RspClear.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspClick(arg) {
+function serialize_aurum_RspClick (arg) {
if (!(arg instanceof aurum_pb.RspClick)) {
throw new Error('Expected argument of type aurum.RspClick');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspClick(buffer_arg) {
+function deserialize_aurum_RspClick (buffer_arg) {
return aurum_pb.RspClick.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspCloseApp(arg) {
+function serialize_aurum_RspCloseApp (arg) {
if (!(arg instanceof aurum_pb.RspCloseApp)) {
throw new Error('Expected argument of type aurum.RspCloseApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspCloseApp(buffer_arg) {
+function deserialize_aurum_RspCloseApp (buffer_arg) {
return aurum_pb.RspCloseApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspDumpObjectTree(arg) {
+function serialize_aurum_RspDumpObjectTree (arg) {
if (!(arg instanceof aurum_pb.RspDumpObjectTree)) {
throw new Error('Expected argument of type aurum.RspDumpObjectTree');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspDumpObjectTree(buffer_arg) {
+function deserialize_aurum_RspDumpObjectTree (buffer_arg) {
return aurum_pb.RspDumpObjectTree.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspEmpty(arg) {
+function serialize_aurum_RspEmpty (arg) {
if (!(arg instanceof aurum_pb.RspEmpty)) {
throw new Error('Expected argument of type aurum.RspEmpty');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspEmpty(buffer_arg) {
+function deserialize_aurum_RspEmpty (buffer_arg) {
return aurum_pb.RspEmpty.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspFindElement(arg) {
+function serialize_aurum_RspFindElement (arg) {
if (!(arg instanceof aurum_pb.RspFindElement)) {
throw new Error('Expected argument of type aurum.RspFindElement');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspFindElement(buffer_arg) {
+function deserialize_aurum_RspFindElement (buffer_arg) {
return aurum_pb.RspFindElement.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspFlick(arg) {
+function serialize_aurum_RspFlick (arg) {
if (!(arg instanceof aurum_pb.RspFlick)) {
throw new Error('Expected argument of type aurum.RspFlick');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspFlick(buffer_arg) {
+function deserialize_aurum_RspFlick (buffer_arg) {
return aurum_pb.RspFlick.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspGetAppInfo(arg) {
+function serialize_aurum_RspGetAppInfo (arg) {
if (!(arg instanceof aurum_pb.RspGetAppInfo)) {
throw new Error('Expected argument of type aurum.RspGetAppInfo');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspGetAppInfo(buffer_arg) {
+function deserialize_aurum_RspGetAppInfo (buffer_arg) {
return aurum_pb.RspGetAppInfo.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspGetAttribute(arg) {
+function serialize_aurum_RspGetAttribute (arg) {
if (!(arg instanceof aurum_pb.RspGetAttribute)) {
throw new Error('Expected argument of type aurum.RspGetAttribute');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspGetAttribute(buffer_arg) {
+function deserialize_aurum_RspGetAttribute (buffer_arg) {
return aurum_pb.RspGetAttribute.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspGetDeviceTime(arg) {
+function serialize_aurum_RspGetDeviceTime (arg) {
if (!(arg instanceof aurum_pb.RspGetDeviceTime)) {
throw new Error('Expected argument of type aurum.RspGetDeviceTime');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspGetDeviceTime(buffer_arg) {
+function deserialize_aurum_RspGetDeviceTime (buffer_arg) {
return aurum_pb.RspGetDeviceTime.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspGetLocation(arg) {
+function serialize_aurum_RspGetLocation (arg) {
if (!(arg instanceof aurum_pb.RspGetLocation)) {
throw new Error('Expected argument of type aurum.RspGetLocation');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspGetLocation(buffer_arg) {
+function deserialize_aurum_RspGetLocation (buffer_arg) {
return aurum_pb.RspGetLocation.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspGetSize(arg) {
+function serialize_aurum_RspGetSize (arg) {
if (!(arg instanceof aurum_pb.RspGetSize)) {
throw new Error('Expected argument of type aurum.RspGetSize');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspGetSize(buffer_arg) {
+function deserialize_aurum_RspGetSize (buffer_arg) {
return aurum_pb.RspGetSize.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspGetValue(arg) {
+function serialize_aurum_RspGetValue (arg) {
if (!(arg instanceof aurum_pb.RspGetValue)) {
throw new Error('Expected argument of type aurum.RspGetValue');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspGetValue(buffer_arg) {
+function deserialize_aurum_RspGetValue (buffer_arg) {
return aurum_pb.RspGetValue.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspInstallApp(arg) {
+function serialize_aurum_RspInstallApp (arg) {
if (!(arg instanceof aurum_pb.RspInstallApp)) {
throw new Error('Expected argument of type aurum.RspInstallApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspInstallApp(buffer_arg) {
+function deserialize_aurum_RspInstallApp (buffer_arg) {
return aurum_pb.RspInstallApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspKey(arg) {
+function serialize_aurum_RspKey (arg) {
if (!(arg instanceof aurum_pb.RspKey)) {
throw new Error('Expected argument of type aurum.RspKey');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspKey(buffer_arg) {
+function deserialize_aurum_RspKey (buffer_arg) {
return aurum_pb.RspKey.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspLaunchApp(arg) {
+function serialize_aurum_RspLaunchApp (arg) {
if (!(arg instanceof aurum_pb.RspLaunchApp)) {
throw new Error('Expected argument of type aurum.RspLaunchApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspLaunchApp(buffer_arg) {
+function deserialize_aurum_RspLaunchApp (buffer_arg) {
return aurum_pb.RspLaunchApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspRemoveApp(arg) {
+function serialize_aurum_RspRemoveApp (arg) {
if (!(arg instanceof aurum_pb.RspRemoveApp)) {
throw new Error('Expected argument of type aurum.RspRemoveApp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspRemoveApp(buffer_arg) {
+function deserialize_aurum_RspRemoveApp (buffer_arg) {
return aurum_pb.RspRemoveApp.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspSetValue(arg) {
+function serialize_aurum_RspSetValue (arg) {
if (!(arg instanceof aurum_pb.RspSetValue)) {
throw new Error('Expected argument of type aurum.RspSetValue');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspSetValue(buffer_arg) {
+function deserialize_aurum_RspSetValue (buffer_arg) {
return aurum_pb.RspSetValue.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspTakeScreenshot(arg) {
+function serialize_aurum_RspTakeScreenshot (arg) {
if (!(arg instanceof aurum_pb.RspTakeScreenshot)) {
throw new Error('Expected argument of type aurum.RspTakeScreenshot');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspTakeScreenshot(buffer_arg) {
+function deserialize_aurum_RspTakeScreenshot (buffer_arg) {
return aurum_pb.RspTakeScreenshot.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspTouchDown(arg) {
+function serialize_aurum_RspTouchDown (arg) {
if (!(arg instanceof aurum_pb.RspTouchDown)) {
throw new Error('Expected argument of type aurum.RspTouchDown');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspTouchDown(buffer_arg) {
+function deserialize_aurum_RspTouchDown (buffer_arg) {
return aurum_pb.RspTouchDown.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspTouchMove(arg) {
+function serialize_aurum_RspTouchMove (arg) {
if (!(arg instanceof aurum_pb.RspTouchMove)) {
throw new Error('Expected argument of type aurum.RspTouchMove');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspTouchMove(buffer_arg) {
+function deserialize_aurum_RspTouchMove (buffer_arg) {
return aurum_pb.RspTouchMove.deserializeBinary(new Uint8Array(buffer_arg));
}
-function serialize_aurum_RspTouchUp(arg) {
+function serialize_aurum_RspTouchUp (arg) {
if (!(arg instanceof aurum_pb.RspTouchUp)) {
throw new Error('Expected argument of type aurum.RspTouchUp');
}
return Buffer.from(arg.serializeBinary());
}
-function deserialize_aurum_RspTouchUp(buffer_arg) {
+function deserialize_aurum_RspTouchUp (buffer_arg) {
return aurum_pb.RspTouchUp.deserializeBinary(new Uint8Array(buffer_arg));
}
@@ -495,7 +495,7 @@ function deserialize_aurum_RspTouchUp(buffer_arg) {
// *
// @page protocol Protocol
// Here is a page with some descriptions about protocol explained
-var BootstrapService = exports.BootstrapService = {
+let BootstrapService = exports.BootstrapService = {
sync: {
path: '/aurum.Bootstrap/sync',
requestStream: false,
diff --git a/lib/aurum_backend/aurum_pb.js b/lib/commands/aurum_pb.js
similarity index 100%
rename from lib/aurum_backend/aurum_pb.js
rename to lib/commands/aurum_pb.js
diff --git a/lib/commands/element.js b/lib/commands/element.js
index 72bef8f..9475c88 100644
--- a/lib/commands/element.js
+++ b/lib/commands/element.js
@@ -1,193 +1,106 @@
import log from '../logger';
import _ from 'lodash';
-import { sleep } from 'asyncbox';
let commands = {}, extensions = {};
+import { errors } from 'appium-base-driver';
+
+import { throwOnUnsuccessfulAurumCall } from './utils';
+import messages from './aurum_pb';
+
+// Spec: https://w3c.github.io/webdriver/webdriver-spec.html#get-element-attribute
commands.getAttribute = async function (attribute, elementId) {
- elementId = this.getAutomationId(elementId);
- let params = {
- attribute,
- elementId
- };
- return await this.bootstrap.sendAction('element:getAttribute', params);
-};
+ // This function is case-insensitive with regard to
+ // attributes to resemble HTML
+ const attributeName = attribute.toUpperCase();
+
+ if (!(attributeName in messages.ReqGetAttribute.RequestType)) {
+ const errorMessage = `${attributeName} is not a valid attribute name. Valid attribute names are:\n${Object.keys(messages.ReqGetAttribute.RequestType).reduce((accum, x) => accum + '\n' + x)}`;
+ log.errorAndThrow(new errors.InvalidArgumentError(errorMessage));
+ }
-commands.setAttribute = async function (attribute, value, elementId) {
- elementId = this.getAutomationId(elementId);
- let params = {
- attribute,
- value,
- elementId
- };
- return await this.bootstrap.sendAction('element:setAttribute', params);
+ const req = new messages.ReqGetAttribute();
+ req.setElementid(elementId);
+ req.setAttribute(messages.ReqGetAttribute.RequestType[attributeName]);
+
+ return new Promise((resolve, reject) => {
+ this.aurumClient.getAttribute(req, (error, result) => {
+ throwOnUnsuccessfulAurumCall('getAttribute', error, result);
+
+ const resultType = result.getType();
+ //
+ log.debug(`RspGetAttribute.type: ${resultType}`);
+
+ // BUG: result.getValue() always returns 0 (STRING)
+ // even though, the value sent is a BOOL
+ // For now we ignore getValue() and always return boolean
+ // because currently supported attributes are all boolean
+
+ // TODO: remove this if, when the bug is fixed
+ if (result.getBoolvalue()) {
+ return resolve(true);
+ }
+ return resolve(null);
+
+ switch (resultType) {
+ case messages.ParamType.STRING:
+ return resolve(result.getStringvalue());
+ case messages.ParamType.INT:
+ return resolve(result.getIntvalue());
+ case messages.ParamType.DOUBLE:
+ return resolve(result.getDoublevalue());
+ case messages.ParamType.BOOL:
+ // The W3C spec requires to return 'true'
+ // (a *string*, not *boolean*) or null
+ if (result.getBoolvalue()) {
+ return resolve('true');
+ }
+ return resolve(null);
+ default:
+ // In case new ParamTypes will be added in the future
+ const resultTypeName = _.findKey(messages.ParamType, (val) => val === resultType);
+ log.error(`"${string(resultTypeName)}" parameter type is currently not supported`);
+ throw new errors.NotImplementedError(`Cannot handle "${string(resultTypeName)}" attribute type`);
+ }
+ });
+ });
};
commands.getLocation = async function (elementId) {
- elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction('element:location', { elementId });
+ throw new errors.NotImplementedError('TODO');
};
commands.getLocationInView = async function (elementId) {
- return await this.getLocation(elementId);
-};
-
-commands.getLocationValueByElementId = async function (elementId) {
- return await this.getLocation(elementId);
+ throw new errors.NotImplementedError('TODO');
};
commands.getText = async function (elementId) {
- elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction('element:getText', { elementId });
+ throw new errors.NotImplementedError('TODO');
};
commands.elementEnabled = async function (elementId) {
- elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction('element:enabled', { elementId });
+ throw new errors.NotImplementedError('TODO');
};
commands.elementDisplayed = async function (elementId) {
- elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction('element:displayed', { elementId });
+ throw new errors.NotImplementedError('TODO');
};
commands.elementSelected = function () {
- log.info('elementSelected not supported');
- return false;
};
commands.getSize = async function (elementId) {
- elementId = this.getAutomationId(elementId);
- return await this.bootstrap.sendAction('element:size', { elementId });
};
commands.setValue = async function (keys, elementId) {
- let text = keys.join();
- elementId = this.getAutomationId(elementId);
- let params = {
- elementId,
- text,
- replace: false
- };
- return await this.bootstrap.sendAction('element:setText', params);
};
commands.setValueImmediate = async function (keys, elementId) {
- let text = _.isArray(keys) ? keys.join('') : keys;
- elementId = this.getAutomationId(elementId);
- let params = {
- elementId,
- text,
- replace: false
- };
- return await this.bootstrap.sendAction('element:setText', params);
};
commands.clear = async function (elementId) {
- elementId = this.getAutomationId(elementId);
- let params = {
- elementId,
- text: '',
- replace: true
- };
- return await this.bootstrap.sendAction('element:setText', params);
};
commands.replaceValue = async function (value, elementId) {
- elementId = this.getAutomationId(elementId);
- let params = {
- elementId,
- text: value,
- replace: true
- };
- return await this.bootstrap.sendAction('element:setText', params);
-};
-
-commands.click = async function (elementId, x = 0, y = 0) {
- if (x === this.sessionId) {
- x = 0;
- }
- if (y === this.sessionId) {
- y = 0;
- }
-
- if (elementId) {
- elementId = this.getAutomationId(elementId);
- } else {
- elementId = '';
- }
-
- let params = {
- elementId,
- x: _.toInteger(x),
- y: _.toInteger(y)
- };
- return await this.bootstrap.sendAction('element:click', params);
-};
-
-commands.touchUp = async function (x = 1, y = 1, elementId = '') {
- if (elementId && elementId !== this.sessionId) {
- elementId = this.getAutomationId(elementId);
- } else {
- elementId = '';
- }
-
- let params = {
- elementId,
- x: _.toInteger(x),
- y: _.toInteger(y)
- };
- return await this.bootstrap.sendAction('element:touchUp', params);
-};
-
-commands.touchDown = async function (x, y, elementId = '') {
- if (elementId && elementId !== this.sessionId) {
- elementId = this.getAutomationId(elementId);
- } else {
- elementId = '';
- }
-
- let params = {
- elementId,
- x: _.toInteger(x),
- y: _.toInteger(y)
- };
- return await this.bootstrap.sendAction('element:touchDown', params);
-};
-
-commands.touchMove = async function (xDown, yDown, xUp, yUp, steps = 10, elementId = null) {
- if (elementId && elementId !== this.sessionId) {
- elementId = this.getAutomationId(elementId);
- } else {
- elementId = '';
- }
-
- let params = {
- elementId,
- xDown: _.toInteger(xDown),
- yDown: _.toInteger(yDown),
- xUp: _.toInteger(xUp),
- yUp: _.toInteger(yUp),
- steps: _.toInteger(steps)
- };
- return await this.bootstrap.sendAction('element:touchMove', params);
-};
-
-commands.touchLongClick = async function (elementId, x, y, duration) {
- await this.touchDown(x, y, elementId);
- await sleep(duration);
- return await this.touchUp(x, y, elementId);
-};
-
-commands.tap = async function (elementId, x = 0, y = 0, count = 1) {
- let result = true;
- let tapResult = false;
- for (let i = 0; i < count; i++) {
- tapResult = await this.click(elementId, x, y);
- if (!tapResult) {
- result = false;
- }
- }
- return result;
};
Object.assign(extensions, commands);
diff --git a/lib/commands/execute.js b/lib/commands/execute.js
index 61f0364..9e22d62 100644
--- a/lib/commands/execute.js
+++ b/lib/commands/execute.js
@@ -1,7 +1,10 @@
+import { errors } from 'appium-base-driver';
+
let commands = {}, extensions = {};
commands.execute = async function (script) {
- return await eval(script);
+ // Aurum does not support JS script execution on-device
+ throw new errors.UnsupportedOpperationError('Execution of JS on device under test is not supported.');
};
Object.assign(extensions, commands);
diff --git a/lib/commands/find.js b/lib/commands/find.js
index 397b896..d101370 100644
--- a/lib/commands/find.js
+++ b/lib/commands/find.js
@@ -1,34 +1,120 @@
+'use strict';
+
import _ from 'lodash';
import { errors, isErrorType } from 'appium-base-driver';
+import messages from './aurum_pb';
+
+import { throwOnUnsuccessfulAurumCall, isIterable } from './utils';
+
+let helpers = {},
+ extensions = {};
+
+class FindElementReqFactory {
+ constructor (grpc_message_defs) {
+ this.grpc_message_defs = grpc_message_defs;
+
+ this.strategies = {
+ 'id': this.makeIdReq.bind(this),
+ '-tizen aurum': this.makeTizenAurumReq.bind(this),
+ 'automationId': this.makeAutomationIdRequest.bind(this),
+ 'accessibility id': this.makeIdReq.bind(this),
+ // TODO: does "class name" strategy correspond to "ReqFindElement.widgetStyle?
+ 'class name': this.makeWidgetStyle.bind(this),
+ // TODO: does "name" strategy correspond to "ReqFindElementtextField?
+ 'name': this.makeTextFieldReq.bind(this)
+ };
+ }
-let helpers = {}, extensions = {};
+ create (strategy, selector) {
+ if (!(strategy in this.strategies)) {
+ throw errors.InvalidSelectorError(`"${strategy}" strategy is not supported`);
+ }
-let elements = {};
-let index = 0;
+ return this.strategies[strategy](selector);
+ }
-helpers.doFindElementOrEls = async function (params) {
- let strategy = 'automationId';
+ makeIdReq (elementId) {
+ const req = new messages.ReqFindElement();
+ req.setElementid(elementId);
+ return req;
+ }
- if (params.strategy === 'name') {
- strategy = params.strategy;
+ makeTizenAurumReq (constraints) {
+ const req = new messages.ReqFindElement();
+
+ req.setElementid(constraints?.elementId);
+ req.setAutomationid(constraints?.automationId);
+ req.setTextfield(constraints?.textField);
+ req.setWidgettype(constraints?.widgetType);
+ req.setWidgetstyle(constraints?.widgetStyle);
+ req.setIschecked(constraints?.isChecked);
+ req.setIscheckable(constraints?.isCheckable);
+ req.setIsclickable(constraints?.isClickable);
+ req.setIsenabled(constraints?.isEnabled);
+ req.setIsfocused(constraints?.isFocused);
+ req.setIsfocusable(constraints?.isFocusable);
+ req.setIsscrollable(constraints?.isScrollable);
+ req.setIsselected(constraints?.isSelected);
+ req.setIsshowing(constraints?.isShowing);
+ req.setIsactive(constraints?.isActive);
+ req.setMindepth(constraints?.minDepth);
+ req.setMaxdepth(constraints?.maxDepth);
+
+ if (isIterable(constraints.children)) {
+ for (let childConstraints of constraints.children) {req.addChildren(this.makeTizenAurumReq(childConstraints));}
+ }
+ return req;
}
- let param = { 'elementId': params.selector, strategy };
- let result = await this.bootstrap.sendAction('find', param);
+ makeAutomationIdRequest (automationId) {
+ const req = new messages.ReqFindElement();
+ req.setAutomationid(automationId);
+ return req;
+ }
- if (!_.isEmpty(result)) {
- result.forEach(function (element) {
- index++;
- elements[index] = element.ELEMENT;
- element.ELEMENT = `${index}`;
- });
+ makeWidgetStyle (widgetStyle) {
+ const req = new messages.ReqFindElement();
+ req.setWidgetstyle(widgetStyle);
+ return req;
+ }
- if (!params.multiple) {
- result = result[0];
- }
+ makeTextFieldReq (textField) {
+ const req = new messages.ReqFindElement();
+ req.setTextfield(textField);
+ return req;
}
- return result;
+}
+
+const requestFactory = new FindElementReqFactory(messages);
+
+helpers.doFindElementOrEls = async function (params) {
+ const {
+ strategy = 'automationId',
+ selector,
+ multiple
+ } = params;
+
+ if (!selector) {
+ throw new errors.InvalidSelectorError('findElement()/findElements() require selector');
+ }
+
+ const findElementReq = requestFactory.create(strategy, selector);
+
+ return new Promise((resolve, reject) => {
+ const call = this.aurumClient.findElement(findElementReq,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('findElement or findElements', error, result, 'findElement');
+
+ const elementIds = result.getElementsList().map((element) => element.getElementid());
+
+ if (multiple) {
+ return resolve(elementIds);
+ }
+
+ return resolve(elementIds[0]);
+ });
+ });
};
helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
@@ -46,6 +132,7 @@ helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
};
let element;
+
let doFind = async () => {
try {
element = await this.doFindElementOrEls(params);
@@ -53,6 +140,7 @@ helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
if (isErrorType(err, errors.NoSuchElementError)) {
return false;
}
+
throw err;
}
@@ -75,18 +163,17 @@ helpers.findElOrEls = async function (strategy, selector, mult, context = '') {
if (_.isEmpty(element)) {
throw new errors.NoSuchElementError();
}
+
return element;
}
};
helpers.getAutomationId = function (elementId) {
- let result = elements[elementId];
- if (!result) {
- result = '';
- }
- return result;
+ throw new errors.NotImplementedError('TODO');
};
+const SUPPORTED_LOCATOR_STRATEGIES = Object.keys(requestFactory.strategies);
Object.assign(extensions, helpers);
-export { helpers };
+
+export { extensions, SUPPORTED_LOCATOR_STRATEGIES };
export default extensions;
diff --git a/lib/aurum_backend/gen.sh b/lib/commands/gen.sh
similarity index 100%
rename from lib/aurum_backend/gen.sh
rename to lib/commands/gen.sh
diff --git a/lib/commands/general.js b/lib/commands/general.js
index 373ea5d..a8c6be3 100644
--- a/lib/commands/general.js
+++ b/lib/commands/general.js
@@ -3,9 +3,14 @@ import _ from 'lodash';
import { fs } from 'appium-support';
import path from 'path';
+import { errors } from 'appium-base-driver';
+import messages from './aurum_pb';
+import { throwOnUnsuccessfulAurumCall } from './utils';
+
let commands = {}, helpers = {}, extensions = {};
commands.getDeviceTime = async function () {
+ /* TODO: rewrite using Aurum command? */
log.info('Attempting to capture tizen device date and time');
try {
let out = await this.sdb.shell(['date']);
@@ -16,36 +21,22 @@ commands.getDeviceTime = async function () {
};
commands.pressKeyCode = async function (key) {
- return await this.bootstrap.sendAction('pressKey', { key });
-};
-
-commands.releaseKeyCode = async function (key) {
- return await this.bootstrap.sendAction('releaseKey', { key });
+ throw new errors.NotImplementedError('TODO');
};
commands.keys = async function (keys) {
- let text = _.isArray(keys) ? keys.join('') : keys;
- let params = {
- elementId: '',
- text,
- replace: false
- };
- return await this.bootstrap.sendAction('element:setText', params);
+ throw new errors.NotImplementedError('TODO');
};
commands.sendKey = async function (key) {
- return await this.bootstrap.sendAction('sendKey', { key });
-};
-
-commands.pressHardwareKey = async function (key) {
- return await this.sendKey(key);
+ throw new errors.NotImplementedError('TODO');
};
commands.back = async function () {
- return await this.sendKey('XF86Back');
};
commands.installApp = async function (tpk) {
+ /* TODO: rewrite using Aurum? */
const rootDir = path.resolve(__dirname, '..', '..', '..');
const tpkPath = path.resolve(rootDir, 'app');
@@ -57,11 +48,13 @@ commands.installApp = async function (tpk) {
return this.sdb.install(fullPath);
};
-commands.removeApp = function (appPackage) {
+commands.removeApp = async function (appPackage) {
+ /* TODO: rewrite using Aurum? */
return this.sdb.uninstall(appPackage);
};
-commands.isAppInstalled = function (appPackage) {
+commands.isAppInstalled = async function (appPackage) {
+ /* TODO: rewrite using Aurum? */
return this.sdb.isAppInstalled(appPackage);
};
@@ -70,15 +63,62 @@ commands.launchApp = async function () {
};
commands.startApp = async function (opts = {}) {
- return await this.sdb.startApp(this.opts.appPackage, opts);
+ return new Promise((resolve, reject) => {
+ const packageName = this.opts.appPackage;
+
+ const callOptions = {};
+ if ('timeout' in opts) {
+ callOptions.deadline = new Date(Date.now() + opts.timeout);
+ }
+
+ const req = new messages.ReqLaunchApp();
+ req.setPackagename(packageName);
+ this.aurumClient.launchApp(req,
+ callOptions,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('startApp', error, result, 'launchApp');
+
+ log.info(`Application started: ${packageName}`);
+ resolve();
+ });
+ });
};
commands.closeApp = async function () {
- await this.sdb.forceStop(this.opts.appPackage);
+ return new Promise((resolve, reject) => {
+ const packageName = this.opts.appPackage;
+
+ const req = new messages.ReqCloseApp();
+ req.setPackagename(packageName);
+ this.aurumClient.closeApp(req,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('closeApp', error, result);
+
+ log.info(`App closed: ${packageName}`);
+ resolve();
+ });
+ });
};
commands.isStartedApp = async function (opts = {}) {
- return await this.sdb.isStartedApp(this.opts.appPackage, opts);
+ return new Promise((resolve, reject) => {
+ const packageName = this.opts.appPackage;
+
+ const req = new messages.ReqGetAppInfo();
+ req.setPackagename(packageName);
+ this.aurumClient.getAppInfo(req,
+ (error, result) => {
+ throwOnUnsuccessfulAurumCall('isStartedApp', error, result, 'getAppInfo');
+
+ if (!result.getIsinstalled()) {
+ const errorMessage = `The application is not installed ${packageName}`;
+ log.error(errorMessage);
+ throw new errors.InvalidArgumentError(errorMessage);
+ }
+
+ resolve(result.getIsrunning());
+ });
+ });
};
Object.assign(extensions, commands, helpers);
diff --git a/lib/commands/index.js b/lib/commands/index.js
index 01ff58b..056fbab 100644
--- a/lib/commands/index.js
+++ b/lib/commands/index.js
@@ -1,5 +1,5 @@
import executeCmds from './execute';
-import findCmds from './find';
+import { extensions as findCmds, SUPPORTED_LOCATOR_STRATEGIES } from './find';
import generalCmds from './general';
import elementCmds from './element';
import actionCmds from './action';
@@ -16,5 +16,7 @@ Object.assign(
touchCmds
);
-export { commands };
+const AURUM_PORT = 50051;
+
export default commands;
+export { commands, AURUM_PORT, SUPPORTED_LOCATOR_STRATEGIES };
diff --git a/lib/commands/touch.js b/lib/commands/touch.js
index fac7b6c..a4d7187 100644
--- a/lib/commands/touch.js
+++ b/lib/commands/touch.js
@@ -4,67 +4,36 @@ import { errors, isErrorType } from 'appium-base-driver';
let commands = {}, helpers = {}, extensions = {};
-let x = 1, y = 1;
+commands.click = async function (elementId, x = 0, y = 0) {
+ throw new errors.NotImplementedError('TODO');
+};
-commands.doTouchAction = async function (action, opts) {
- let result;
- switch (action) {
- case 'tap':
- return await this.tap(opts.element, opts.x, opts.y, opts.count);
- case 'press':
- x = opts.x;
- y = opts.y;
- return await this.touchDown(opts.x, opts.y, opts.element);
- case 'release':
- if (!opts.x) {
- opts.x = x;
- }
- if (!opts.y) {
- opts.y = y;
- }
- return await this.touchUp(opts.x, opts.y, opts.element);
- case 'moveTo':
- result = await this.touchMove(x, y, opts.x, opts.y, opts.steps, opts.element);
- x = opts.x;
- y = opts.y;
- return result;
- case 'wait':
- return await B.delay(opts.ms);
- case 'longPress':
- if (typeof opts.duration === 'undefined' || !opts.duration) {
- opts.duration = 2000;
- }
- return await this.touchLongClick(opts.element, opts.x, opts.y, opts.duration);
- default:
- log.errorAndThrow(`unknown action ${action}`);
- }
+commands.touchUp = async function (x = 1, y = 1, elementId = '') {
+ throw new errors.NotImplementedError('TODO');
};
-commands.performGesture = async function (gesture) {
- try {
- return await this.doTouchAction(gesture.action, gesture.options || {});
- } catch (e) {
- // sometime the element is not available when releasing, retry without it
- if (isErrorType(e, errors.NoSuchElementError) && gesture.action === 'release' &&
- gesture.options.element) {
- delete gesture.options.element;
- log.debug(`retrying release without element opts: ${gesture.options}.`);
- return await this.doTouchAction(gesture.action, gesture.options || {});
- }
- throw e;
- }
+commands.touchDown = async function (x, y, elementId = '') {
+ throw new errors.NotImplementedError('TODO');
};
-commands.performTouch = async function (gestures) {
- let result = true;
+commands.touchMove = async function (xDown, yDown, xUp, yUp, steps = 10, elementId = null) {
+ throw new errors.NotImplementedError('TODO');
+};
- for (let g of gestures) {
- if (!(await this.performGesture(g))) {
- result = false;
- }
- }
+commands.touchLongClick = async function (elementId, x, y, duration) {
+ throw new errors.NotImplementedError('TODO');
+};
- return result;
+commands.tap = async function (elementId, x = 0, y = 0, count = 1) {
+ /*
+ * TODO: remove this?
+ * WebDriver spec and appium-base-driver don't support "tap" command,
+ * but the previous version of appium-tizen-driver differentiated
+ * between tap/single tap
+ * It seems, that this old "tap" corresponds to "click" in the official
+ * spec.
+ */
+ throw new errors.NotImplementedError('TODO');
};
Object.assign(extensions, commands, helpers);
diff --git a/lib/aurum_backend/utils.js b/lib/commands/utils.js
similarity index 100%
rename from lib/aurum_backend/utils.js
rename to lib/commands/utils.js
diff --git a/lib/driver.js b/lib/driver.js
index 30eea0f..58d4e7f 100644
--- a/lib/driver.js
+++ b/lib/driver.js
@@ -1,13 +1,15 @@
import { BaseDriver, DeviceSettings } from 'appium-base-driver';
import desiredConstraints from './desired-caps';
-import commands from './commands/index';
-import aurum_commands from './aurum_backend/index';
+import { commands, SUPPORTED_LOCATOR_STRATEGIES, AURUM_PORT } from './commands/index';
import helpers from './tizen-helpers';
-import BootstrapFactory from './tizen-bootstrap';
import log from './logger';
import _ from 'lodash';
import { DEFAULT_SDB_PORT } from 'appium-sdb';
import { tempDir } from 'appium-support';
+//TODO: grpc NPM package is deprecated and superseded by @grpc/grpc-js
+// but the latter doesn't work - find out why and replace grpc with grpc-js
+const grpc = require('grpc');
+import services from './commands/aurum_grpc_pb';
const NO_PROXY = [
['POST', new RegExp('^/session/[^/]+/appium')],
@@ -18,19 +20,14 @@ class TizenDriver extends BaseDriver {
constructor (opts = {}, shouldValidateCaps = true) {
super(opts, shouldValidateCaps);
+ // TODO: review ctor
this.desiredCapConstraints = desiredConstraints;
this.jwpProxyActive = false;
this.jwpProxyAvoid = _.clone(NO_PROXY);
this.settings = new DeviceSettings({ignoreUnimportantViews: false});
- if (opts.tizenBackend === 'aurum') {
- for (let [cmd, fn] of _.toPairs(aurum_commands)) {
- TizenDriver.prototype[cmd] = fn;
- }
- } else {
- for (let [cmd, fn] of _.toPairs(commands)) {
- TizenDriver.prototype[cmd] = fn;
- }
+ for (let [cmd, fn] of _.toPairs(commands)) {
+ TizenDriver.prototype[cmd] = fn;
}
}
@@ -90,18 +87,25 @@ class TizenDriver extends BaseDriver {
return this.helpers.isPackageOrBundle(this.opts.appPackage);
}
+ _createAurumClient () {
+ return new services.BootstrapClient(`127.0.0.1:${AURUM_PORT}`, grpc.credentials.createInsecure());
+ }
+
async startTizenSession () {
if (this.opts.app) {
await this.installApp(this.opts.app);
}
- this.bootstrap = BootstrapFactory(this.sdb, this.opts);
- this.locatorStrategies = this.bootstrap.supportedLocatorStrategies;
+ // TODO: change this.bootstrap.* to this.aurumClient.*
+ // TODO: this.bootstrap.sdb to this.sdb
+ this.aurumClient = this._createAurumClient();
+ this.locatorStrategies = SUPPORTED_LOCATOR_STRATEGIES;
let isAppInstalled = await this.isAppInstalled(this.opts.appPackage);
if (!isAppInstalled) {
log.errorAndThrow('Could not find to App in device.');
}
+
if (this.opts.appPackage) {
let isStartedApp = await this.isStartedApp();
if (isStartedApp) {
@@ -110,31 +114,19 @@ class TizenDriver extends BaseDriver {
await this.startApp({ timeout: 20000 });
}
-
- await this.bootstrap.start(this.opts.appPackage);
-
if (this.opts.ignoreUnimportantViews) {
await this.settings.update({ignoreUnimportantViews: this.opts.ignoreUnimportantViews});
}
}
- async checkPackagePresent () {
- log.debug('Checking whether package is present on the device');
- if (!(await this.sdb.shell([`app_launcher --list | grep ${this.opts.appPackage}`]))) {
- log.errorAndThrow(`Could not find package ${this.opts.appPackage} on the device`);
- }
- }
-
async deleteSession () {
log.debug('Shutting down Tizen driver');
await super.deleteSession();
- if (this.bootstrap) {
- await this.sdb.forceStop(this.opts.appPackage);
+ if (this.aurumClient) {
+ await this.aurumClient.closeApp();
if (this.opts.fullReset && !this.opts.skipUninstall && !this.appOnDevice) {
await this.sdb.uninstall(this.opts.appPackage);
}
- await this.bootstrap.shutdown();
- this.bootstrap = null;
} else {
log.debug("Called deleteSession but bootstrap wasn't active");
}
diff --git a/lib/tizen-bootstrap.js b/lib/tizen-bootstrap.js
deleted file mode 100644
index 849f38b..0000000
--- a/lib/tizen-bootstrap.js
+++ /dev/null
@@ -1,313 +0,0 @@
-import net from 'net';
-import _ from 'lodash';
-import ui_automator_commands from './commands/index';
-import { errorFromCode, errors } from 'appium-base-driver';
-import { sleep } from 'asyncbox';
-import path from 'path';
-import log from './logger';
-import B from 'bluebird';
-
-import * as aurum from './aurum_backend/index';
-//TODO: grpc NPM package is deprecated and superseded by @grpc/grpc-js
-// but the latter doesn't work - find out why and replace grpc with grpc-js
-const grpc = require('grpc');
-import messages from './aurum_backend/aurum_pb';
-// const grpc = require('@grpc/grpc-js');
-import services from './aurum_backend/aurum_grpc_pb';
-
-import { throwOnUnsuccessfulAurumCall } from './aurum_backend/utils';
-
-
-const COMMAND_TYPES = {
- ACTION: 'action',
- SHUTDOWN: 'shutdown'
-};
-
-const LEGACY_SYSTEM_PORT = 8888;
-
-class AbstractMethodError extends Error {
- constructor (message = null) {
- super(message || 'This is an abstract method with no implementation. Call one of its overriden implementations.');
- this.name = AbstractMethodError;
- }
-}
-
-class TizenBootstrap {
- constructor (sdb, opts, commands) {
- this.appPackage;
- this.sdb = sdb;
- this.opts = opts;
- this.webSocket = opts.webSocket; // TODO: remove it? Where it's used?
- this.ignoreUnexpectedShutdown = false;
- this.isRestart = false;
-
- this.supportedLocatorStrategies = [
- 'id',
- 'accessibility id',
- 'class name',
- 'name'
- ];
-
- for (let [cmd, fn] of _.toPairs(commands)) {
- TizenBootstrap.prototype[cmd] = fn;
- }
- }
-
- async start (appPackage) {
- //TODO: do we really need appPackage argument in Aurum backend?
- throw new AbstractMethodError();
- }
-
- async shutdown () {
- throw new AbstractMethodError();
- }
-
- set ignoreUnexpectedShutdown (ignore) {
- log.debug(`${ignore ? 'Ignoring' : 'Watching for'} bootstrap disconnect`);
- this._ignoreUnexpectedShutdown = ignore;
- }
-
- get ignoreUnexpectedShutdown () {
- return this._ignoreUnexpectedShutdown;
- }
-}
-
-class TizenLegacyBootstrap extends TizenBootstrap {
- constructor (sdb, opts = {}) {
- super(sdb, opts, ui_automator_commands);
-
- log.debug('DEBUG_LOG: HELLO FROM TizenLegacyBootstrap !!!!');
-
- this.uiautomator = 'org.tizen.uiautomator';
- this.uiautomatorVersion = '1.0.1';
- }
-
- async start (appPackage) {
- this.appPackage = appPackage;
- await this.init();
- await this.sdb.forwardPort(LEGACY_SYSTEM_PORT, LEGACY_SYSTEM_PORT);
- await sleep(6000);
-
- return await this.connectSocket();
- }
-
- async connectSocket () {
- try {
- return await new B((resolve, reject) => {
- try {
- if (!this.socketClient) {
- this.socketClient = net.connect(LEGACY_SYSTEM_PORT);
- this.socketClient.setEncoding('utf8');
- this.socketClient.on('error', (err) => {
- if (!this.ignoreUnexpectedShutdown) {
- throw new Error(`Tizen bootstrap socket crashed: ${err}`);
- }
- });
- this.socketClient.once('connect', () => {
- log.info('Tizen bootstrap socket is now connected');
- resolve();
- });
- } else {
- log.info('SocketClient already Created');
- resolve();
- }
- } catch (err) {
- reject(err);
- }
- });
- } catch (err) {
- log.errorAndThrow(`Error occured while reconnection TizenBootstrap. Original error: ${err}`);
- }
- }
-
- async sendCommand (type, extra = {}) {
- if (this.appPackage && type !== COMMAND_TYPES.SHUTDOWN) {
- if (this.isRestart) {
- await sleep(5000);
- await this.restartUIAutomator();
- this.isRestart = false;
- }
- let isStartedApp = await this.sdb.isStartedApp(this.appPackage);
- if (!isStartedApp) {
- await this.sdb.startApp(this.appPackage);
- await sleep(10000);
- this.isRestart = false;
- }
- }
-
- if (!this.socketClient) {
- await this.connectSocket();
- }
-
- return await new B((resolve, reject) => {
- let cmd = Object.assign({ cmd: type }, extra);
- let cmdJson = `${JSON.stringify(cmd)} \n`;
- log.debug(`Sending command to tizen: ${_.truncate(cmdJson, { length: 1000 }).trim()}`);
-
- try {
- this.socketClient.removeAllListeners('timeout');
- this.socketClient.removeAllListeners('end');
- this.socketClient.write(cmdJson);
- this.socketClient.on('data', (data) => {
- let streamData = '';
- log.debug(`Received command result from bootstrap : ${data}`);
- try {
- streamData = JSON.parse(streamData + data);
- this.socketClient.removeAllListeners('data');
- if (streamData.status === 0) {
- resolve(streamData.value);
- } else if (streamData.status === 44) {
- this.restartUIAutomator();
- resolve(false);
- }
- reject(errorFromCode(streamData.status));
- } catch (ign) {
- log.debug('Stream still not complete, waiting');
- streamData += data;
- }
- });
- this.socketClient.setTimeout(15000);
- this.socketClient.on('timeout', () => {
- this.socketClient.destroy();
- this.socketClient = null;
- this.isRestart = true;
- reject(errorFromCode(-1, 'No response from Server'));
- });
- this.socketClient.on('end', () => {
- this.socketClient.destroy();
- this.socketClient = null;
- this.isRestart = true;
- reject(errorFromCode(-1, 'Socket ended by Server'));
- });
- } catch (err) {
- reject(errorFromCode(-1, err));
- }
- });
- }
-
- async sendAction (action, params = {}) {
- let extra = { action, params };
- return await this.sendCommand(COMMAND_TYPES.ACTION, extra);
- }
-
- async shutdown () {
- if (this.socketClient) {
- this.socketClient.end();
- this.socketClient.destroy();
- this.socketClient = null;
- }
-
- await this.stopUIAutomator();
- await this.uninstallUIAutomator();
-
- await this.sdb.removePortForward(LEGACY_SYSTEM_PORT);
- }
-
- async init () {
-
- let isUIAutomatorInstalled = await this.isAppInstalled(this.uiautomator);
- if (!isUIAutomatorInstalled) {
- await this.installUIAutomator();
- }
-
- let uiautomatorStatus = await this.isStartedUIAutomator();
- if (!uiautomatorStatus) {
- await this.startUIAutomator();
- } else {
- await this.stopUIAutomator();
- await sleep(2000);
- await this.startUIAutomator();
- }
- }
-
- async installUIAutomator () {
- let arch = await this.sdb.shell('uname -a');
- let rootDir = path.resolve(__dirname, '..', '..');
- let tpkPath = path.resolve(rootDir, 'uiautomator', `${this.uiautomator}-${this.uiautomatorVersion}`);
-
- if (arch.includes('i686')) {
- tpkPath += '-x86';
- } else {
- tpkPath += '-arm';
- }
- tpkPath += '.tpk';
-
- return await this.sdb.install(tpkPath);
- }
-
- async uninstallUIAutomator () {
- return await this.removeApp(this.uiautomator);
- }
-
- async startUIAutomator () {
- await this.sdb.startApp(this.uiautomator);
- }
-
- async stopUIAutomator () {
- await this.sdb.shell(`app_launcher -t ${this.uiautomator}`);
- }
-
- async restartUIAutomator () {
- await this.stopUIAutomator();
- await this.startUIAutomator();
- }
-
- async isStartedUIAutomator () {
- return await this.sdb.isStartedApp(this.uiautomator);
- }
-
-}
-
-class TizenAurumBootstrap extends TizenBootstrap {
- constructor (sdb, opts = {}) {
- super(sdb, opts, aurum.commands);
-
- // TODO: let the user set this IP? Is it needed?
- const credentials = grpc.credentials.createInsecure();
- this.client = new services.BootstrapClient(`127.0.0.1:${aurum.SYSTEM_PORT}`,
- credentials);
- // grpc.credentials.createInsecure());
- this.supportedLocatorStrategies = aurum.SUPPORTED_LOCATOR_STRATEGIES;
- }
-
- async start (appPackage) {
- new Promise((resolve, reject) => {
- this.client.sync(new messages.ReqEmpty(), (error, result) => {
- throwOnUnsuccessfulAurumCall('start', error, result, 'sync');
-
- log.info('TizenAurumBootstrap started');
- return resolve();
- });
- });
- }
-
- async shutdown () {
- throw new NotImplementedError();
- }
-
- set ignoreUnexpectedShutdown (ignore) {
- log.debug(`${ignore ? 'Ignoring' : 'Watching for'} bootstrap disconnect`);
- this._ignoreUnexpectedShutdown = ignore;
- }
-
- get ignoreUnexpectedShutdown () {
- return this._ignoreUnexpectedShutdown;
- }
-}
-
-function TizenBootstrapFactory (sdb, opts) {
- if (new.target) {
- throw new Error('This function is not a constructor, but a factory. Don\'t precede its call with "new"');
- }
-
- if (opts.tizenBackend === 'aurum') {
- return new TizenAurumBootstrap(sdb, opts);
- } else {
- log.debug('Creating TizenLegacyBootstrap');
- return new TizenLegacyBootstrap(sdb, opts);
- }
-}
-
-
-export { TizenBootstrapFactory, COMMAND_TYPES };
-export default TizenBootstrapFactory;
diff --git a/package.json b/package.json
index e92bb74..9bf1ca9 100644
--- a/package.json
+++ b/package.json
@@ -19,9 +19,9 @@
"bugs": {
"url": "https://github.com/Samsung/appium-tizen-driver/issues"
},
- "engines": [
- "node"
- ],
+ "engines": {
+ "node": ">=14.17.0"
+ },
"main": "./build/index.js",
"bin": {},
"directories": {
@@ -32,8 +32,7 @@
"index.js",
"lib",
"build/index.js",
- "build/lib",
- "uiautomator"
+ "build/lib"
],
"dependencies": {
"@babel/runtime": "^7.0.0",
diff --git a/uiautomator/org.tizen.uiautomator-1.0.1-arm.tpk b/uiautomator/org.tizen.uiautomator-1.0.1-arm.tpk
deleted file mode 100644
index ef692df964a8dba7c823289e869a0d664b7e478b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 66075
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 |