From 10e49826b10547690502e0d6c515d9b57ff770aa Mon Sep 17 00:00:00 2001 From: Kyle Machulis Date: Tue, 21 Jul 2015 14:28:30 -0700 Subject: [PATCH] Bug 1201590 - WebMIDI Mochitests; r=baku,padenot MozReview-Commit-ID: F6bSQ4oCRDq --HG-- extra : rebase_source : cb60759b5688de759e8e6aa9301b6f5d1f640a67 --- .eslintignore | 1 + dom/midi/TestMIDIPlatformService.cpp | 6 +- dom/midi/moz.build | 4 +- dom/midi/tests/.eslintrc.js | 7 + dom/midi/tests/MIDITestUtils.js | 56 ++++++++ dom/midi/tests/mochitest.ini | 18 +++ .../test_midi_device_connect_disconnect.html | 54 ++++++++ .../tests/test_midi_device_enumeration.html | 46 +++++++ .../test_midi_device_explicit_open_close.html | 95 ++++++++++++++ .../test_midi_device_implicit_open_close.html | 67 ++++++++++ dom/midi/tests/test_midi_device_pending.html | 122 ++++++++++++++++++ dom/midi/tests/test_midi_device_sysex.html | 57 ++++++++ .../tests/test_midi_device_system_rt.html | 39 ++++++ .../test_midi_packet_timing_sorting.html | 47 +++++++ .../tests/test_midi_permission_allow.html | 26 ++++ dom/midi/tests/test_midi_permission_deny.html | 26 ++++ .../tests/test_midi_permission_prompt.html | 24 ++++ .../mochitest/general/test_interfaces.js | 16 +++ 18 files changed, 703 insertions(+), 8 deletions(-) create mode 100644 dom/midi/tests/.eslintrc.js create mode 100644 dom/midi/tests/MIDITestUtils.js create mode 100644 dom/midi/tests/mochitest.ini create mode 100644 dom/midi/tests/test_midi_device_connect_disconnect.html create mode 100644 dom/midi/tests/test_midi_device_enumeration.html create mode 100644 dom/midi/tests/test_midi_device_explicit_open_close.html create mode 100644 dom/midi/tests/test_midi_device_implicit_open_close.html create mode 100644 dom/midi/tests/test_midi_device_pending.html create mode 100644 dom/midi/tests/test_midi_device_sysex.html create mode 100644 dom/midi/tests/test_midi_device_system_rt.html create mode 100644 dom/midi/tests/test_midi_packet_timing_sorting.html create mode 100644 dom/midi/tests/test_midi_permission_allow.html create mode 100644 dom/midi/tests/test_midi_permission_deny.html create mode 100644 dom/midi/tests/test_midi_permission_prompt.html diff --git a/.eslintignore b/.eslintignore index 3a9b45d9e601..7f8640605124 100644 --- a/.eslintignore +++ b/.eslintignore @@ -240,6 +240,7 @@ dom/mathml/** dom/media/** !dom/media/*.js* dom/messagechannel/** +dom/midi/** dom/network/** dom/notification/Notification*.* dom/notification/test/browser/** diff --git a/dom/midi/TestMIDIPlatformService.cpp b/dom/midi/TestMIDIPlatformService.cpp index 87032a87f879..ea35cfd53830 100644 --- a/dom/midi/TestMIDIPlatformService.cpp +++ b/dom/midi/TestMIDIPlatformService.cpp @@ -192,18 +192,14 @@ void TestMIDIPlatformService::ProcessMessages(const nsAString& aPortId) case 0x01: { nsCOMPtr r1(new AddPortRunnable(mStateTestInputPort)); - nsCOMPtr r2(new AddPortRunnable(mStateTestOutputPort)); mBackgroundThread->Dispatch(r1, NS_DISPATCH_NORMAL); - mBackgroundThread->Dispatch(r2, NS_DISPATCH_NORMAL); break; } // Cause control test ports to disconnect case 0x02: { nsCOMPtr r1(new RemovePortRunnable(mStateTestInputPort)); - nsCOMPtr r2(new RemovePortRunnable(mStateTestOutputPort)); mBackgroundThread->Dispatch(r1, NS_DISPATCH_NORMAL); - mBackgroundThread->Dispatch(r2, NS_DISPATCH_NORMAL); break; } // Test for packet timing @@ -224,7 +220,7 @@ void TestMIDIPlatformService::ProcessMessages(const nsAString& aPortId) // we're sorting correctly. newMsgs.AppendElement( MIDIMessage(msg, currentTime - - TimeDuration::FromMilliseconds(i))); + TimeDuration::FromMilliseconds(i * 2))); } nsCOMPtr r(new QueueMessagesRunnable(aPortId, newMsgs)); mBackgroundThread->Dispatch(r, NS_DISPATCH_NORMAL); diff --git a/dom/midi/moz.build b/dom/midi/moz.build index 1ec03af73161..eb0b11cd979b 100644 --- a/dom/midi/moz.build +++ b/dom/midi/moz.build @@ -60,6 +60,4 @@ LOCAL_INCLUDES += [ '/dom/base', ] -# TEST_DIRS += [ -# 'test', -# ] +MOCHITEST_MANIFESTS += ['tests/mochitest.ini'] diff --git a/dom/midi/tests/.eslintrc.js b/dom/midi/tests/.eslintrc.js new file mode 100644 index 000000000000..407338aa6910 --- /dev/null +++ b/dom/midi/tests/.eslintrc.js @@ -0,0 +1,7 @@ +"use strict"; + +module.exports = { + "extends": [ + "plugin:mozilla/mochitest-test", + ] +}; diff --git a/dom/midi/tests/MIDITestUtils.js b/dom/midi/tests/MIDITestUtils.js new file mode 100644 index 000000000000..c59f8b9cc1d9 --- /dev/null +++ b/dom/midi/tests/MIDITestUtils.js @@ -0,0 +1,56 @@ +/* eslint-env mozilla/frame-script */ +var MIDITestUtils = { + permissionSetup: (allow) => { + let permPromiseRes; + let permPromise = new Promise((res, rej) => { permPromiseRes = res; }); + SpecialPowers.pushPrefEnv({"set": [["dom.webmidi.enabled", true], + ["midi.testing", true], + ["midi.prompt.testing", true], + ["media.navigator.permission.disabled", allow]]}, + () => { + permPromiseRes(); + }); + return permPromise; + }, + // This list needs to stay synced with the ports in + // dom/midi/TestMIDIPlatformService. + inputInfo: { + id: "b744eebe-f7d8-499b-872b-958f63c8f522", + name: "Test Control MIDI Device Input Port", + manufacturer: "Test Manufacturer", + version: "1.0.0" + }, + outputInfo: { + id: "ab8e7fe8-c4de-436a-a960-30898a7c9a3d", + name: "Test Control MIDI Device Output Port", + manufacturer: "Test Manufacturer", + version: "1.0.0" + }, + stateTestInputInfo: { + id: "a9329677-8588-4460-a091-9d4a7f629a48", + name: "Test State MIDI Device Input Port", + manufacturer: "Test Manufacturer", + version: "1.0.0" + }, + stateTestOutputInfo: { + id: "478fa225-b5fc-4fa6-a543-d32d9cb651e7", + name: "Test State MIDI Device Output Port", + manufacturer: "Test Manufacturer", + version: "1.0.0" + }, + alwaysClosedTestOutputInfo: { + id: "f87d0c76-3c68-49a9-a44f-700f1125c07a", + name: "Always Closed MIDI Device Output Port", + manufacturer: "Test Manufacturer", + version: "1.0.0" + }, + checkPacket: (expected, actual) => { + if (expected.length != actual.length) { + ok(false, "Packet " + expected + " length not same as packet " + actual); + } + for (var i = 0; i < expected.length; ++i) { + is(expected[i], actual[i], "Packet value " + expected[i] + " matches."); + } + } +}; + diff --git a/dom/midi/tests/mochitest.ini b/dom/midi/tests/mochitest.ini new file mode 100644 index 000000000000..2053b2c8106a --- /dev/null +++ b/dom/midi/tests/mochitest.ini @@ -0,0 +1,18 @@ +[DEFAULT] +support-files = + MIDITestUtils.js +scheme = https + +[test_midi_permission_prompt.html] +[test_midi_permission_allow.html] +[test_midi_permission_deny.html] +[test_midi_device_enumeration.html] +[test_midi_device_implicit_open_close.html] +[test_midi_device_explicit_open_close.html] +[test_midi_device_sysex.html] +[test_midi_device_system_rt.html] +[test_midi_packet_timing_sorting.html] +[test_midi_device_connect_disconnect.html] +disabled = Bug 1437204 +[test_midi_device_pending.html] +disabled = Bug 1437204 diff --git a/dom/midi/tests/test_midi_device_connect_disconnect.html b/dom/midi/tests/test_midi_device_connect_disconnect.html new file mode 100644 index 000000000000..03e9d9dedfe4 --- /dev/null +++ b/dom/midi/tests/test_midi_device_connect_disconnect.html @@ -0,0 +1,54 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_device_enumeration.html b/dom/midi/tests/test_midi_device_enumeration.html new file mode 100644 index 000000000000..9282a3fd3484 --- /dev/null +++ b/dom/midi/tests/test_midi_device_enumeration.html @@ -0,0 +1,46 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_device_explicit_open_close.html b/dom/midi/tests/test_midi_device_explicit_open_close.html new file mode 100644 index 000000000000..3e3ad78a01a3 --- /dev/null +++ b/dom/midi/tests/test_midi_device_explicit_open_close.html @@ -0,0 +1,95 @@ + + + WebMIDI Device Open/Close Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_device_implicit_open_close.html b/dom/midi/tests/test_midi_device_implicit_open_close.html new file mode 100644 index 000000000000..a53989904e52 --- /dev/null +++ b/dom/midi/tests/test_midi_device_implicit_open_close.html @@ -0,0 +1,67 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_device_pending.html b/dom/midi/tests/test_midi_device_pending.html new file mode 100644 index 000000000000..de81244dd787 --- /dev/null +++ b/dom/midi/tests/test_midi_device_pending.html @@ -0,0 +1,122 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_device_sysex.html b/dom/midi/tests/test_midi_device_sysex.html new file mode 100644 index 000000000000..0698fe02db6b --- /dev/null +++ b/dom/midi/tests/test_midi_device_sysex.html @@ -0,0 +1,57 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_device_system_rt.html b/dom/midi/tests/test_midi_device_system_rt.html new file mode 100644 index 000000000000..e4e605461dbe --- /dev/null +++ b/dom/midi/tests/test_midi_device_system_rt.html @@ -0,0 +1,39 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_packet_timing_sorting.html b/dom/midi/tests/test_midi_packet_timing_sorting.html new file mode 100644 index 000000000000..a7bed5bbd389 --- /dev/null +++ b/dom/midi/tests/test_midi_packet_timing_sorting.html @@ -0,0 +1,47 @@ + + + WebMIDI Listener Test + + + + + + + + + + diff --git a/dom/midi/tests/test_midi_permission_allow.html b/dom/midi/tests/test_midi_permission_allow.html new file mode 100644 index 000000000000..c2039278dce2 --- /dev/null +++ b/dom/midi/tests/test_midi_permission_allow.html @@ -0,0 +1,26 @@ + + + WebMIDI Listener Test + + + + + + + + diff --git a/dom/midi/tests/test_midi_permission_deny.html b/dom/midi/tests/test_midi_permission_deny.html new file mode 100644 index 000000000000..8d60eaa01782 --- /dev/null +++ b/dom/midi/tests/test_midi_permission_deny.html @@ -0,0 +1,26 @@ + + + WebMIDI Listener Test + + + + + + + + diff --git a/dom/midi/tests/test_midi_permission_prompt.html b/dom/midi/tests/test_midi_permission_prompt.html new file mode 100644 index 000000000000..e890668add7d --- /dev/null +++ b/dom/midi/tests/test_midi_permission_prompt.html @@ -0,0 +1,24 @@ + + + WebMIDI Listener Test + + + + + + + + diff --git a/dom/tests/mochitest/general/test_interfaces.js b/dom/tests/mochitest/general/test_interfaces.js index b14b852b7c4f..10425ccdad4e 100644 --- a/dom/tests/mochitest/general/test_interfaces.js +++ b/dom/tests/mochitest/general/test_interfaces.js @@ -664,6 +664,22 @@ var interfaceNamesInGlobalScope = {name: "MessageEvent", insecureContext: true}, // IMPORTANT: Do not change this list without review from a DOM peer! {name: "MessagePort", insecureContext: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIAccess", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIConnectionEvent", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIInputMap", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIInput", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIMessageEvent", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIOutputMap", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIOutput", disabled: true}, +// IMPORTANT: Do not change this list without review from a DOM peer! + {name: "MIDIPort", disabled: true}, // IMPORTANT: Do not change this list without review from a DOM peer! {name: "MimeType", insecureContext: true}, // IMPORTANT: Do not change this list without review from a DOM peer!