Browse Source

Add spec for midi without sysex permission

Kevin Sawicki 8 years ago
parent
commit
977680d00b

+ 5 - 0
spec/fixtures/pages/permissions/midi-sysex.html

@@ -0,0 +1,5 @@
+<script>
+navigator.requestMIDIAccess({sysex: true}).then(() => {}, (err) => {
+  require('electron').ipcRenderer.sendToHost('message', err.name);
+});
+</script>

+ 1 - 1
spec/fixtures/pages/permissions/midi.html

@@ -1,5 +1,5 @@
 <script>
-navigator.requestMIDIAccess({sysex: true}).then(() => {}, (err) => {
+navigator.requestMIDIAccess({sysex: false}).then(() => {}, (err) => {
   require('electron').ipcRenderer.sendToHost('message', err.name);
 });
 </script>

+ 20 - 1
spec/webview-spec.js

@@ -928,6 +928,12 @@ describe('<webview> tag', function () {
     function setUpRequestHandler (webview, requestedPermission, completed) {
       var listener = function (webContents, permission, callback) {
         if (webContents.getId() === webview.getId()) {
+          // requestMIDIAccess with sysex requests both midi and midiSysex so
+          // grant the first midi one and then reject the midiSysex one
+          if (requestedPermission == 'midiSysex' && permission == 'midi') {
+            return callback(true)
+          }
+
           assert.equal(permission, requestedPermission)
           callback(false)
           if (completed) completed()
@@ -962,7 +968,7 @@ describe('<webview> tag', function () {
       document.body.appendChild(webview)
     })
 
-    it('emits when using navigator.requestMIDIAccess api', function (done) {
+    it('emits when using navigator.requestMIDIAccess without sysex api', function (done) {
       webview.addEventListener('ipc-message', function (e) {
         assert.equal(e.channel, 'message')
         assert.deepEqual(e.args, ['SecurityError'])
@@ -971,6 +977,19 @@ describe('<webview> tag', function () {
       webview.src = 'file://' + fixtures + '/pages/permissions/midi.html'
       webview.partition = 'permissionTest'
       webview.setAttribute('nodeintegration', 'on')
+      setUpRequestHandler(webview, 'midi')
+      document.body.appendChild(webview)
+    })
+
+    it('emits when using navigator.requestMIDIAccess with sysex api', function (done) {
+      webview.addEventListener('ipc-message', function (e) {
+        assert.equal(e.channel, 'message')
+        assert.deepEqual(e.args, ['SecurityError'])
+        done()
+      })
+      webview.src = 'file://' + fixtures + '/pages/permissions/midi-sysex.html'
+      webview.partition = 'permissionTest'
+      webview.setAttribute('nodeintegration', 'on')
       setUpRequestHandler(webview, 'midiSysex')
       document.body.appendChild(webview)
     })