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

Commit

Permalink
Add media capture case. (#3822)
Browse files Browse the repository at this point in the history
  • Loading branch information
xiuqijix authored and Honry committed Oct 14, 2016
1 parent 1cba273 commit b609081
Show file tree
Hide file tree
Showing 10 changed files with 297 additions and 74 deletions.

This file was deleted.

12 changes: 12 additions & 0 deletions webapi/tct-mediacapture-w3c-tests/mediacapture/w3c/COPYING
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
All the files except this COPYING come from
https://github.com/w3c/web-platform-tests(commit id: ba98b4fcd36adce91ff52ab4b809bc6bd934a27e)
with modification: Modify reference path to test harness

These tests are copyright by W3C and/or the author listed in the test
file. The tests are dual-licensed under the W3C Test Suite License:
http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
and the BSD 3-clause License:
http://www.w3.org/Consortium/Legal/2008/03-bsd-license
under W3C's test suite licensing policy:
http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright

Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<!DOCTYPE html>
<meta charset='utf-8'>
<title>HTML Media Capture Test: capture audio to produce one audio file</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://dev.w3.org/2009/dap/camera/#attributes'>
<link rel='help' href='http://www.w3.org/TR/html5/forms.html#attr-input-accept'>
<meta name='flags' content='interact'>
<meta name="timeout" content="long">
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>

<p>Clear all microphone permissions before running this test. If prompted for permission, please allow.</p>

<p>After hitting the button below, capture an audio and then confirm the capturing.</p>

<p>Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.</p>

<input type='file' accept='audio/*' capture>

<div id='log'></div>

<script>
var input;

setup(function() {
input = document.querySelector('input[type=file]');
}, {explicit_done: true});

async_test(function(t) {
input.onchange = t.step_func_done(function() {
assert_equals(input.files.length, 1, 'Should capture one file');
assert_regexp_match(input.files[0].type, /^audio\//, 'The captured file should be type of audio');
});
done();
});
</script>

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>HTML Media Capture Test: capture_fallback_file_upload</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://www.w3.org/TR/html-media-capture/#the-capture-attribute'>
<link rel='help' href='http://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file)'>
<meta name='flags' content='interact'>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
</head>
<body>
<p>This test validates that the user agent must act as if there was no capture attribute, when the accept attribute value is set to a MIME type that has no associated capture control type.</p>

<p>Test steps:</p>
<ol>
<li>Download <a href='support/upload.txt'>upload.txt</a> to local.</li>
<li>Select the local upload.txt file to run the test.</li>
</ol>

<form>
<input id='fileChooser' type='file' accept='text/plain' capture>
</form>

<div id='log'></div>

<script>
setup({explicit_done: true, explicit_timeout: true});

var fileInput = document.querySelector('#fileChooser');

on_event(fileInput, 'change', function(evt) {
test(function() {
var fileList = document.querySelector('#fileChooser').files;
assert_equals(fileList.length, 1, 'fileList length is 1');
assert_equals(fileList.item(0).name, 'upload.txt', 'file name string is "upload.txt"');
}, 'Check if input.capture fallback to file upload when the accept attribute value is set to a MIME type that has no associated capture control type');

done();
});
</script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<!DOCTYPE html>
<meta charset='utf-8'>
<title>HTML Media Capture Test: capture image to produce one image file</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://dev.w3.org/2009/dap/camera/#attributes'>
<link rel='help' href='http://www.w3.org/TR/html5/forms.html#attr-input-accept'>
<meta name='flags' content='interact'>
<meta name="timeout" content="long">
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>

<p>Clear all camera permissions before running this test. If prompted for permission, please allow.</p>

<p>After hitting the button below, capture an image and then confirm the capturing.</p>

<p>Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.</p>

<input type='file' accept='image/*' capture>

<div id='log'></div>

<script>
var input;

setup(function() {
input = document.querySelector('input[type=file]');
}, {explicit_done: true});

async_test(function(t) {
input.onchange = t.step_func_done(function() {
assert_equals(input.files.length, 1, 'Should capture one file');
assert_regexp_match(input.files[0].type, /^image\//, 'The captured file should be type of image');
});
done();
});
</script>

Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>HTML Media Capture Test: capture_reflect</title>
<link rel='author' title='Intel' href='http://www.intel.com/'>
<link rel='help' href='http://www.w3.org/TR/html-media-capture/#the-capture-attribute'>
<link rel='help' href='http://www.w3.org/html/wg/drafts/html/CR/infrastructure.html#reflect'>
<link rel='help' href='http://www.w3.org/html/wg/drafts/html/CR/infrastructure.html#boolean-attributes'>
<meta name='flags' content='dom'>
<meta name='assert' content='Test checks that the capture IDL attribute must reflect the content attribute of the same name.'>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
</head>
<body>
<pre style='display:none'>
partial interface HTMLInputElement {
attribute boolean capture;
};
</pre>

<div style='display:none'>
<input id='absent' type='file' accept='image/*'>
<input id='present' type='file' accept='image/*' capture>
<input id='present-empty-string' type='file' accept='image/*' capture=''>
<input id='present-canonical-name' type='file' accept='image/*' capture=capture>
</div>

<div id='log'></div>

<script>
test(function() {
var inputs = document.querySelectorAll('input');
for (var i=0, obj; i<inputs.length, obj=inputs[i]; i++) {
assert_own_property(obj, 'capture');
assert_equals(typeof obj.capture, 'boolean');
}
}, 'Element input should have own property capture');

test(function() {
assert_false(document.querySelector('#absent').capture);
}, 'input.capture is false when the capture attribute is absent');

test(function() {
assert_true(document.querySelector('#present').capture);
}, 'input.capture is true when the capture attribute is present');

test(function() {
assert_true(document.querySelector('#present-empty-string').capture);
}, 'input.capture is true when the capture attribute is present as empty string');

test(function() {
assert_true(document.querySelector('#present-canonical-name').capture);
}, 'input.capture is true when the capture attribute is present as canonical name');
</script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<!DOCTYPE html>
<meta charset='utf-8'>
<title>HTML Media Capture Test: capture video to produce one video file</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<link rel='help' href='http://dev.w3.org/2009/dap/camera/#attributes'>
<link rel='help' href='http://www.w3.org/TR/html5/forms.html#attr-input-accept'>
<meta name='flags' content='interact'>
<meta name="timeout" content="long">
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>

<p>Clear all camera/microphone permissions before running this test. If prompted for permission, please allow.</p>

<p>After hitting the button below, capture an video and then confirm the capturing.</p>

<p>Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.</p>

<input type='file' accept='video/*' capture>

<div id='log'></div>

<script>
var input;

setup(function() {
input = document.querySelector('input[type=file]');
}, {explicit_done: true});

async_test(function(t) {
input.onchange = t.step_func_done(function() {
assert_equals(input.files.length, 1, 'Should capture one file');
assert_regexp_match(input.files[0].type, /^video\//, 'The captured file should be type of video');
});
done();
});
</script>

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello
60 changes: 50 additions & 10 deletions webapi/tct-mediacapture-w3c-tests/tests.full.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,57 @@
</spec>
</specs>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_video" priority="P2" purpose="Check if the input will accept an video when capture set to acmcorder" status="approved" type="compliance">
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_audio" priority="P1" purpose="Check if the capture audio to produce one audio file" status="approved" type="compliance">
<description>
<pre_condition/>
<post_condition/>
<steps>
<step order="1">
<step_desc>Click the button, allow microphone and camera access, and start to capture a video</step_desc>
<expected>There appears a video capture screen, there is a way to disable the audio record, and there is a way to stop the video capture.</expected>
</step>
</steps>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/capture_video-manual.html</test_script_entry>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_audio-manual.html</test_script_entry>
</description>
<specs>
<spec>
<spec_assertion category="Tizen W3C API Specifications" element_name="capture" element_type="attribute" interface="HTMLInputElement" section="Media" specification="HTML Media Capture"/>
<spec_url>http://www.w3.org/TR/2012/WD-html-media-capture-20120712/#the-capture-attribute</spec_url>
<spec_statement/>
</spec>
</specs>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_fallback_file_upload" priority="P1" purpose="Check if input.capture fallback to file upload when the accept attribute value is set to a MIME type that has no associated capture control type" status="approved" type="compliance">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_fallback_file_upload.html</test_script_entry>
</description>
<specs>
<spec>
<spec_assertion category="Tizen W3C API Specifications" element_name="capture" element_type="attribute" interface="HTMLInputElement" section="Media" specification="HTML Media Capture"/>
<spec_url>http://www.w3.org/TR/2012/WD-html-media-capture-20120712/#the-capture-attribute</spec_url>
<spec_statement/>
</spec>
</specs>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_image" priority="P1" purpose="Check if the capture image to produce one image file" status="approved" type="compliance">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_image-manual.html</test_script_entry>
</description>
<specs>
<spec>
<spec_assertion category="Tizen W3C API Specifications" element_name="capture" element_type="attribute" interface="HTMLInputElement" section="Media" specification="HTML Media Capture"/>
<spec_url>http://www.w3.org/TR/2012/WD-html-media-capture-20120712/#the-capture-attribute</spec_url>
<spec_statement/>
</spec>
</specs>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="auto" id="capture_reflect" priority="P1" purpose="Check if the input.capture is correct when set different capture value" status="approved" type="compliance" subcase="5">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_reflect.html</test_script_entry>
</description>
<specs>
<spec>
<spec_assertion category="Tizen W3C API Specifications" element_name="capture" element_type="attribute" interface="HTMLInputElement" section="Media" specification="HTML Media Capture"/>
<spec_url>http://www.w3.org/TR/2012/WD-html-media-capture-20120712/#the-capture-attribute</spec_url>
<spec_statement/>
</spec>
</specs>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_video" priority="P1" purpose="Check if the capture video to produce one video file" status="approved" type="compliance">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_video-manual.html</test_script_entry>
</description>
<specs>
<spec>
Expand Down
31 changes: 22 additions & 9 deletions webapi/tct-mediacapture-w3c-tests/tests.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,29 @@
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/HTMLInputElement_attribute.html</test_script_entry>
</description>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_video" purpose="Check if the input will accept an video when capture set to acmcorder">
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_audio" purpose="Check if the capture audio to produce one audio file">
<description>
<steps>
<pre_condition/>
<step order="1">
<step_desc>Click the button, allow microphone and camera access, and start to capture a video</step_desc>
<expected>There appears a video capture screen, there is a way to disable the audio record, and there is a way to stop the video capture.</expected>
</step>
</steps>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/capture_video-manual.html</test_script_entry>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_audio-manual.html</test_script_entry>
</description>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_fallback_file_upload" purpose="Check if input.capture fallback to file upload when the accept attribute value is set to a MIME type that has no associated capture control type">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_fallback_file_upload.html</test_script_entry>
</description>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_image" purpose="Check if the capture image to produce one image file">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_image-manual.html</test_script_entry>
</description>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="auto" id="capture_reflect" purpose="Check if the input.capture is correct when set different capture value" subcase="5">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_reflect.html</test_script_entry>
</description>
</testcase>
<testcase component="W3C_HTML5 APIs/Media/HTML Media Capture" execution_type="manual" id="capture_video" purpose="Check if the capture video to produce one video file">
<description>
<test_script_entry>/opt/tct-mediacapture-w3c-tests/mediacapture/w3c/capture_video-manual.html</test_script_entry>
</description>
</testcase>
</set>
Expand Down

0 comments on commit b609081

Please sign in to comment.