Add web application for JS binding testing 08/157608/4
authorLukasz Kostyra <l.kostyra@samsung.com>
Thu, 19 Oct 2017 16:18:33 +0000 (18:18 +0200)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Fri, 9 Mar 2018 11:57:31 +0000 (11:57 +0000)
Change-Id: I64c2fbbf143e0e70fc0ed62280e535292119ef7e

src/libteec-tests/webapi-test-app/config.xml [new file with mode: 0644]
src/libteec-tests/webapi-test-app/css/style.css [new file with mode: 0644]
src/libteec-tests/webapi-test-app/icon.png [new file with mode: 0644]
src/libteec-tests/webapi-test-app/images/tizen_32.png [new file with mode: 0644]
src/libteec-tests/webapi-test-app/index.html [new file with mode: 0644]
src/libteec-tests/webapi-test-app/js/main.js [new file with mode: 0644]

diff --git a/src/libteec-tests/webapi-test-app/config.xml b/src/libteec-tests/webapi-test-app/config.xml
new file mode 100644 (file)
index 0000000..8f58467
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns:tizen="http://tizen.org/ns/widgets" xmlns="http://www.w3.org/ns/widgets" id="http://yourdomain/Test" version="1.0.0" viewmodes="maximized">
+    <tizen:application id="IJt1xdiAhM.Test" package="IJt1xdiAhM" required_version="3.0"/>
+    <content src="index.html"/>
+    <feature name="http://tizen.org/feature/screen.size.all"/>
+    <icon src="icon.png"/>
+    <name>Test</name>
+    <tizen:profile name="mobile"/>
+    <tizen:setting screen-orientation="auto-rotation" context-menu="enable" background-support="disable" encryption="disable" install-location="auto" hwkey-event="enable"/>
+</widget>
diff --git a/src/libteec-tests/webapi-test-app/css/style.css b/src/libteec-tests/webapi-test-app/css/style.css
new file mode 100644 (file)
index 0000000..9254339
--- /dev/null
@@ -0,0 +1,24 @@
+html,
+body {
+    width: 100%;
+    height: 100%;
+    margin: 0 auto;
+    padding: 0;
+    background-color: #222222;
+    color: #ffffff;
+}
+.page {
+    width: 100%;
+    height: 100%;
+    display: table;
+}
+.contents {
+    display: table-row;
+    vertical-align: middle;
+    text-align: center;
+    -webkit-tap-highlight-color: transparent;
+}
+#content-text {
+    font-weight: bold;
+    font-size: 3em;
+}
\ No newline at end of file
diff --git a/src/libteec-tests/webapi-test-app/icon.png b/src/libteec-tests/webapi-test-app/icon.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/src/libteec-tests/webapi-test-app/icon.png differ
diff --git a/src/libteec-tests/webapi-test-app/images/tizen_32.png b/src/libteec-tests/webapi-test-app/images/tizen_32.png
new file mode 100644 (file)
index 0000000..647c3f9
Binary files /dev/null and b/src/libteec-tests/webapi-test-app/images/tizen_32.png differ
diff --git a/src/libteec-tests/webapi-test-app/index.html b/src/libteec-tests/webapi-test-app/index.html
new file mode 100644 (file)
index 0000000..d8450f0
--- /dev/null
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+    <meta name="description" content="Tizen Mobile Web Basic Template" />
+
+    <title>Tizen Mobile Web Basic Application</title>
+
+    <link rel="stylesheet" type="text/css" href="css/style.css" />
+    <script src="js/main.js"></script>
+</head>
+
+<body>
+    <div id="main" class="page">
+        <div id="test1" class="contents">
+            <button type="button" id="test1-button">Launch value test</button><br>
+            <span id="test1-text"></span>
+        </div>
+        <div id="test2" class="contents">
+            <button type="button" id="test2-button">Launch memref test</button><br>
+            <span id="test2-text"></span>
+        </div>
+        <div id="test3" class="contents">
+            <button type="button" id="test3-button">Launch tmpref test</button><br>
+            <span id="test3-text"></span>
+        </div>
+        <div id="test4" class="contents">
+            <button type="button" id="test4-button">Launch partial test</button><br>
+            <span id="test4-text"></span>
+        </div>
+    </div>
+</body>
+
+</html>
diff --git a/src/libteec-tests/webapi-test-app/js/main.js b/src/libteec-tests/webapi-test-app/js/main.js
new file mode 100644 (file)
index 0000000..88dd2e6
--- /dev/null
@@ -0,0 +1,183 @@
+
+window.onload = function() {
+    // add eventListener for tizenhwkey
+    document.addEventListener('tizenhwkey', function(e) {
+        if (e.keyName === "back") {
+            try {
+                tizen.application.getCurrentApplication().exit();
+            } catch (ignore) {}
+        }
+    });
+
+    // Sample code
+    var mainPage = document.querySelector('#main');
+    var test1 = mainPage.querySelector('#test1-button');
+    var test2 = mainPage.querySelector('#test2-button');
+    var test3 = mainPage.querySelector('#test3-button');
+    var test4 = mainPage.querySelector('#test4-button');
+
+    var testData = function (data, result, resultText) {
+        for (var i in result) {
+            if (data[i] !== result[i]) {
+                resultText.innerHTML = "Failure:<br>Received data does not match input data:<br>";
+                for (var j in data) {
+                    resultText.innerHTML += data[j] + " ";
+                }
+                resultText.innerHTML += "<br>vs. received:<br>";
+                for (var k in result) {
+                    resultText.innerHTML += result[k] + " ";
+                }
+                return;
+            }
+        }
+
+        var outMsg = "Success:<br>Received data: ";
+        for (i in result) {
+            outMsg += result[i] + " ";
+        }
+        resultText.innerHTML = outMsg;
+    };
+
+    test1.addEventListener("click", function() {
+        var resultText = document.querySelector('#test1-text');
+        var globalSession = null;
+
+        function commandError(err) {
+            console.log("Failed command");
+            globalSession.close();
+            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
+        }
+        function commandSuccess(cmd, params) {
+            globalSession.close();
+            resultText.innerHTML = "Success:<br>Incremented param to " + params[0].a;
+        }
+
+        function sessionSuccess(session) {
+            //session opened, now we can communicate with TA
+            globalSession = session;
+
+            var p1 = new tizen.TeecValue(3, 2, 'INOUT');
+            session.invokeCommand(1, [p1], commandSuccess, commandError);
+        }
+        function sessionError(err) {
+            console.log("openSession: " + err.name + ": " + err.message);
+            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
+        }
+
+        var ctx = tizen.libteec.getContext();
+        ctx.openSession("00000000-0000-0000-0000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
+    });
+
+    test2.addEventListener("click", function() {
+        var resultText = document.querySelector('#test2-text');
+        var ctx = tizen.libteec.getContext();
+        var globalSession = null;
+        var data = [1,2,3,4,45,6,7,7,7];
+
+        function commandError(err) {
+            console.log("Failed command");
+            globalSession.close();
+            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
+        }
+        function commandSuccess(cmd, params) {
+            globalSession.close();
+
+            var result = [0,0,0,0,0,0,0,0,0];
+            params[1].shm.getData(result, 0);
+            testData(data, result, resultText);
+        }
+
+        function sessionSuccess(session) {
+            //session opened, now can communicate with TA
+            globalSession = session;
+
+            var emptyData = [0,0,0,0, 0,0,0,0,0];
+            var shmem1 = ctx.allocateSharedMemory(data.length, 'INPUT');
+            shmem1.setData(data, 0);
+            var shmem2 = ctx.allocateSharedMemory(emptyData.length, 'OUTPUT');
+            shmem2.setData(emptyData);
+
+            var p1 = new tizen.TeecRegisteredMemory(shmem1, 0, data.length, 'WHOLE');
+            var p2 = new tizen.TeecRegisteredMemory(shmem2, 0, emptyData.length, 'WHOLE');
+            session.invokeCommand(2, [p1, p2], commandSuccess, commandError);
+        }
+        function sessionError(err) {
+            console.log("openSession: " + err.name + ": " + err.message);
+            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
+        }
+
+        ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
+    });
+
+    test3.addEventListener("click", function() {
+        var resultText = document.querySelector('#test3-text');
+        var ctx = tizen.libteec.getContext();
+        var globalSession = null;
+        var data = [7,6,5,4,3,21,1,2,3];
+
+        function commandError(err) {
+            console.log("Failed command");
+            globalSession.close();
+            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
+        }
+        function commandSuccess(cmd, params) {
+            globalSession.close();
+            testData(data, params[1].mem, resultText);
+        }
+
+        function sessionSuccess(session) {
+            //session opened, now can communicate with TA
+            globalSession = session;
+
+            var emptyData = [0,0,0,0,0,0,0,0,0];
+            var p1 = new tizen.TeecTempMemory(data, 'INPUT');
+            var p2 = new tizen.TeecTempMemory(emptyData, 'OUTPUT');
+            session.invokeCommand(3, [p1, p2], commandSuccess, commandError);
+        }
+        function sessionError(err) {
+            console.log("openSession: " + err.name + ": " + err.message);
+            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
+        }
+
+        ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
+    });
+
+    test4.addEventListener("click", function() {
+        var resultText = document.querySelector('#test4-text');
+        var ctx = tizen.libteec.getContext();
+        var globalSession = null;
+        var data = [0,1,2,3,4,35,2,1,0];
+
+        function commandError(err) {
+            console.log("Failed command");
+            globalSession.close();
+            resultText.innerHTML = "Failure:<br>invokeCommand: " + err.name + ": " + err.message;
+        }
+        function commandSuccess(cmd, params) {
+            globalSession.close();
+            var result = [0,0,0,0,0,0,0,0,0];
+            params[1].shm.getData(result, 0);
+            testData(data, result, resultText);
+        }
+
+        function sessionSuccess(session) {
+            //session opened, now can communicate with TA
+            globalSession = session;
+
+            var emptyData = [0,0,0,0,0,0,0,0,0];
+            var shmem = ctx.allocateSharedMemory(data.length * 2, 'INOUT');
+            shmem.setData(data, 0);
+            shmem.setData(emptyData, data.length);
+
+            var p1 = new tizen.TeecRegisteredMemory(shmem, 0, data.length, 'PARTIAL_INPUT');
+            var p2 = new tizen.TeecRegisteredMemory(shmem, data.length, data.length, 'PARTIAL_OUTPUT');
+            session.invokeCommand(4, [p1, p2], commandSuccess, commandError);
+        }
+        function sessionError(err) {
+            console.log("openSession: " + err.name + ": " + err.message);
+            resultText.innerHTML = "Failure:<br>openSession: " + err.name + ": " + err.message;
+        }
+
+        ctx.openSession("00000000000000000000746374657374", 'PUBLIC', null, null, sessionSuccess, sessionError);
+    });
+};