Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: LayoutTests/webmidi/state-check-utils.js

Issue 1051903002: Web MIDI: implement implicit open() on send() and setOnmidimessage() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../resources/js-test.js"></script>
5 </head>
6 <body>
7 <script>
8 description("Tests MIDIPort.open and MIDIPort.close.");
9
10 function checkStateTransition(options) { 1 function checkStateTransition(options) {
11 debug("Check state transition for " + options.method + " on " + 2 debug("Check state transition for " + options.method + " on " +
12 options.initialconnection + " state."); 3 options.initialconnection + " state.");
13 debug("- check initial state."); 4 debug("- check initial state.");
14 window.port = options.port; 5 window.port = options.port;
15 shouldBeEqualToString("port.connection", options.initialconnection); 6 shouldBeEqualToString("port.connection", options.initialconnection);
16 var checkHandler = function(e) { 7 var checkHandler = function(e) {
17 window.eventport = e.port; 8 window.eventport = e.port;
18 testPassed("handler is called with port " + eventport + "."); 9 testPassed("handler is called with port " + eventport + ".");
19 if (options.initialconnection == options.finalconnection) { 10 if (options.initialconnection == options.finalconnection) {
20 testFailed("onstatechange handler should not be called here."); 11 testFailed("onstatechange handler should not be called here.");
21 } 12 }
22 shouldBeEqualToString("eventport.id", options.port.id); 13 shouldBeEqualToString("eventport.id", options.port.id);
23 shouldBeEqualToString("eventport.connection", options.finalconnection); 14 shouldBeEqualToString("eventport.connection", options.finalconnection);
24 }; 15 };
25 port.onstatechange = function(e) { 16 port.onstatechange = function(e) {
26 debug("- check port handler."); 17 debug("- check port handler.");
27 checkHandler(e); 18 checkHandler(e);
28 }; 19 };
29 access.onstatechange = function(e) { 20 access.onstatechange = function(e) {
30 debug("- check access handler."); 21 debug("- check access handler.");
31 checkHandler(e); 22 checkHandler(e);
32 }; 23 };
24 if (options.method == "send") {
25 port.send([]);
26 }
27 if (options.method == "midimessage") {
yhirano 2015/04/02 02:15:10 [optional] How about naming this as "setonmidimess
Takashi Toyoshima 2015/04/02 04:03:20 Done.
28 port.onmidimessage = function() {};
29 }
30 if (options.method == "send" || options.method == "midimessage") {
31 // Following tests expect an implicit open finishes synchronously.
32 // But it will be asynchronous in the future.
33 debug("- check final state.");
34 shouldBeEqualToString("port.connection", options.finalconnection);
35 return Promise.resolve();
36 }
37 // |method| is expected to be "open" or "close".
33 return port[options.method]().then(function(p) { 38 return port[options.method]().then(function(p) {
34 window.callbackport = p; 39 window.callbackport = p;
35 debug("- check callback arguments."); 40 debug("- check callback arguments.");
36 testPassed("callback is called with port " + callbackport + "."); 41 testPassed("callback is called with port " + callbackport + ".");
37 shouldBeEqualToString("callbackport.id", options.port.id); 42 shouldBeEqualToString("callbackport.id", options.port.id);
38 shouldBeEqualToString("callbackport.connection", options.finalconnection ); 43 shouldBeEqualToString("callbackport.connection", options.finalconnection );
39 debug("- check final state."); 44 debug("- check final state.");
40 shouldBeEqualToString("port.connection", options.finalconnection); 45 shouldBeEqualToString("port.connection", options.finalconnection);
41 }, function(e) { 46 }, function(e) {
42 testFailed("error callback should not be called here."); 47 testFailed("error callback should not be called here.");
43 throw e; 48 throw e;
44 }); 49 });
45 } 50 }
46 51
47 function runTests(port) {
48 return Promise.resolve().then(checkStateTransition.bind(undefined, {
49 port: port,
50 method: "close",
51 initialconnection: "closed",
52 finalconnection: "closed",
53 })).then(checkStateTransition.bind(undefined, {
54 port: port,
55 method: "open",
56 initialconnection: "closed",
57 finalconnection: "open",
58 })).then(checkStateTransition.bind(undefined, {
59 port: port,
60 method: "open",
61 initialconnection: "open",
62 finalconnection: "open",
63 })).then(checkStateTransition.bind(undefined, {
64 port: port,
65 method: "close",
66 initialconnection: "open",
67 finalconnection: "closed",
68 }));
69 }
70 52
71 function successAccessCallback(a) {
72 window.access = a;
73 testPassed("requestMIDIAccess() succeeded with access " + access + ".");
74
75 runTests(access.inputs.values().next().value)
76 .then(finishJSTest, finishJSTest);
77 }
78
79 function errorAccessCallback(error) {
80 testFailed("requestMIDIAccess() error callback should not be called when req uesting basic access.");
81 finishJSTest();
82 }
83
84 window.jsTestIsAsync = true;
85
86 // Test MIDIPort state transition by open() and close().
87 navigator.requestMIDIAccess().then(successAccessCallback, errorAccessCallback);
88
89 </script>
90 </body>
91 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698