New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 132 users

Comments by non-members will not trigger notification emails to users who starred this issue.

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2015
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Launch-OWP
Launch-Accessibility: ----
Launch-Exp-Leadership: ----
Launch-Leadership: ----
Launch-Legal: ----
Launch-M-Approved: ----
Launch-M-Target: ----
Launch-Privacy: ----
Launch-Security: ----
Launch-Test: ----
Launch-UI: ----
Rollout-Type: ----


Sign in to add a comment

Implement Web MIDI API

Reported by ron...@gmail.com, Dec 2 2012

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11

Steps to reproduce the problem:
Implement a version 0.1 of the Web MIDI API:

https://dvcs.w3.org/hg/audio/raw-file/tip/midi/specification.html

It's ok if the version 0.1 is not final, because the MIDI spec is just a draft. But it would be awesome to start experimenting with building apps for accepting MIDI input in a browser.

What is the expected behavior?
Connect my MIDI devices (e.g., electronic keyboard) and have the Chrome browser be able to accept input from them. That way, we can have really amazing instrument-based UIs for apps like http://www.jamwithchrome.com/

What went wrong?
(Nothing's wrong. This is a feature request! :-)

Did this work before? N/A 

Chrome version: 23.0.1271.95  Channel: stable
OS Version: OS X 10.8.2
 
Showing comments 44 - 143 of 143 Older
Project Member

Comment 45 by bugdroid1@chromium.org, May 13 2013

Comment 47 Deleted

Blockedon: chromium:243345
Project Member

Comment 52 by bugdroid1@chromium.org, Jun 11 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=152223

------------------------------------------------------------------------
r152223 | toyoshim@chromium.org | 2013-06-11T15:27:51.887542Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/NavigatorWebMIDI.h?r1=152223&r2=152222&pathrev=152223
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/navigator-detached-no-crash-expected.txt?r1=152223&r2=152222&pathrev=152223
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/request-midi-access.html?r1=152223&r2=152222&pathrev=152223
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/NavigatorWebMIDI.idl?r1=152223&r2=152222&pathrev=152223
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi?r1=152223&r2=152222&pathrev=152223
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/request-midi-access-expected.txt?r1=152223&r2=152222&pathrev=152223
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/NavigatorWebMIDI.cpp?r1=152223&r2=152222&pathrev=152223
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=152223&r2=152222&pathrev=152223

Web MIDI: implement NavigatorWebMIDI

This change implements NavigatorWebMIDI to introduce
navigator.requestMIDIAccess().

BUG= 163795 
TEST=none

Review URL: https://chromiumcodereview.appspot.com/16407007
------------------------------------------------------------------------
Project Member

Comment 53 by bugdroid1@chromium.org, Jun 19 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=152715

------------------------------------------------------------------------
r152715 | toyoshim@chromium.org | 2013-06-19T11:56:05.817193Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi?r1=152715&r2=152714&pathrev=152715
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.cpp?r1=152715&r2=152714&pathrev=152715
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=152715&r2=152714&pathrev=152715
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessorClient.h?r1=152715&r2=152714&pathrev=152715
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.h?r1=152715&r2=152714&pathrev=152715
   A http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessorClient.h?r1=152715&r2=152714&pathrev=152715
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/OWNERS?r1=152715&r2=152714&pathrev=152715
   A http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessor.h?r1=152715&r2=152714&pathrev=152715
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/Platform.h?r1=152715&r2=152714&pathrev=152715

Web MIDI: MIDIAccessor platform implementation and Blink API

This change implements MIDIAccessor in platform in order to access
platform dependent MIDI handling from MIDIAccess and MIDIPort.
It must be exposed as Blink API.

TEST=none
BUG= 163795 

Review URL: https://chromiumcodereview.appspot.com/17155009
------------------------------------------------------------------------
Project Member

Comment 54 by bugdroid1@chromium.org, Jun 19 2013

Project Member

Comment 56 by bugdroid1@chromium.org, Jun 22 2013

------------------------------------------------------------------------
r207983 | crogers@google.com | 2013-06-22T00:55:52.694640Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/content_message_generator.h?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.cc?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_process_host_impl.cc?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.h?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/common/media/midi_messages.h?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_renderer.gypi?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.cc?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.h?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.h?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_port_info.cc?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_port_info.h?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/DEPS?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.cc?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/media.gyp?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/ipc/ipc_message_start.h?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.h?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.cc?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_browser.gypi?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.h?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.cc?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/browser_main_loop.cc?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/renderer_webkitplatformsupport_impl.cc?r1=207983&r2=207982&pathrev=207983
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.h?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/browser_main_loop.h?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_common.gypi?r1=207983&r2=207982&pathrev=207983
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/renderer_webkitplatformsupport_impl.h?r1=207983&r2=207982&pathrev=207983

Implement Web MIDI API back-end

This involves browser-side support and IPC for sending and receiving
MIDI messages.  Initially support for OSX is included.

BUG= 163795 
R=palmer@chromium.org, piman@chromium.org, scherkus@chromium.org

Review URL: https://codereview.chromium.org/16025005
------------------------------------------------------------------------
Project Member

Comment 57 by bugdroid1@chromium.org, Jun 22 2013

------------------------------------------------------------------------
r207989 | crogers@google.com | 2013-06-22T01:49:39.653913Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/renderer_webkitplatformsupport_impl.cc?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/browser_main_loop.h?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_common.gypi?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/renderer_webkitplatformsupport_impl.h?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/content_message_generator.h?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.cc?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_process_host_impl.cc?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.h?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/common/media/midi_messages.h?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_renderer.gypi?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.h?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/DEPS?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.cc?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/media.gyp?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/ipc/ipc_message_start.h?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.h?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.cc?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_browser.gypi?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.h?r1=207989&r2=207988&pathrev=207989
   D http://src.chromium.org/viewvc/chrome/trunk/src/media/midi?r1=207989&r2=207988&pathrev=207989
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/browser_main_loop.cc?r1=207989&r2=207988&pathrev=207989

Revert 207983 "Implement Web MIDI API back-end"

> Implement Web MIDI API back-end
> 
> This involves browser-side support and IPC for sending and receiving
> MIDI messages.  Initially support for OSX is included.
> 
> BUG= 163795 
> R=palmer@chromium.org, piman@chromium.org, scherkus@chromium.org
> 
> Review URL: https://codereview.chromium.org/16025005

TBR=crogers@google.com

Review URL: https://codereview.chromium.org/17334006
------------------------------------------------------------------------
Project Member

Comment 58 by bugdroid1@chromium.org, Jun 22 2013

------------------------------------------------------------------------
r208003 | crogers@google.com | 2013-06-22T04:03:03.924678Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.cc?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/media.gyp?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.cc?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.h?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/ipc/ipc_message_start.h?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_browser.gypi?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.h?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/browser_main_loop.cc?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.cc?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/renderer_webkitplatformsupport_impl.cc?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.h?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/browser_main_loop.h?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_common.gypi?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/renderer_webkitplatformsupport_impl.h?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/content_message_generator.h?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.cc?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_process_host_impl.cc?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/common/media/midi_messages.h?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.h?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.cc?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_renderer.gypi?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.h?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.h?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_port_info.cc?r1=208003&r2=208002&pathrev=208003
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/DEPS?r1=208003&r2=208002&pathrev=208003
   A http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_port_info.h?r1=208003&r2=208002&pathrev=208003

Re-land 16025005 with tiny fix for statics perf issue

16025005 had review from: palmer@chromium.org, piman@chromium.org, scherkus@chromium.org

BUG= 163795 
TBR=scherkus@chromium.org

Review URL: https://codereview.chromium.org/17288018
------------------------------------------------------------------------

Comment 59 by a...@chromium.org, Jun 24 2013

I am getting build errors on my Mac:

../../media/midi/midi_manager_mac.cc:26:20: error: implicit conversion of NULL
constant to 'MIDIClientRef' (aka 'unsigned int') [-Werror,-Wnull-conversion]
    : midi_client_(NULL),
                  ~^~~~
                   0
../../media/midi/midi_manager_mac.cc:27:23: error: implicit conversion of NULL
constant to 'MIDIPortRef' (aka 'unsigned int') [-Werror,-Wnull-conversion]
      coremidi_input_(NULL),
                     ~^~~~
                      0
../../media/midi/midi_manager_mac.cc:28:24: error: implicit conversion of NULL
constant to 'MIDIPortRef' (aka 'unsigned int') [-Werror,-Wnull-conversion]
      coremidi_output_(NULL),
                      ~^~~~
                       0
../../media/midi/midi_manager_mac.cc:37:18: error: implicit conversion of NULL
constant to 'MIDIClientRef' (aka 'unsigned int') [-Werror,-Wnull-conversion]
  midi_client_ = NULL;
               ~ ^~~~
                 0
../../media/midi/midi_manager_mac.cc:47:21: error: implicit conversion of NULL
constant to 'MIDIPortRef' (aka 'unsigned int') [-Werror,-Wnull-conversion]
  coremidi_input_ = NULL;
                  ~ ^~~~
                    0
../../media/midi/midi_manager_mac.cc:86:5: error: no matching function for call
to 'MIDIPortConnectSource'
    MIDIPortConnectSource(coremidi_input_, src, src);
    ^~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode5-DP.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h:1289:1:
note: candidate function not viable: no known conversion from 'MIDIEndpointRef'
(aka 'unsigned int') to 'void *' for 3rd argument; take the address of the
argument with &
MIDIPortConnectSource(  MIDIPortRef             port, 
^
../../media/midi/midi_manager_mac.cc:113:28: error: static_cast from 'void *' to
'MIDIEndpointRef' (aka 'unsigned int') is not allowed
  MIDIEndpointRef source = static_cast<MIDIEndpointRef>(src_conn_refcon);
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Comment 60 by a...@chromium.org, Jun 24 2013

This appears to be a 64-bit build issue (which is also breaking our 64 bit continuous buildbot: http://build.chromium.org/p/chromium.fyi/builders/Chromium%20Mac%2010.8%20x64%20%28experimental%29/ )

The problem is in MIDIServices.h:

#if __LP64__
typedef UInt32 MIDIObjectRef;
#else
typedef void *							MIDIObjectRef;
#endif

Awesome, yes?

On chat, Chris suggested switching to 0, which would work in both cases.
Project Member

Comment 61 by bugdroid1@chromium.org, Jun 25 2013

------------------------------------------------------------------------
r208519 | avi@chromium.org | 2013-06-25T17:40:55.012382Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.cc?r1=208519&r2=208518&pathrev=208519

Fix MIDI code for 64 bit build.

BUG= 163795 
TEST=builds everywhere

Review URL: https://chromiumcodereview.appspot.com/17617004
------------------------------------------------------------------------
Project Member

Comment 62 by bugdroid1@chromium.org, Jun 27 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=153105

------------------------------------------------------------------------
r153105 | crogers@google.com | 2013-06-27T00:02:28.711933Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/request-midi-access-expected.txt?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIMessageEvent.h?r1=153105&r2=153104&pathrev=153105
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess-basic-expected.txt?r1=153105&r2=153104&pathrev=153105
   D http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/request-midi-access.html?r1=153105&r2=153104&pathrev=153105
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess-expected.txt?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessPromise.cpp?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=153105&r2=153104&pathrev=153105
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess-basic.html?r1=153105&r2=153104&pathrev=153105
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess.html?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.h?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessPromise.h?r1=153105&r2=153104&pathrev=153105
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.h?r1=153105&r2=153104&pathrev=153105

Fulfill or reject MIDIAccessPromise from MIDIAccessor

This asks the browser for permission to access MIDI hardware, including whether SYSEX
access is being requested. The browser will either block access, in which case the
promise's failure callback will be invoked, or the browser will add the available
input and output ports to the MIDIAccess object, and then invoke the success callback
with the MIDIAccess as an argument according to the Web MIDI spec.

BUG= 163795 
TEST=webmidi/requestmidiaccess.html (and tested manually with real MIDI devices)
R=toyoshim@chromium.org

Review URL: https://codereview.chromium.org/17619003
------------------------------------------------------------------------
Project Member

Comment 63 by bugdroid1@chromium.org, Jun 27 2013

------------------------------------------------------------------------
r208932 | toyoshim@chromium.org | 2013-06-27T15:48:31.603381Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/about_flags.cc?r1=208932&r2=208931&pathrev=208932
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?r1=208932&r2=208931&pathrev=208932

Web MIDI: chrome://flags to enable Web MIDI API

Add a chrome://flags entry to enable Web MIDI API experimentally.
This is in an early stage of development, and works only on Mac for now.

BUG= 163795 
TEST=none

Review URL: https://chromiumcodereview.appspot.com/18007003
------------------------------------------------------------------------
Project Member

Comment 64 by bugdroid1@chromium.org, Jun 28 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=153213

------------------------------------------------------------------------
r153213 | crogers@google.com | 2013-06-28T07:15:04.685013Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=153213&r2=153212&pathrev=153213

Dispatch separate MIDIMessageEvents for multiple messages in the received data buffer.

BUG= 163795 
TEST=none

Review URL: https://chromiumcodereview.appspot.com/18163002
------------------------------------------------------------------------
Blockedon: chromium:257251
Blockedon: -chromium:257251 chromium:257618
Project Member

Comment 68 by bugdroid1@chromium.org, Jul 8 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=153710

------------------------------------------------------------------------
r153710 | crogers@google.com | 2013-07-08T21:13:56.539876Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=153710&r2=153709&pathrev=153710
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.h?r1=153710&r2=153709&pathrev=153710

MIDI timestamps should be in the time coordinate system used by performance.now()

According to the Web MIDI spec, We need to convert from monotonicallyIncreasingTime()
to a DOMHighResTimeStamp in milliseconds.

BUG= 163795 
R=toyoshim@chromium.org

Review URL: https://codereview.chromium.org/18367003
------------------------------------------------------------------------
We now have (experimental) support for promises in trunk.  Would you be willing to remove the MIDIAccessPromise interface?

// FIXME: Once Promise is implemented, remove this interface and use it.
// See also,  http://crbug.com/243345 
[
    NoInterfaceObject,
    ActiveDOMObject
] interface MIDIAccessPromise {
    // Supports only then() method tentatively. But it never returns Promise.
    void then(MIDISuccessCallback successCallback, MIDIErrorCallback errorCallback);
};
Yes.
Now both Web MIDI and Promise are implemented behind a flag.
Currently --enable-web-midi flag set blink side webMIDI runtime flag.
So, I'll make it also enable Promise flag, and use it.
Project Member

Comment 71 by bugdroid1@chromium.org, Jul 11 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=153989

------------------------------------------------------------------------
r153989 | toyoshim@chromium.org | 2013-07-11T08:28:19.549622Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.h?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/public/web/WebMIDIPermissionRequest.h?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.cpp?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/public/web/WebViewClient.h?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessorClient.h?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.h?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessorClient.h?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessor.h?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIController.cpp?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIClient.h?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/public/web/WebMIDIClient.h?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/WebMIDIPermissionRequest.cpp?r1=153989&r2=153988&pathrev=153989
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/web.gypi?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientImpl.cpp?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIController.h?r1=153989&r2=153988&pathrev=153989
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientImpl.h?r1=153989&r2=153988&pathrev=153989

Web MIDI: introduce WebMIDIClient API to request a permission

Add WebMIDIClient API to request a permission for system exclusive messages.
Also make |access| obsolete in WebMIDIAccessor to delegate it to the Client API.

TEST=none
BUG= 163795 

Review URL: https://chromiumcodereview.appspot.com/18325007
------------------------------------------------------------------------
Project Member

Comment 72 by bugdroid1@chromium.org, Jul 12 2013

------------------------------------------------------------------------
r211437 | toyoshim@chromium.org | 2013-07-12T19:18:59.137935Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/profiles/off_the_record_profile_impl.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/test_browser_context.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/shell/shell_browser_context.cc?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/shell/shell_browser_context.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/base/testing_profile.cc?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/profiles/profile_impl.cc?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/browser/browser_context.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/base/testing_profile.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/download/download_manager_impl_unittest.cc?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/profiles/profile_impl.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/android_webview/browser/aw_browser_context.cc?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/android_webview/browser/aw_browser_context.h?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/profiles/off_the_record_profile_impl.cc?r1=211437&r2=211436&pathrev=211437
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/test/test_browser_context.cc?r1=211437&r2=211436&pathrev=211437

Web MIDI: add RequestMIDISysExPermission to BrowserContext

Add RequestMIDISysExPermission to handle Web MIDI API permissions for
system exclusive messages in content embedder.

BUG= 163795 ,  257618 
TEST=none
TBR=benm@chromium.org

Review URL: https://chromiumcodereview.appspot.com/18647002
------------------------------------------------------------------------
Project Member

Comment 73 by bugdroid1@chromium.org, Jul 14 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=154188

------------------------------------------------------------------------
r154188 | toyoshim@chromium.org | 2013-07-14T10:05:07.805115Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebPluginContainerImpl.cpp?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebMIDIPermissionRequest.cpp?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebSpeechRecognitionHandle.cpp?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebNode.cpp?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/public/web/WebMIDIPermissionRequest.h?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebImageDecoder.cpp?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebFrameImpl.cpp?r1=154188&r2=154187&pathrev=154188
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebAccessibilityObject.cpp?r1=154188&r2=154187&pathrev=154188

Web MIDI: add assign() and equals() to WebMIDIPermissionRequest

Since WebMIDIPermissionRequeset should be managed by embedder
until the permission decision is made, export assign() and
equals() methods. It makes it possible to handle them in a
container.

TEST=none
BUG= 163795 

Review URL: https://chromiumcodereview.appspot.com/18563008
------------------------------------------------------------------------
Blockedon: chromium:260315
Project Member

Comment 75 by bugdroid1@chromium.org, Jul 23 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=154697

------------------------------------------------------------------------
r154697 | crogers@google.com | 2013-07-23T00:07:26.409979Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess.html?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebMIDIPermissionRequest.cpp?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientImpl.cpp?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.h?r1=154697&r2=154696&pathrev=154697
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=154697&r2=154696&pathrev=154697

Implement MIDIOutput.send()

This fully implements the Web MIDI API sending of MIDI data in Blink, but further work is still
needed in the chromium back-end.

BUG= 163795 
TEST=requestmidiaccess.html updated to test send() method
R=abarth@chromium.org, toyoshim@chromium.org

Review URL: https://codereview.chromium.org/18858006
------------------------------------------------------------------------
Project Member

Comment 76 by bugdroid1@chromium.org, Jul 23 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=154703

------------------------------------------------------------------------
r154703 | crogers@google.com | 2013-07-23T01:12:12.142412Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess.html?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebMIDIPermissionRequest.cpp?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientImpl.cpp?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.h?r1=154703&r2=154702&pathrev=154703
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=154703&r2=154702&pathrev=154703

Revert 154697 "Implement MIDIOutput.send()"

> Implement MIDIOutput.send()
> 
> This fully implements the Web MIDI API sending of MIDI data in Blink, but further work is still
> needed in the chromium back-end.
> 
> BUG= 163795 
> TEST=requestmidiaccess.html updated to test send() method
> R=abarth@chromium.org, toyoshim@chromium.org
> 
> Review URL: https://codereview.chromium.org/18858006

TBR=crogers@google.com

Review URL: https://codereview.chromium.org/19542006
------------------------------------------------------------------------
Project Member

Comment 77 by bugdroid1@chromium.org, Jul 23 2013

------------------------------------------------------------------------
r213077 | toyoshim@chromium.org | 2013-07-23T11:46:52.939483Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/profiles/off_the_record_profile_impl.cc?r1=213077&r2=213076&pathrev=213077
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/shell/shell_browser_context.cc?r1=213077&r2=213076&pathrev=213077
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/profiles/profile_impl.cc?r1=213077&r2=213076&pathrev=213077

Web MIDI: add kDumpRenderTree flag check to ShellBrowserContext::RequestMIDI...

content_shell should work with full features if it runs without the
kDumpRenderTree flag.

BUG= 163795 ,  257618 
TBR=jam@chromium.org
NOTRY=true

Review URL: https://chromiumcodereview.appspot.com/19980004
------------------------------------------------------------------------
Project Member

Comment 78 by bugdroid1@chromium.org, Jul 24 2013

Project Member

Comment 79 by bugdroid1@chromium.org, Jul 25 2013

------------------------------------------------------------------------
r213644 | toyoshim@chromium.org | 2013-07-25T16:23:14.098890Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.h?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.h?r1=213644&r2=213643&pathrev=213644
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_dispatcher.cc?r1=213644&r2=213643&pathrev=213644
   A http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_dispatcher.h?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.cc?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.cc?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_view_impl.cc?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/renderer_webmidiaccessor_impl.h?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/media/midi_messages.h?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.h?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_view_impl.h?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/content_renderer.gypi?r1=213644&r2=213643&pathrev=213644
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.cc?r1=213644&r2=213643&pathrev=213644

Web MIDI: implement WebMIDIClient to handle permissions

Implement WebMIDIClient to handle permissions and remove dependencies on
old platform APIs. This transition is needed to remove old interfaces from
platform APIs.

BUG= 163795 

Review URL: https://chromiumcodereview.appspot.com/18611005
------------------------------------------------------------------------
Project Member

Comment 81 by bugdroid1@chromium.org, Jul 31 2013

------------------------------------------------------------------------
r214570 | crogers@google.com | 2013-07-31T05:16:49.235113Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.h?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.cc?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/media/midi_messages.h?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/media/midi_message_filter.h?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.cc?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.cc?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager.h?r1=214570&r2=214569&pathrev=214570
   M http://src.chromium.org/viewvc/chrome/trunk/src/media/midi/midi_manager_mac.h?r1=214570&r2=214569&pathrev=214570

Support sending MIDI data with throttling

The Web MIDI API allows sending of MIDI data, but we need to take
care to not send too much data from the renderer to the browser.
We implement a throttling mechanism where the browser process
acknowledges the number of sent bytes back to the renderer,
and the renderer only sends new data if it hasn't already sent
too much unacknowledged data.

BUG= 163795 
TEST=none

Review URL: https://chromiumcodereview.appspot.com/19612004
------------------------------------------------------------------------
Virtual MIDI ports can be created, for example in Mac OS X through the sound and MIDI setup application in which it is called "IAC Driver". However, this virtual interface does not show up in the list of MIDI outputs from the Web MIDI API in the latest Canary. Are virtual interfaces/ports not yet implemented? If not, will they be?
Bah, nevermind, it turned out I had to restart Chrome after activating the IAC driver. It now shows up in the outputs list.
Blockedon: chromium:266743
Project Member

Comment 85 by bugdroid1@chromium.org, Aug 15 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=156143

------------------------------------------------------------------------
r156143 | toyoshim@chromium.org | 2013-08-15T06:30:48.352442Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/permission-expected.txt?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/testing/runner/TestRunner.h?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/mock/MIDIClientMock.h?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/testing/runner/WebTestProxy.cpp?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientProxy.h?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/core.gypi?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/WebMIDIClientMock.cpp?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.cpp?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebViewImpl.h?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/public/testing/WebTestProxy.h?r1=156143&r2=156142&pathrev=156143
   D http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientImpl.cpp?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/web.gypi?r1=156143&r2=156142&pathrev=156143
   D http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientImpl.h?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/mock/GeolocationClientMock.h?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/public/web/WebMIDIClientMock.h?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess-expected.txt?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/permission.html?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/Source/testing/runner/TestRunner.cpp?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/Source/web/MIDIClientProxy.cpp?r1=156143&r2=156142&pathrev=156143
   A http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/mock/MIDIClientMock.cpp?r1=156143&r2=156142&pathrev=156143
   M http://src.chromium.org/viewvc/blink/trunk/public/web/WebMIDIPermissionRequest.h?r1=156143&r2=156142&pathrev=156143

Web MIDI: implement WebMIDIClientMock to emulate permission handling for testing

BUG= 163795 
TEST=LayoutTests/webmidi/permission.html

Review URL: https://chromiumcodereview.appspot.com/22430012
------------------------------------------------------------------------
Blockedon: chromium:273123
Blockedon: chromium:263292
Cc: -crogers@google.com crogers@chromium.org
Project Member

Comment 89 by bugdroid1@chromium.org, Aug 20 2013

------------------------------------------------------------------------
r218458 | toyoshim@chromium.org | 2013-08-20T12:09:03.408362Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=218458&r2=218457&pathrev=218458

Web MIDI: enable midi_host.cc implementation on Android

BUG= 163795 
TEST=none

Review URL: https://chromiumcodereview.appspot.com/23039015
------------------------------------------------------------------------
Blockedon: chromium:276810
Blockedon: chromium:276873
Those of you who happen to be in charge of implementing this might want to check out  Issue 277219  as well, since only implementing this on one OS (so far) is a disgrace...
Cc: mgiuca@chromium.org
 Issue 277219  has been merged into this issue.
@Kenny: It is not a "disgrace"; it's a work in progress. The implementation of this API will be entirely different on each OS, so "only implementing this on one OS (so far)" is the only possible way to begin.
The feature is under implementation.
99% of implementation are shared on the all platforms. Actually, you can use Web MIDI API with --enable-web-midi flag on all platforms. UI and JavaScript APIs will work fine. But currently device handling is implemented only on Mac. This is the reason why only mac has a flag in chrome://flags. Working on all platforms simultaneously make development slow down. I'll focus on other platforms once I finish the implementation for Mac.
Blockedon: chromium:277383
Blockedon: chromium:279097
Cc: kouhei@chromium.org
+kouhei
Blockedon: chromium:282079
Project Member

Comment 100 by bugdroid1@chromium.org, Sep 6 2013

------------------------------------------------------------------------
r221662 | toyoshim@chromium.org | 2013-09-06T09:14:19.656032Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/media/midi_host.cc?r1=221662&r2=221661&pathrev=221662

Web MIDI: implement right sysex handling for received messages.

I missed to apply ChildProcessSecurityPolicy to receive side. Blink
needs additional sysex filter per MIDIAccess object.

BUG= 163795 
TEST=none

Review URL: https://chromiumcodereview.appspot.com/23983004
------------------------------------------------------------------------
Project Member

Comment 101 by bugdroid1@chromium.org, Sep 10 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=157517

------------------------------------------------------------------------
r157517 | toyoshim@chromium.org | 2013-09-10T11:53:22.196467Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/bindings.gypi?r1=157517&r2=157516&pathrev=157517
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/custom/V8MIDIOutputCustom.cpp?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.idl?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=157517&r2=157516&pathrev=157517
   A http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/custom/V8MIDIInputCustom.cpp?r1=157517&r2=157516&pathrev=157517
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.h?r1=157517&r2=157516&pathrev=157517

Web MIDI: MIDIInput/MIDIOutput should not have reference to MIDIAccess

Currently, MIDIOutput has a reference to MIDIAccess introducing a cyclic
reference between them. To avoid this issue, this change adopts a simple idea
to have a raw pointer to MIDIAccess from MIDIOutput and MIDIInput, and
internally has a reference to MIDIAccess in the v8 bindings.
This internal reference make MIDIAccess alive while MIDIOutput and MIDIInput
live. So, MIDIOutput and MIDIInput can assume the raw pointer is always
valid. Also the reference can be GCed in the v8 world.

BUG= 163795 
TEST=LayoutTests/webmidi

Review URL: https://chromiumcodereview.appspot.com/24070002
------------------------------------------------------------------------
Project Member

Comment 102 by bugdroid1@chromium.org, Sep 12 2013

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=157664

------------------------------------------------------------------------
r157664 | toyoshim@chromium.org | 2013-09-12T08:11:03.362952Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=157664&r2=157663&pathrev=157664

Web MIDI: tentative sysex check for receiving messages

Strict MIDI sequence checker should be introduced and shared between
sender side and receiver side. But, tentatively enable it with minimum
change in receiver side to confirm a browser side change works.

BUG= 163795 
TEST=LayoutTests/webmidi

Review URL: https://chromiumcodereview.appspot.com/23648006
------------------------------------------------------------------------
Cc: stip@chromium.org
Cc: -xusydoc@chromium.org
Blockedon: chromium:303596
Blockedon: chromium:303599 chromium:303601
Blockedon: chromium:317355
Blockedon: chromium:325810
I confirmed in yesterday's Canary build of Chrome OS { browser: "34.0.1771.1", platform: "5203.0.0 (Official Build) canary-channel peppy" } that the Web MIDI flag is indeed finally available and usable, and yes, after today's update, it still is.

So, it's only a matter of time before we see it creep down to some of the more stable builds... Just to quell the cries of angry commenters here.
#109
As a first experiment, Chrome OS supports only output ports for now. But I'm planning to implement input ports, and refine port information in M34.
Labels: -Cr-Internals-Media -Cr-Blink Cr-Blink-WebMIDI
Now we get a Cr-Blink-WebMIDI label to specify WebMIDI related bugs.
Project Member

Comment 112 by bugdroid1@chromium.org, Feb 14 2014

The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=167183

------------------------------------------------------------------------
r167183 | toyoshim@chromium.org | 2014-02-14T12:09:29.187833Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.h?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.cpp?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.idl?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.h?r1=167183&r2=167182&pathrev=167183
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.idl?r1=167183&r2=167182&pathrev=167183

Web MIDI: MIDIPort doesn't have to be ActiveDOMObject

MIDIAccess is the only class which should be ActiveDOMObject.
MIDIPort, MIDIInput, and MIDIOutput does't have to be.

BUG= 163795 

Review URL: https://codereview.chromium.org/23609033
------------------------------------------------------------------------

Comment 113 by Deleted ...@, Mar 11 2014

New chromebook user, also using crouton with debain wheezy.  I was wondering what is the most current status on this for chromebook users.  I want to be able to use usb midi controllers with my chromebook and particularly in the crouton instance but without driver support on the chrome side the chroot cannot possibly use it leaving dual booting through something like chrubuntu the only option.

I understand this is kind of a niche market segment and not a priority or simple item.  But it really is kind of a make or break on me keeping the chromebook right now (maybe, I mean I do love this device).  I am just hesitant to go the dual booting route at this point so I would love to see this come together.  Is there anything I can do to support the effort?

Thank you for your time in this matter.

Ken M.
See  issue 303601 . It's on Canary and Dev channels.
Note you need to turn the flag on:  chrome://flags/#enable-web-midi.

Comment 116 by Deleted ...@, Mar 12 2014

OK cool.  But on a side note after enough config I was able to handle USB midi in a crouton session.  I started thinking that even if chrome doesn't recognize the midi aspect it still should just be passing raw data on to crouton from the port so maybe I forgot a step in my crouton setup.  That being said I never tested it with jack and a2j running.  So native alsa support may have been the problem.  Perhaps how it is seeing /dev/sequencer.  I don't know.  But after some config fiddling I got it working with very low latency against zynaddsubfx.  VERY COOL!  Can't wait to see this available for things like audiotool direct in chrome.
Where can I lookup this issue? 303601. Doesn't seem its in buganizer.
@debic:  http://crbug.com/303601  (this is a public bug tracker).
I'm able to obtain midiAccess objects in Cr on OS X but only IAC devices are listed.  Is there a way to access other devices, e.g. the Turtle Beach USB adapter connected to my midi keyboard?  More details in the question I posted on Stack Overflow.

http://stackoverflow.com/questions/23200972/how-to-discover-midi-keyboard-in-web-midi-api

Thanks!

Comment 120 Deleted

Hi. My input listeners, past the first listener, are being dropped after 20 - 30 seconds. Is this a known issue?

I'm binding to an input multiple times with:

input.addEventListener('midimessage', sendFn);

But I get the same effect using:

input.onmidimessage = sendFn;

To begin with, sendFn gets called multiple times for avery MIDI event, but after 20 seconds or so it is only called once. It's the first binding of sendFn that is kept alive, the others are dropped.

Mac OS X 10.9.2, Chrome Canary 36.0.1971.0
Blockedon: chromium:341423
#119
Sorry, I missed the question.
You may already resolve the problem by Q&A at stackoverflow. Currently the device list is a kind of snapshot at the time of the first requestMIDIAccess call. Our implementation plan is;

1. Implement backend MIDI manager for all platforms
2. Update inputs and outputs API to use MIDIInputMap and MIDIOutoutMap. it may be incremental since the spec partially depends on ECMA Script 6. ( Issue 341423 )
3. Introduce MIDIConnectionEvent and make inputs and outputs being up to date always ( Issue 279097 )

Now, 1 is almost finished including Android, and 2 is started.
#121
I guess you didn't retain the MIDIInput object reference. You need to retain it not to be destructed by GC.
Blockedon: chromium:339767
Permission UI (infobar and settings) were implemented in Android Chrome for M37.
Blockedon: chromium:432683
Labels: -Review-Privacy Cr-Privacy
Labels: -Type-Feature Type-Launch-OWP OWP-Design-Yes OWP-Standards-OfficialSpec OWP-Type-NewAPI
Labels: -Pri-2 Pri-1 M-43
Let's try to target M43.
Blockedon: chromium:431489
Blockedon: chromium:460898
Blockedon: chromium:460901
Blockedon: -chromium:266743 -chromium:325810 -chromium:460901
remove cleanup bugs that are not related to launch.
Blockedon: -chromium:339767
Blockedon: chromium:466721
Project Member

Comment 135 by bugdroid1@chromium.org, Mar 18 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bc35ecacfd02588626494b278d1b18f37e1b38ac

commit bc35ecacfd02588626494b278d1b18f37e1b38ac
Author: toyoshim <toyoshim@chromium.org>
Date: Wed Mar 18 17:08:50 2015

Web MIDI: make Chrome a music platform

Now that intent to ship is LGTMed, I'd enable Web MIDI API by default.

BUG= 163795 

Review URL: https://codereview.chromium.org/1011833002

Cr-Commit-Position: refs/heads/master@{#321152}

[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/chrome/browser/about_flags.cc
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/chrome/browser/resources/options/content_settings.html
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/chrome/browser/resources/options/content_settings.js
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/chrome/browser/ui/website_settings/website_settings.cc
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/chrome/browser/ui/webui/options/content_settings_handler.cc
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/content/browser/renderer_host/render_process_host_impl.cc
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/content/child/runtime_features.cc
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/content/public/common/content_switches.cc
[modify] http://crrev.com/bc35ecacfd02588626494b278d1b18f37e1b38ac/content/public/common/content_switches.h

Project Member

Comment 136 by bugdroid1@chromium.org, Mar 20 2015

The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=192078

------------------------------------------------------------------
r192078 | toyoshim@chromium.org | 2015-03-18T11:00:20.583127Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/RuntimeEnabledFeatures.in?r1=192078&r2=192077&pathrev=192078
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=192078&r2=192077&pathrev=192078

Web MIDI: make blink a music platform

Now that intent to ship is LGTMed, I'd enable Web MIDI API by default.

BUG= 163795 

Review URL: https://codereview.chromium.org/1010773003
-----------------------------------------------------------------
Blockedon: chromium:470170
Blockedon: -chromium:432683
Remove 432683 from the blocking bug list since Web MIDI related Maplike implementation was finished.

Comment 139 Deleted

Project Member

Comment 140 by bugdroid1@chromium.org, Mar 31 2015

The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=192802

------------------------------------------------------------------
r192802 | toyoshim@chromium.org | 2015-03-31T05:22:29.814634Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.cpp?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessInitializer.cpp?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/open_close-expected.txt?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.h?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessInitializer.h?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.idl?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/open_close.html?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=192802&r2=192801&pathrev=192802
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=192802&r2=192801&pathrev=192802

Web MIDI: final IDL updates to conform the latest WD for shipping

The latest WD that the shipping Web MIDI should follow was published.
This patch updates IDLs to follow the latest WD.

Note: this does not change users and developers facing APIs that are
already visible in stable and beta channels by default.

See http://www.w3.org/TR/2015/WD-webmidi-20150317/

BUG= 163795 

Review URL: https://codereview.chromium.org/1043863002
-----------------------------------------------------------------
Status updates:
We may miss hotplug feature on Chrome OS, but others will be ready for m43.
Blockedon: -chromium:431489
remove CrOS hotplug from the blocking list.
Status: Fixed
Now it's ready for M-43 launch.
Showing comments 44 - 143 of 143 Older

Sign in to add a comment