Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Bug 825148 - Make UI Tests and Test receivers app work with CSP

  • Loading branch information...
commit c57add9e52a789036667543945e13c8638a2812f 1 parent fbf48d6
@timdream timdream authored
Showing with 420 additions and 491 deletions.
  1. +0 −23 test_apps/test-receiver-1/js/share-receiver.js
  2. +0 −23 test_apps/test-receiver-2/js/share-receiver.js
  3. +4 −70 test_apps/test-receiver-inline/index.html
  4. +72 −0 test_apps/test-receiver-inline/js/inline-receiver.js
  5. +20 −20 test_apps/uitest/index.html
  6. +27 −0 test_apps/uitest/js/alert.js
  7. +21 −0 test_apps/uitest/js/audiotag.js
  8. +15 −0 test_apps/uitest/js/browseractivities.js
  9. +22 −0 test_apps/uitest/js/contextmenu.js
  10. +13 −0 test_apps/uitest/js/empty.js
  11. +15 −0 test_apps/uitest/js/fullscreen.js
  12. +14 −0 test_apps/uitest/js/geolocation.js
  13. +18 −0 test_apps/uitest/js/inlineactivities.js
  14. +7 −0 test_apps/uitest/js/multiactivities.js
  15. +62 −0 test_apps/uitest/js/notification.js
  16. +3 −0  test_apps/uitest/js/popup.js
  17. +13 −0 test_apps/uitest/js/savebookmark.js
  18. +6 −0 test_apps/uitest/js/scrollbar.js
  19. +16 −0 test_apps/uitest/js/select.js
  20. +7 −6 test_apps/uitest/tests/alert.html
  21. +7 −19 test_apps/uitest/tests/audiotag.html
  22. +5 −12 test_apps/uitest/tests/browseractivities.html
  23. +5 −11 test_apps/uitest/tests/contextmenu.html
  24. +17 −0 test_apps/uitest/tests/csp.html
  25. +1 −0  test_apps/uitest/tests/empty.html
  26. +3 −10 test_apps/uitest/tests/fullscreen.html
  27. +4 −19 test_apps/uitest/tests/geolocation.html
  28. +2 −22 test_apps/uitest/tests/inlineactivities.html
  29. +0 −2  test_apps/uitest/tests/inputmode.html
  30. +2 −8 test_apps/uitest/tests/multiactivities.html
  31. +7 −54 test_apps/uitest/tests/notification.html
  32. +0 −2  test_apps/uitest/tests/open.html
  33. +2 −12 test_apps/uitest/tests/popup.html
  34. +5 −100 test_apps/uitest/tests/recording.html
  35. +3 −15 test_apps/uitest/tests/savebookmark.html
  36. +1 −8 test_apps/uitest/tests/scrollbar.html
  37. +1 −21 test_apps/uitest/tests/select.html
  38. +0 −34 test_apps/uitest/tests/setcapture.html
