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: ----


Sign in to add a comment
link

Issue 163795: 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

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

Project Member

Comment 47 Deleted

Comment 49 by toyoshim@chromium.org, Jun 3 2013

Blockedon: chromium:243345

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

Project Member
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

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

Project Member

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
------------------------------------------------------------------------
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.

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

Comment 66 by toyoshim@chromium.org, Jul 4 2013

Blockedon: chromium:257251

Comment 67 by toyoshim@chromium.org, Jul 5 2013

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

Project Member
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
------------------------------------------------------------------------

Comment 69 by abarth@chromium.org, Jul 9 2013

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);
};

Comment 70 by toyoshim@chromium.org, Jul 10 2013

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.

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

Project Member
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
------------------------------------------------------------------------

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

Comment 74 by toyoshim@chromium.org, Jul 15 2013

Blockedon: chromium:260315

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

Project Member
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

Comment 82 by markus.m...@gmail.com, Jul 31 2013

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?

Comment 83 by markus.m...@gmail.com, Jul 31 2013

Bah, nevermind, it turned out I had to restart Chrome after activating the IAC driver. It now shows up in the outputs list.

Comment 84 by toyoshim@chromium.org, Aug 1 2013

Blockedon: chromium:266743

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

Project Member
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
------------------------------------------------------------------------

Comment 86 by toyoshim@chromium.org, Aug 19 2013

Blockedon: chromium:273123

Comment 87 by toyoshim@chromium.org, Aug 19 2013

Blockedon: chromium:263292

Comment 88 by toyoshim@chromium.org, Aug 19 2013

Cc: -crogers@google.com crogers@chromium.org

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

Comment 90 by toyoshim@chromium.org, Aug 21 2013

Blockedon: chromium:276810

Comment 91 by toyoshim@chromium.org, Aug 21 2013

Blockedon: chromium:276873

Comment 92 by kenny.st...@gmail.com, Aug 22 2013

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...

Comment 93 by mgiuca@chromium.org, Aug 22 2013

Cc: mgiuca@chromium.org
 Issue 277219  has been merged into this issue.

Comment 94 by mgiuca@chromium.org, Aug 22 2013

@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.

Comment 95 by toyoshim@chromium.org, Aug 22 2013

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.

Comment 96 by toyoshim@chromium.org, Aug 22 2013

Blockedon: chromium:277383

Comment 97 by toyoshim@chromium.org, Aug 26 2013

Blockedon: chromium:279097

Comment 98 by toyoshim@chromium.org, Sep 2 2013

Cc: kouhei@chromium.org
+kouhei

Comment 99 by toyoshim@chromium.org, Sep 3 2013

Blockedon: chromium:282079

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

Project Member
------------------------------------------------------------------------
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

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

Project Member
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
------------------------------------------------------------------------

Comment 103 by stip@chromium.org, Oct 2 2013

Cc: stip@chromium.org

Comment 104 by stip@chromium.org, Oct 2 2013

Cc: -xusydoc@chromium.org

Comment 105 by toyoshim@chromium.org, Oct 3 2013

Blockedon: chromium:303596

Comment 106 by toyoshim@chromium.org, Oct 3 2013

Comment 107 by yukawa@chromium.org, Nov 10 2013

Blockedon: chromium:317355

Comment 108 by yukawa@chromium.org, Dec 5 2013

Blockedon: chromium:325810

Comment 109 by kenny.st...@gmail.com, Jan 8 2014

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.

Comment 110 by toyoshim@chromium.org, Jan 9 2014

#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.

Comment 111 by toyoshim@chromium.org, Jan 31 2014

Labels: -Cr-Internals-Media -Cr-Blink Cr-Blink-WebMIDI
Now we get a Cr-Blink-WebMIDI label to specify WebMIDI related bugs.

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

Project Member
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.

Comment 114 by toyoshim@chromium.org, Mar 11 2014

See  issue 303601 . It's on Canary and Dev channels.

Comment 115 by cwilso@chromium.org, Mar 11 2014

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.

Comment 117 by chiefhis...@gmail.com, Mar 12 2014

Where can I lookup this issue? 303601. Doesn't seem its in buganizer.

Comment 118 by mgiuca@chromium.org, Mar 12 2014

@debic:  http://crbug.com/303601  (this is a public bug tracker).

Comment 119 by michael....@gmail.com, Apr 21 2014

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

Comment 121 by stephb...@cruncher.ch, May 2 2014

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

Comment 122 by toyoshim@chromium.org, May 4 2014

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.

Comment 123 by toyoshim@chromium.org, May 4 2014

#121
I guess you didn't retain the MIDIInput object reference. You need to retain it not to be destructed by GC.

Comment 124 by toyoshim@chromium.org, Jun 17 2014

Blockedon: chromium:339767
Permission UI (infobar and settings) were implemented in Android Chrome for M37.

Comment 125 by toyoshim@chromium.org, Nov 26 2014

Blockedon: chromium:432683

Comment 126 by kaichou@chromium.org, Dec 17 2014

Labels: -Review-Privacy Cr-Privacy

Comment 127 by kenjibaheux@chromium.org, Jan 27 2015

Labels: -Type-Feature Type-Launch-OWP OWP-Design-Yes OWP-Standards-OfficialSpec OWP-Type-NewAPI

Comment 128 by kenjibaheux@chromium.org, Feb 23 2015

Labels: -Pri-2 Pri-1 M-43
Let's try to target M43.

Comment 129 by toyoshim@chromium.org, Feb 23 2015

Blockedon: chromium:431489

Comment 130 by toyoshim@chromium.org, Feb 23 2015

Blockedon: chromium:460898

Comment 131 by toyoshim@chromium.org, Feb 23 2015

Blockedon: chromium:460901

Comment 132 by toyoshim@chromium.org, Feb 23 2015

remove cleanup bugs that are not related to launch.

Comment 133 by toyoshim@chromium.org, Feb 23 2015

Blockedon: -chromium:339767

Comment 134 by agoode@chromium.org, Mar 12 2015

Blockedon: chromium:466721

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

Project Member
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

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

Project Member
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
-----------------------------------------------------------------

Comment 137 by toyoshim@chromium.org, Mar 24 2015

Blockedon: chromium:470170

Comment 138 by toyoshim@chromium.org, Mar 30 2015

Blockedon: -chromium:432683
Remove 432683 from the blocking bug list since Web MIDI related Maplike implementation was finished.

Comment 139 Deleted

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

Project Member
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
-----------------------------------------------------------------

Comment 141 by toyoshim@chromium.org, Apr 2 2015

Status updates:
We may miss hotplug feature on Chrome OS, but others will be ready for m43.

Comment 142 by toyoshim@chromium.org, Apr 3 2015

Blockedon: -chromium:431489
remove CrOS hotplug from the blocking list.

Comment 143 by toyoshim@chromium.org, Apr 3 2015

Status: Fixed
Now it's ready for M-43 launch.
Showing comments 44 - 143 of 143 Older

Sign in to add a comment