View
23 test_apps/test-receiver-1/js/share-receiver.js
@@ -1,23 +0,0 @@
-window.onload = function() {
- navigator.mozSetMessageHandler('activity', function(activityRequest) {
- if (activityRequest.source.name === 'share-filenames') {
- addImages(activityRequest.source.data.filenames);
- }
- });
-};
-
-function addImages(filenames) {
- console.log('Receiving', filenames.length, 'files');
- var storage = navigator.getDeviceStorage('pictures');
- filenames.forEach(function(filename) {
- storage.get(filename).onsuccess = function(e) {
- var blob = e.target.result;
- var url = URL.createObjectURL(blob);
- var img = document.createElement('img');
- img.style.width = '100px';
- img.src = url;
- img.onload = function() { URL.revokeObjectURL(this.src); };
- document.body.appendChild(img);
- };
- });
-}
View
23 test_apps/test-receiver-2/js/share-receiver.js
@@ -1,23 +0,0 @@
-window.onload = function() {
- navigator.mozSetMessageHandler('activity', function(activityRequest) {
- if (activityRequest.source.name === 'share-filenames') {
- addImages(activityRequest.source.data.filenames);
- }
- });
-};
-
-function addImages(filenames) {
- console.log('Receiving', filenames.length, 'files');
- var storage = navigator.getDeviceStorage('pictures');
- filenames.forEach(function(filename) {
- storage.get(filename).onsuccess = function(e) {
- var blob = e.target.result;
- var url = URL.createObjectURL(blob);
- var img = document.createElement('img');
- img.style.width = '100px';
- img.src = url;
- img.onload = function() { URL.revokeObjectURL(this.src); };
- document.body.appendChild(img);
- };
- });
-}
View
74 test_apps/test-receiver-inline/index.html
@@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="pragma" content="no-cache">
<title>Test Receiver</title>
+ <script src="js/inline-receiver.js" defer></script>
<style>
button {
font-size: 30px;
@@ -17,80 +18,13 @@
background-color: #e0e0e0;
}
</style>
- <script>
- var activityRequest;
-
- var webActivityHandler = function (request) {
- activityRequest = request;
-
- document.getElementById('button').disabled = '';
- document.getElementById('cancelButton').disabled = '';
- document.getElementById('number').focus();
-
- };
-
- window.onload = function () {
- // If the app is being loaded because a inline disposition web activity,
- // it will came with a pending system message.
- if (!navigator.mozHasPendingMessage('activity')) {
- alert('This application is not intend to launch directly.');
- } else {
- // Register for activity system message handling.
- // Do NOT register for message handling on the main app frame.
- navigator.mozSetMessageHandler('activity', webActivityHandler);
- }
- };
-
- var go = function go() {
- if (!activityRequest) {
- alert('There are no any pending activity request.');
- return;
- }
-
- // Return the request
- activityRequest.postResult({
- type: 'inline',
- text: 'Hello back!'
- });
- activityRequest = null;
-
- // close app, currently useless,
- // see https://bugzilla.mozilla.org/show_bug.cgi?id=789392
- window.close();
- };
-
- var cancel = function cancel() {
- if (!activityRequest) {
- alert('There are no any pending activity request.');
- return;
- }
-
- activityRequest.postError('canceled');
- activityRequest = null;
-
- // close app, currently useless,
- // see https://bugzilla.mozilla.org/show_bug.cgi?id=789392
- window.close();
- };
-
- // When the app is being closed or killed, we will cancel the pending
- // request.
- document.addEventListener('mozvisibilitychange', function visibility(e) {
- if (!document.mozHidden || !activityRequest)
- return;
-
- activityRequest.postError('canceled');
- activityRequest = null;
- });
-
- </script>
</head>
<body>
<h1>Inline Web Activities receiver</h1>
- <p><button onclick="go()" disabled id="button">Send "Hello Back!"</button></p>
+ <p><button disabled id="button">Send "Hello Back!"</button></p>
<!-- add an input field to test keyboard work well -->
<p><input type="number" id="number" size="4" /></p>
- <p><button onclick="cancel()" disabled id="cancelButton">Cancel</button></p>
- <p><button onclick="prompt('inline-activty prompt!');">Prompt</button></p>
+ <p><button disabled id="cancelButton">Cancel</button></p>
+ <p><button id="promptButton">Prompt</button></p>
</body>
</html>
View
72 test_apps/test-receiver-inline/js/inline-receiver.js
@@ -0,0 +1,72 @@
+var activityRequest;
+
+var webActivityHandler = function (request) {
+ activityRequest = request;
+
+ document.getElementById('button').disabled = '';
+ document.getElementById('cancelButton').disabled = '';
+ document.getElementById('number').focus();
+
+};
+
+window.onload = function () {
+ document.getElementById('button').onclick = go;
+ document.getElementById('cancelButton').onclick = cancel;
+ document.getElementById('promptButton').onclick = promptButton;
+
+ // If the app is being loaded because a inline disposition web activity,
+ // it will came with a pending system message.
+ if (!navigator.mozHasPendingMessage('activity')) {
+ alert('This application is not intend to launch directly.');
+ } else {
+ // Register for activity system message handling.
+ // Do NOT register for message handling on the main app frame.
+ navigator.mozSetMessageHandler('activity', webActivityHandler);
+ }
+};
+
+var go = function go() {
+ if (!activityRequest) {
+ alert('There are no any pending activity request.');
+ return;
+ }
+
+ // Return the request
+ activityRequest.postResult({
+ type: 'inline',
+ text: 'Hello back!'
+ });
+ activityRequest = null;
+
+ // close app, currently useless,
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=789392
+ window.close();
+};
+
+var cancel = function cancel() {
+ if (!activityRequest) {
+ alert('There are no any pending activity request.');
+ return;
+ }
+
+ activityRequest.postError('canceled');
+ activityRequest = null;
+
+ // close app, currently useless,
+ // see https://bugzilla.mozilla.org/show_bug.cgi?id=789392
+ window.close();
+};
+
+var promptButton = function promptButton() {
+ prompt('inline-activty prompt!');
+};
+
+// When the app is being closed or killed, we will cancel the pending
+// request.
+document.addEventListener('mozvisibilitychange', function visibility(e) {
+ if (!document.mozHidden || !activityRequest)
+ return;
+
+ activityRequest.postError('canceled');
+ activityRequest = null;
+});
View
40 test_apps/uitest/index.html
@@ -13,21 +13,20 @@
<p class="toolbar-title">UI Tests</p>
</div>
<ul class="list" id="test-list">
- <li><a href="#test=empty">Empty test</a></li>
- <li><a href="#test=keyboard">Keyboard test</a></li>
- <li><a href="#test=geolocation">Geolocation test</a></li>
- <li><a href="#test=contextmenu">Contextmenu test</a></li>
- <li><a href="#test=recording">Recording test</a></li>
- <li><a href="#test=select">Select test</a></li>
- <li><a href="#test=contacts">Contacts tests</a></li>
- <li><a href="#test=alert">Alert/Prompt tests</a></li>
- <li><a href="#test=open">window.open tests</a></li>
- <li><a href="#test=notification">mozNotification tests</a></li>
- <li><a href="#test=scrollbar">Scroll bar tests</a></li>
- <li><a href="#test=setcapture">setCapture test</a></li>
- <li><a href="#test=inlineactivities">Inline Activities test</a></li>
- <li><a href="#test=multiactivities">Multi Activities test</a></li>
- <li><a href="#test=browseractivities">Browser Web Activities test</a></li>
+ <li><a href="#test=empty">Empty</a></li>
+ <li><a href="#test=keyboard">Keyboard</a></li>
+ <li><a href="#test=geolocation">Geolocation</a></li>
+ <li><a href="#test=contextmenu">Contextmenu</a></li>
+ <li><a href="#test=recording">Recording</a></li>
+ <li><a href="#test=select">Select</a></li>
+ <li><a href="#test=contacts">Contacts</a></li>
+ <li><a href="#test=alert">Alert/Prompt</a></li>
+ <li><a href="#test=open">window.open</a></li>
+ <li><a href="#test=notification">mozNotification</a></li>
+ <li><a href="#test=scrollbar">Scroll bar</a></li>
+ <li><a href="#test=inlineactivities">Inline Activities</a></li>
+ <li><a href="#test=multiactivities">Multi Activities</a></li>
+ <li><a href="#test=browseractivities">Browser Activities</a></li>
<li><a href="#test=savebookmark">Save bookmark</a></li>
<li><a href="#test=fullscreen">mozRequestFullScreen</a></li>
<li><a href="#test=httpauthentication">HTTP Authentication</a></li>
@@ -35,13 +34,14 @@
<li><a href="#test=viewphoto">View Photo</a></li>
<li><a href="#test=openvideo">Open Video</a></li>
<li><a href="#test=openaudio">Open Audio</a></li>
- <li><a href="#test=pay">navigator.mozPay tests</a></li>
- <li><a href="#test=inputmode">text inputmode tests</a></li>
- <li><a href="#test=audiotag">audio tag tests</a></li>
- <li><a href="#test=identity">navigator.mozId tests</a></li>
+ <li><a href="#test=pay">navigator.mozPay</a></li>
+ <li><a href="#test=inputmode">text inputmode</a></li>
+ <li><a href="#test=audiotag">audio tag</a></li>
+ <li><a href="#test=identity">navigator.mozId</a></li>
<li><a href="#test=identity-get">navigator.mozId.get</a></li>
<li><a href="#test=fullscreen_controls">Fullscreen Controls</a></li>
- <li><a href="#test=canvas">Canvas Tag test</a></li>
+ <li><a href="#test=canvas">Canvas Tag</a></li>
+ <li><a href="#test=csp">CSP Warning</a></li>
</ul>
</div>
<div id="test-panel" class="panel">
View
27 test_apps/uitest/js/alert.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var clickHandlers = {
+ 'button1': function () {
+ window.parent.alert('Hello world!');
+ },
+ 'button2': function () {
+ window.parent.alert(window.parent.confirm('Hello world?'));
+ },
+ 'button3': function () {
+ window.parent.alert(window.parent.prompt('Hello world:', 'initial value'));
+ },
+ 'button21': function () {
+ alert('Hello world!');
+ },
+ 'button22': function () {
+ alert(confirm('Hello world?'));
+ },
+ 'button23': function () {
+ alert(prompt('Hello world:', 'initial value'));
+ }
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id])
+ clickHandlers[evt.target.id].call(this, evt);
+});
View
21 test_apps/uitest/js/audiotag.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var clickHandlers = {
+ 'play': function play() {
+ var src = this.dataset.src;
+
+ var ringtonePlayer = new Audio();
+ ringtonePlayer.loop = true;
+ var selectedSound = '../style/ringtones/' + src;
+ ringtonePlayer.src = selectedSound;
+ ringtonePlayer.play();
+ window.setTimeout(function _pauseRingtone() {
+ ringtonePlayer.pause();
+ }, 20000);
+ }
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id || evt.target.dataset.fn])
+ clickHandlers[evt.target.id || evt.target.dataset.fn].call(this, evt);
+});
View
15 test_apps/uitest/js/browseractivities.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var clickHandlers = {
+ 'go': function _go() {
+ var URL = document.getElementById('URL').value;
+ var a = new MozActivity({ name: 'view', data: {type: 'url', url: URL }});
+ a.onsuccess = function() { alert('Success!'); };
+ a.onerror = function() { alert('Failure going to URL'); };
+ }
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id || evt.target.dataset.fn])
+ clickHandlers[evt.target.id || evt.target.dataset.fn].call(this, evt);
+});
View
22 test_apps/uitest/js/contextmenu.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var clickHandlers = {
+ 'reload': function () {
+ window.location.reload();
+ },
+ 'comments': function () {
+ window.location='#comments';
+ alert(window.location.href);
+ },
+ 'twitter': function () {
+ window.open('http://twitter.com/intent/tweet?text=' + document.title + ': ' + window.location.href, "shareWindow");
+ },
+ 'facebook': function () {
+ window.open('http://facebook.com/sharer/sharer.php?u=' + window.location.href, "shareWindow");
+ }
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id || evt.target.dataset.fn])
+ clickHandlers[evt.target.id || evt.target.dataset.fn].call(this, evt);
+});
View
13 test_apps/uitest/js/empty.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var clickHandlers = {
+/*
+ 'id': function () {
+ alert('event triggered!');
+ }, */
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id || evt.target.dataset.fn])
+ clickHandlers[evt.target.id || evt.target.dataset.fn].call(this, evt);
+});
View
15 test_apps/uitest/js/fullscreen.js
@@ -0,0 +1,15 @@
+'use strict';
+
+var clickHandlers = {
+ 'fullscreen': function fullscreen() {
+ document.getElementById('fullscreen-div').mozRequestFullScreen();
+ },
+ 'fullscreenFrame': function fullscreenFrame() {
+ window.parent.document.getElementById('test-iframe').mozRequestFullScreen();
+ }
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id || evt.target.dataset.fn])
+ clickHandlers[evt.target.id || evt.target.dataset.fn].call(this, evt);
+});
View
14 test_apps/uitest/js/geolocation.js
@@ -0,0 +1,14 @@
+function Location(position)//location function is defining with parameter
+{
+ var latitude = position.coords.latitude; //Specifies the longitude estimate in decimal degrees. The value range is [-180.00, +180.00].
+ var longitude = position.coords.longitude;
+ document.getElementById("lati").innerHTML = latitude; //latitude value is defining in label element where id is lati
+ document.getElementById("longi").innerHTML = longitude;
+}
+
+document.getElementById("submit").addEventListener('click', function findLocation() {
+ if (navigator.geolocation)//checking browser compatibility
+ {
+ navigator.geolocation.getCurrentPosition(Location);//getCurrentPosition method retrieve the current geographic location of the user
+ }
+});
View
18 test_apps/uitest/js/inlineactivities.js
@@ -0,0 +1,18 @@
+document.getElementById('go').onclick = function _go() {
+ var a = new MozActivity(
+ {
+ name: 'test',
+ data: {
+ type: 'inline'
+ }
+ }
+ );
+
+ a.onsuccess = function () {
+ document.getElementById('result').textContent = this.result.text;
+ };
+
+ a.onerror = function() {
+ document.getElementById('result').textContent = '(canceled)';
+ };
+};
View
7 test_apps/uitest/js/multiactivities.js
@@ -0,0 +1,7 @@
+document.getElementById('go').onclick = function _go() {
+ var go = function _go() {
+ var a = new MozActivity({ name: 'test', data: {type: 'text'}});
+ a.onsuccess = function() { alert('Success!'); };
+ a.onerror = function() { alert('Failure.'); };
+ };
+};
View
62 test_apps/uitest/js/notification.js
@@ -0,0 +1,62 @@
+var imageData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE8AAABPCAIAAAAlVg/RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDI0Qjk3MTk5MzIyMTFFMUEyMDI4MTE2MjAzRDM1QUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDI0Qjk3MUE5MzIyMTFFMUEyMDI4MTE2MjAzRDM1QUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MjRCOTcxNzkzMjIxMUUxQTIwMjgxMTYyMDNEMzVBQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0MjRCOTcxODkzMjIxMUUxQTIwMjgxMTYyMDNEMzVBQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnMmeW8AAC3mSURBVHjaPJx5ryXX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';
+
+function noti(win) {
+ var mozNotification;
+ if (!win) {
+ mozNotification = window.navigator.mozNotification;
+ } else {
+ mozNotification = win.navigator.mozNotification;
+ }
+
+ var notification = mozNotification.createNotification('UI Tests mozNotification',
+ 'Hello world!',
+ imageData);
+ notification.show();
+ notification.onclick = function () {
+ window.parent.alert('Notification clicked');
+ };
+ notification.onclose = function () {
+ window.parent.alert('Notification closed');
+ };
+}
+
+function parentFrameNoti() {
+ noti(window.parent);
+}
+
+function noti5() {
+ noti();
+ noti();
+ noti();
+ noti();
+ noti();
+}
+
+function parentFrameNoti5() {
+ noti(window.parent);
+ noti(window.parent);
+ noti(window.parent);
+ noti(window.parent);
+ noti(window.parent);
+}
+
+function delay(callback) {
+ window.parent.alert('Start');
+ setTimeout(callback, 10000);
+}
+
+var clickHandlers = {
+ 'button1': parentFrameNoti,
+ 'button2': function () { delay(parentFrameNoti) },
+ 'button3': function () { delay(parentFrameNoti5) },
+
+ 'button4': noti,
+ 'button5': function () { delay(noti) },
+ 'button6': function () { delay(noti5) }
+};
+
+document.body.addEventListener('click', function (evt) {
+ if (clickHandlers[evt.target.id || evt.target.dataset.fn])
+ clickHandlers[evt.target.id || evt.target.dataset.fn].call(this, evt);
+});
+
View
3  test_apps/uitest/js/popup.js
@@ -0,0 +1,3 @@
+document.getElementById('close').onclick = function () {
+ window.close();
+};
View
13 test_apps/uitest/js/savebookmark.js
@@ -0,0 +1,13 @@
+function save() {
+ new MozActivity({
+ name: 'save-bookmark',
+ data: {
+ type: 'url',
+ url: 'http://www.google.com/',
+ name: 'Google',
+ icon: 'data:image/png;base64,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'
+ }
+ });
+}
+
+document.getElementById('save').onclick = save;
View
6 test_apps/uitest/js/scrollbar.js
@@ -0,0 +1,6 @@
+window.onload = function () {
+ var p = document.getElementById('probe');
+ document.getElementById('report').textContent =
+ 'Scroll bar width calculated from Javascript: ' +
+ (p.offsetWidth - p.scrollWidth - 2) + 'px' // 2 = border width * 2
+};
View
16 test_apps/uitest/js/select.js
@@ -0,0 +1,16 @@
+function changeTest(evt) {
+ console.log('++select++ onchange: ' + this.selectedIndex);
+}
+
+function blurTest(evt) {
+ console.log('++select++ onblur: ' + this.id);
+}
+
+window.onload = function onload() {
+ var elementList = ['singleSel', 'multiSel', 'sizeSel'];
+ elementList.forEach(function(elementId) {
+ console.log('elementId: ' + elementId);
+ document.getElementById(elementId).onchange = changeTest;
+ document.getElementById(elementId).addEventListener('blur', blurTest);
+ });
+}
View
13 test_apps/uitest/tests/alert.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<title>Alert/prompt test</title>
+ <script defer src="../js/alert.js"></script>
<style>
button {
font-size: 40px;
@@ -13,14 +14,14 @@
<h1>Alert/Prompt/Confirm</h1>
<h2>Call on mozbrowser frame:</h2>
- <p><button onclick="window.parent.alert('Hello world!')">Alert</button></p>
- <p><button onclick="window.parent.alert(window.parent.confirm('Hello world?'))">Confirm</button></p>
- <p><button onclick="window.parent.alert(window.parent.prompt('Hello world:', 'initial value'))">Prompt</button></p>
+ <p><button id="button1">Alert</button></p>
+ <p><button id="button2">Confirm</button></p>
+ <p><button id="button3">Prompt</button></p>
<h2>Call on this iframe within mozbrowser:</h2>
- <p><button onclick="alert('Hello world!')">Alert</button></p>
- <p><button onclick="alert(confirm('Hello world?'))">Confirm</button></p>
- <p><button onclick="alert(prompt('Hello world:', 'initial value'))">Prompt</button></p>
+ <p><button id="button21">Alert</button></p>
+ <p><button id="button22">Confirm</button></p>
+ <p><button id="button23">Prompt</button></p>
<p>Press back button to go back.</p>
</body>
View
26 test_apps/uitest/tests/audiotag.html
@@ -3,38 +3,26 @@
<head>
<meta charset="utf-8">
<title>Audio Tag test</title>
+ <script defer src="../js/audiotag.js"></script>
<style>
button {
font-size: 40px;
}
</style>
- <script>
- var play = function _play(src) {
- var ringtonePlayer = new Audio();
- ringtonePlayer.loop = true;
- var selectedSound = '../style/ringtones/' + src;
- ringtonePlayer.src = selectedSound;
- ringtonePlayer.play();
- window.setTimeout(function _pauseRingtone() {
- ringtonePlayer.pause();
- }, 20000);
- }
-
- </script>
</head>
<body>
<h1>Audio Tag Test</h1>
<h2>classic.ogg</h2>
- <button onclick="play('classic.ogg')">Play</button></p>
+ <button data-fn="play" data-src"classic.ogg">Play</button></p>
<h2>AC_prgrssv__Retro_Alarm_Clock_v02_SOFT.ogg</h2>
- <button onclick="play('AC_prgrssv__Retro_Alarm_Clock_v02_SOFT.ogg')">Play</button></p>
+ <button data-fn="play" data-src="AC_prgrssv__Retro_Alarm_Clock_v02_SOFT.ogg">Play</button></p>
<h2>AC_progressive_dapple10.ogg</h2>
- <button onclick="play('AC_progressive_dapple10.ogg')">Play</button></p>
+ <button data-fn="play" data-src="AC_progressive_dapple10.ogg">Play</button></p>
<h2>AC_progressive_shimmer07.ogg</h2>
- <button onclick="play('AC_progressive_shimmer07.ogg')">Play</button></p>
+ <button data-fn="play" data-src="AC_progressive_shimmer07.ogg">Play</button></p>
<h2>ALARM_progressive_dapple.mp3</h2>
- <button onclick="play('ALARM_progressive_dapple.mp3')">Play</button></p>
+ <button data-fn="play" data-src="ALARM_progressive_dapple.mp3">Play</button></p>
<h2>ALARM_progressive2_dapple.mp3</h2>
- <button onclick="play('ALARM_progressive2_dapple.mp3')">Play</button></p>
+ <button data-fn="play" data-src="ALARM_progressive2_dapple.mp3">Play</button></p>
</body>
</html>
View
17 test_apps/uitest/tests/browseractivities.html
@@ -2,26 +2,19 @@
<html>
<head>
<meta charset="utf-8">
- <title>Alert/prompt test</title>
+ <title>Browser Web Activities Test</title>
+ <script defer src="../js/browseractivities.js"></script>
<style>
- button {
+ button, input {
font-size: 40px;
}
</style>
- <script>
- var go = function _go() {
- var URL = document.getElementById('URL').value;
- var a = new MozActivity({ name: 'view', data: {type: 'url', url: URL }});
- a.onsuccess = function() { alert('Success!'); };
- a.onerror = function() { alert('Failure going to URL'); };
- };
- </script>
</head>
<body>
<h1>Browser Web Activities Test</h1>
<h2>Go to:</h2>
- <p>URL: <input type="text" id="URL" />
- <button onclick="go()">Go</button></p>
+ <p>URL: <input type="url" id="URL" value="http://" />
+ <button id="go">Go</button></p>
<p>Press back button to go back.</p>
</body>
</html>
View
16 test_apps/uitest/tests/contextmenu.html
@@ -3,27 +3,21 @@
<head>
<meta charset="utf-8">
<title>New fonts test</title>
+ <script defer src="../js/contextmenu.js"></script>
<style>
</style>
- <script type="text/javascript">
-
- </script>
</head>
<body>
<h1>Context menu test</h1>
<section style="background: #eee; border: 1px solid #ccc; padding: 10px;" contextmenu="mymenu">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse et ipsum in nisl euismod venenatis eget sit amet lectus. Nam magna massa, mollis a fringilla eu, lobortis at metus. Maecenas et mi est. Donec arcu nunc, scelerisque id dapibus non, commodo et diam. Suspendisse et nisl vel dui tempus semper. Aenean placerat lectus et lectus iaculis posuere. Pellentesque scelerisque, nisi vel ornare adipiscing, massa tellus sodales nulla, quis porttitor purus lorem nec elit. Curabitur aliquam turpis non erat volutpat gravida. Pellentesque in neque odio, a placerat tellus. Proin a quam magna, at vestibulum sem. Integer a ipsum sapien, quis tempor est. Duis quis varius lectus.</p>
- <!-- actions -->
- <script>
- function goTo(url) { window.open(url, "shareWindow"); }
- </script>
<!-- create the menu -->
<menu type="context" id="mymenu">
- <menuitem label="Refresh Post" onclick="window.location.reload();" icon="http://davidwalsh.name/dw-content/refresh-icon.png"></menuitem>
- <menuitem label="Skip to Comments" onclick="window.location='#comments';" icon="http://davidwalsh.name/dw-content/comment_icon.gif"></menuitem>
+ <menuitem label="Refresh Post" id="reload" icon="http://davidwalsh.name/dw-content/refresh-icon.png"></menuitem>
+ <menuitem label="Skip to Comments" id="comments" icon="http://davidwalsh.name/dw-content/comment_icon.gif"></menuitem>
<menu label="Share on..." icon="http://davidwalsh.name/dw-content/share_icon.gif">
- <menuitem label="Twitter" icon="http://davidwalsh.name/dw-content/twitter_icon.gif" onclick="goTo('//twitter.com/intent/tweet?text=' + document.title + ': ' + window.location.href);"></menuitem>
- <menuitem label="Facebook" icon="http://davidwalsh.name/dw-content/facebook_icon16x16.gif" onclick="goTo('//facebook.com/sharer/sharer.php?u=' + window.location.href);"></menuitem>
+ <menuitem label="Twitter" icon="http://davidwalsh.name/dw-content/twitter_icon.gif" id="twitter"></menuitem>
+ <menuitem label="Facebook" icon="http://davidwalsh.name/dw-content/facebook_icon16x16.gif" id="facebook"></menuitem>
</menu>
</menu>
</section>
View
17 test_apps/uitest/tests/csp.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>CSP Warning</title>
+ </head>
+ <body>
+ <h1>CSP Warning test</h1>
+ <p id="text">This line should not be removed by Javascript.</p>
+ <script>
+ window.onload = function () {
+ document.getElementById('text').textContent =
+ 'Error! CSP violation is executed!';
+ };
+ </script>
+ </body>
+</html>
View
1  test_apps/uitest/tests/empty.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<title>Empty test</title>
+ <script defer src="../js/empty.js"></script>
</head>
<body>
<h1>Hello world!</h1>
View
13 test_apps/uitest/tests/fullscreen.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<title>mozRequestFullScreen test</title>
+ <script defer src="../js/fullscreen.js"></script>
<style>
button {
font-size: 40px;
@@ -12,14 +13,6 @@
background-color: #ccf;
}
</style>
- <script>
- function fullscreen() {
- document.getElementById('fullscreen-div').mozRequestFullScreen();
- }
- function fullscreenFrame() {
- window.parent.document.getElementById('test-iframe').mozRequestFullScreen();
- }
- </script>
</head>
<body>
<h1>mozRequestFullScreen test</h1>
@@ -30,9 +23,9 @@
<div id="fullscreen-div">
<p>Am I full screen?</p>
</div>
- <p><button onclick="fullscreen()">Test</button></p>
+ <p><button id="fullscreen">Test</button></p>
<h2>Test on this iframe, an element within the mozbrowser</h2>
- <p><button onclick="fullscreenFrame()">Test</button></p>
+ <p><button id="fullscreenFrame">Test</button></p>
</body>
</html>
View
23 test_apps/uitest/tests/geolocation.html
@@ -3,31 +3,16 @@
<head>
<meta charset="utf-8">
<title>Geolocation test</title>
+ <script defer src="../js/geolocation.js"></script>
<style>
- button, select {
- font-size: 25px;
+ button, select, input {
+ font-size: 50px;
}
</style>
- <script type="text/javascript">
- function Location(position)//location function is defining with parameter
- {
- var latitude = position.coords.latitude; //Specifies the longitude estimate in decimal degrees. The value range is [-180.00, +180.00].
- var longitude = position.coords.longitude;
- document.getElementById("lati").innerHTML = latitude; //latitude value is defining in label element where id is lati
- document.getElementById("longi").innerHTML = longitude;
- }
- function findLocation()
- {
- if (navigator.geolocation)//checking browser compatibility
- {
- navigator.geolocation.getCurrentPosition(Location);//getCurrentPosition method retrieve the current geographic location of the user
- }
- }
- </script>
</head>
<body>
Latitude:<label id="lati"></label><br /><br />
Longitude:<label id="longi"></label><br /><br />
- <input type="submit" onclick="findLocation();" value="Find Location" />
+ <input type="button" id="submit" value="Find Location" />
</body>
</html>
View
24 test_apps/uitest/tests/inlineactivities.html
@@ -3,37 +3,17 @@
<head>
<meta charset="utf-8">
<title>Inline Activities Test</title>
+ <script defer src="../js/inlineactivities.js"></script>
<style>
button {
font-size: 40px;
}
</style>
- <script>
-
- var go = function _go() {
- var a = new MozActivity(
- {
- name: 'test',
- data: {
- type: 'inline'
- }
- }
- );
-
- a.onsuccess = function () {
- document.getElementById('result').textContent = this.result.text;
- };
-
- a.onerror = function() {
- document.getElementById('result').textContent = '(canceled)';
- };
- };
- </script>
</head>
<body>
<h1>Inline Activities Test</h1>
- <p><button onclick="go()">Go Test</button></p>
+ <p><button id="go">Go Test</button></p>
<p><strong>Received: </strong><span id="result"></span></p>
</body>
</html>
View
2  test_apps/uitest/tests/inputmode.html
@@ -8,8 +8,6 @@
input { width: 150px; }
textarea { width: 150px; height: 30px; }
</style>
- <script>
- </script>
</head>
<body>
View
10 test_apps/uitest/tests/multiactivities.html
@@ -3,22 +3,16 @@
<head>
<meta charset="utf-8">
<title>Multi Activities test</title>
+ <script defer src="../js/multiactivities.js"></script>
<style>
button {
font-size: 40px;
}
</style>
- <script>
- var go = function _go() {
- var a = new MozActivity({ name: 'test', data: {type: 'text'}});
- a.onsuccess = function() { alert('Success!'); };
- a.onerror = function() { alert('Failure going to URL'); };
- };
- </script>
</head>
<body>
<h1>Multi Activities Test</h1>
- <button onclick="go()">Go Test</button></p>
+ <button id="go">Go Test</button></p>
<p>Press back button to go back.</p>
</body>
</html>
View
61 test_apps/uitest/tests/notification.html
@@ -3,72 +3,25 @@
<head>
<meta charset="utf-8">
<title>mozNotification test</title>
+ <script defer src="../js/notification.js"></script>
<style>
button {
font-size: 40px;
}
</style>
- <script>
- var imageData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE8AAABPCAIAAAAlVg/RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDI0Qjk3MTk5MzIyMTFFMUEyMDI4MTE2MjAzRDM1QUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDI0Qjk3MUE5MzIyMTFFMUEyMDI4MTE2MjAzRDM1QUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MjRCOTcxNzkzMjIxMUUxQTIwMjgxMTYyMDNEMzVBQyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0MjRCOTcxODkzMjIxMUUxQTIwMjgxMTYyMDNEMzVBQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnMmeW8AAC3mSURBVHjaPJx5ryXX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';
-
- function noti(win) {
- var mozNotification;
- if (!win) {
- mozNotification = window.navigator.mozNotification;
- } else {
- mozNotification = win.navigator.mozNotification;
- }
-
- var notification = mozNotification.createNotification('UI Tests mozNotification',
- 'Hello world!',
- imageData);
- notification.show();
- notification.onclick = function () {
- window.parent.alert('Notification clicked');
- };
- notification.onclose = function () {
- window.parent.alert('Notification closed');
- };
- }
-
- function parentFrameNoti() {
- noti(window.parent);
- }
-
- function noti5() {
- noti();
- noti();
- noti();
- noti();
- noti();
- }
-
- function parentFrameNoti5() {
- noti(window.parent);
- noti(window.parent);
- noti(window.parent);
- noti(window.parent);
- noti(window.parent);
- }
-
- function delay(callback) {
- window.parent.alert('Start');
- setTimeout(callback, 10000);
- }
- </script>
</head>
<body>
<h1>mozNotification</h1>
<h2>Call on mozbrowser frame:</h2>
- <p><button onclick="parentFrameNoti()">Notification</button></p>
- <p><button onclick="delay(parentFrameNoti)">Notification (10 sec delay)</button></p>
- <p><button onclick="delay(parentFrameNoti5)">5 Notifications (10 sec delay)</button></p>
+ <p><button id="button1">Notification</button></p>
+ <p><button id="button2">Notification (10 sec delay)</button></p>
+ <p><button id="button3">5 Notifications (10 sec delay)</button></p>
<h2>Call on this iframe within mozbrowser:</h2>
- <p><button onclick="noti()">Notification</button></p>
- <p><button onclick="delay(noti)">Notification (10 sec delay)</button></p>
- <p><button onclick="delay(noti5)">5 Notifications (10 sec delay)</button></p>
+ <p><button id="button4">Notification</button></p>
+ <p><button id="button5">Notification (10 sec delay)</button></p>
+ <p><button id="button6">5 Notifications (10 sec delay)</button></p>
<p>Press back button to go back.</p>
</body>
View
2  test_apps/uitest/tests/open.html
@@ -21,13 +21,11 @@
<h2>Call on mozbrowser frame:</h2>
<p><button class="mozbrowser" data-action="open" data-url="./popup.html">window.open</button></p>
<p><button class="mozbrowser" data-action="open" data-url="./popup.html#attention">window.open(url, name, 'attention')</button></p>
- <p><button class="mozbrowser" data-action="open" data-url="./popup.html#background">window.open(url, name, 'background')</button></p>
<p><button class="mozbrowser" data-action="close" >window.close()</button></p>
<h2>Call on this iframe within mozbrowser:</h2>
<p><button data-action="open" data-url="./popup.html">window.open</button></p>
<p><button data-action="open" data-url="./popup.html#attention">window.open(url, name, 'attention')</button></p>
- <p><button data-action="open" data-url="./popup.html#background">window.open(url, name, 'background')</button></p>
<p><button data-action="open" data-url="https://google.com">Open External URL</button></p>
View
14 test_apps/uitest/tests/popup.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<title>Popup</title>
+ <script defer src="../js/popup.js"></script>
<style>
body {
background-color: #fff;
@@ -11,22 +12,11 @@
font-size: 40px;
}
</style>
- <script>
- if (window.location.hash == '#background') {
- setTimeout(function hello() {
- alert('Hello World from Background Popup!');
- setTimeout(function self_close() {
- alert('Background Popup is closing!');
- window.close();
- }, 5*1E3);
- }, 2000);
- }
- </script>
</head>
<body>
<h1>Hello world!</h1>
<p>I am a popup created from window.open.</p>
<input type="text" value="focus me!" />
- <p><button onclick="window.close()">Close</button></p>
+ <p><button id="close">Close</button></p>
</body>
</html>
View
105 test_apps/uitest/tests/recording.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<title>Recording test</title>
+ <script defer src="../js/recording.js"></script>
<style>
#main {
display: block;
@@ -47,113 +48,17 @@
<body>
<div id="main">
<div id="startbuttons">
- <input type="button" value="Video" onClick="startVideo();"/>
- <input type="button" value="Audio" onClick="startAudio();"/>
- <input type="button" value="Picture" onClick="startPicture();"/>
+ <input type="button" value="Video" id="startVideo"/>
+ <input type="button" value="Audio" id="startAudio"/>
+ <input type="button" value="Picture" id="startPicture"/>
</div>
<div id="content"></div>
<div id="message"></div>
<div id="stopbuttons">
- <input type="button" value="Stop" onClick="stopMedia();"/>
+ <input type="button" value="Stop" id="stopMedia"/>
</div>
</div>
</body>
-
- <script type="application/javascript">
- var videoStatus = false;
- var video = document.createElement("video");
- video.setAttribute("width", 800);
- video.setAttribute("height", 600);
-
- var audioStatus = false;
- var audio = document.createElement("audio");
- audio.setAttribute("controls", true);
-
- var pictureStatus = false;
- var picture = document.createElement("img");
-
- var start = document.getElementById("startbuttons");
- var stop = document.getElementById("stopbuttons");
-
- var message = document.getElementById("message");
- var content = document.getElementById("content");
-
- var reader = new FileReader();
-
- function startVideo() {
- videoStatus = true;
- content.appendChild(video);
- startMedia({video:true});
- }
-
- function startAudio() {
- audioStatus = true;
- content.appendChild(audio);
- startMedia({audio:true});
- }
-
- function startPicture() {
- pictureStatus = true;
- content.appendChild(picture);
- startMedia({picture:true});
- }
-
- function stopMedia() {
- if (videoStatus) {
- video.pause();
- video.src = null;
- content.removeChild(video);
- videoStatus = false;
- }
-
- if (audioStatus) {
- audio.pause();
- audio.src = null;
- content.removeChild(audio);
- audioStatus = false;
- }
-
- if (pictureStatus) {
- picture.src = null;
- content.removeChild(picture);
- pictureStatus = false;
- }
- stop.style.display = "none";
- start.style.display = "block";
- }
-
- function startMedia(param) {
- stop.style.display = "block";
- start.style.display = "none";
- try {
- window.navigator.mozGetUserMedia(param, function(stream) {
- message.innerHTML = "<p>Success!</p>";
- if (videoStatus) {
- video.src = stream;
- video.play();
- }
-
- if (audioStatus) {
- audio.src = stream;
- audio.play();
- }
-
- if (pictureStatus) {
- picture.src = window.URL.createObjectURL(stream);
- picture.onload = function(e) {
- window.URL.revokeObjectURL(this.src);
- }
- }
- }, function(err) {
- message.innerHTML = "<p class='error'>" + err + "</p>";
- stopMedia();
- });
- } catch(e) {
- message.innerHTML = "<p class='error'>" + e + "</p>";
- stopMedia();
- }
- }
- </script>
</html>
View
18 test_apps/uitest/tests/savebookmark.html
@@ -2,7 +2,8 @@
<html>
<head>
<meta charset="utf-8">
- <title>Popup</title>
+ <title>Save bookmark</title>
+ <script src="../js/savebookmark.js" defer></script>
<style>
body {
background-color: #fff;
@@ -11,22 +12,9 @@
font-size: 40px;
}
</style>
- <script>
- function save() {
- new MozActivity({
- name: 'save-bookmark',
- data: {
- type: 'url',
- url: 'http://www.google.es',
- name: 'Google',
- icon: 'data:image/png;base64,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'
- }
- });
- }
- </script>
</head>
<body>
<h1>Save bookmark google</h1>
- <p><button onclick="save()">Save</button></p>
+ <p><button id="save">Save</button></p>
</body>
</html>
View
9 test_apps/uitest/tests/scrollbar.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<title>Scroll Bars!</title>
+ <script defer src="../js/scrollbar.js"></script>
<style>
.box {
width: 200px;
@@ -22,14 +23,6 @@
background-color: #fff;
}
</style>
- <script>
- window.onload = function () {
- var p = document.getElementById('probe');
- document.getElementById('report').textContent =
- 'Scroll bar width calculated from Javascript: ' +
- (p.offsetWidth - p.scrollWidth - 2) + 'px' // 2 = border width * 2
- };
- </script>
</head>
<body>
<p>Each box is 200px width/height, small boxes are 20px.</p>
View
22 test_apps/uitest/tests/select.html
@@ -3,32 +3,12 @@
<head>
<meta charset="utf-8">
<title>Select test</title>
+ <script defer src="../js/select.js"></script>
<style>
body, input, select {
font-size: 1.5em;
}
</style>
-
- <script>
- function changeTest(evt) {
- console.log('++select++ onchange: ' + this.selectedIndex);
- }
-
- function blurTest(evt) {
- console.log('++select++ onblur: ' + this.id);
- }
-
- window.onload = function onload() {
- var elementList = ['singleSel', 'multiSel', 'sizeSel'];
- elementList.forEach(function(elementId) {
- console.log('elementId: ' + elementId);
- document.getElementById(elementId).onchange = changeTest;
- document.getElementById(elementId).addEventListener('blur', blurTest);
- });
- }
-
-
- </script>
</head>
<body>
<ul>
View
34 test_apps/uitest/tests/setcapture.html
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <title>setCapture test</title>
- <style>
- #target {
- width: 100px;
- height: 100px;
- background-color: #f00;
- }
- </style>
- <script>
-window.onload = function () {
- var target = document.getElementById('target');
-
- target.addEventListener('mousedown', function () {
- target.setCapture(true);
- });
-
- target.addEventListener('mouseup', function () {
- document.releaseCapture();
- alert('mouseup fired from target.');
- });
-}
- </script>
- </head>
- <body>
- <h1>setCapture test</h1>
- <p>Press the red box, move your finger out of it and lift the finger. You should see an alert() if setCapture works.</p>
- <div id="target">
- </div>
- </body>
-</html>
Please sign in to comment.
Something went wrong with that request. Please try again.