Project: chromium Issues People Development process History Sign in
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.
Status: Fixed
Owner:
Closed: Apr 2015
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Launch-OWP
Launch-Accessibility: ----
Launch-Legal: ----
Launch-M-Approved: ----
Launch-M-Target: ----
Launch-Privacy: ----
Launch-Security: ----
Launch-Status: ----
Launch-Test: ----
Launch-UI: ----
Product-Review: ----


Sign in to add a comment
Implement Web MIDI API
Reported by ron...@gmail.com, Dec 2 2012 Back to list
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
 
Comment 1 by tkent@chromium.org, Dec 2 2012
Cc: tkent@chromium.org toyoshim@chromium.org agektmr@chromium.org
Labels: -Type-Bug -OS-Mac Type-Feature OS-All Area-WebKit
Status: Untriaged
Cc: cwilso@google.com
+cwilso

Chris Wilson may know a plan to implement Web MIDI API in WebKit.

ronyeh:
Chris also develops a Web MIDI API Polyfill.
https://github.com/cwilso/WebMIDIAPIShim
It's available now for testing your applications.
Comment 3 by cwilso@google.com, Dec 7 2012
+xusydoc

Labels: Feature-Media
Cc: xusydoc@chromium.org crogers@google.com
Labels: WEBKIT-ID-107250
Owner: toyoshim@chromium.org
Status: Assigned
I own this bug, and start to add WebKit support.
Project Member Comment 6 by bugdroid1@chromium.org, Jan 18 2013
Labels: -WEBKIT-ID-107250 WebKit-ID-107250-ASSIGNED
https://bugs.webkit.org/show_bug.cgi?id=107250
Comment 7 by cwilso@google.com, Jan 23 2013
Labels: Review-Privacy Review-Security
Comment 8 by cwilso@google.com, Jan 31 2013
Note the official spot for the editor's draft of the spec has moved to http://webaudio.github.com/web-midi-api/.
Comment 9 by abarth@chromium.org, Feb 14 2013
Cc: abarth@chromium.org
Comment 10 by idanb...@gmail.com, Feb 27 2013
I just wanted to vocalize official support regarding getting this implemented in Chrome as soon as is possible.  The ability to add MIDI capability to web applications would open up massive new avenues for online music creation, collaboration, entertainment and education. 

I think that this is an extremely important feature and we've already started to build support for our hardware in web midi through the use of the poly-fill / Jazz Soft midi plug in.  The ability to build/deploy music related applications along with the coupling of Web MIDI is extremely exciting. 

If needed we would be willing to provide support however possible and within our means!

Thanks,
Idan
I'd definitely agree that this API should be implemented in a not too distant future. While it's great that Web Audio is coming along, having this API in parallell would make a world of difference in terms of professional audio on the web. 

Having gone the long route implementing a musical "keyboard" on the computer keyboard, I can honestly say I wish this was around when we made Jam With Chrome, and I'd love to use it in a lot of coming projects too.
This API is really important, as MIDI is the universal standard for real-time I/O controllers of many kinds (not just music performance; also lighting, mixing, and much more). Supporting MIDI is also the obvious complement to Web Audio API support, allowing the browser to support a full spectrum of applications with real-time musical input from the user.
This is a really important project. As a professional musician and computer music research, I can't wait to have browsers that understand MIDI.
In conjunction with Web Audio API, this could truly transform the web browser into a music production platform. Moreover, having all the benefits of using various MIDI controller opens up other possibilities of different types of user interaction on the web as well!
Comment 15 by peb...@gmail.com, Mar 3 2013
As the software lead at a MIDI controller manufacturer, we have already charted out new ways of reaching customers and customers reaching each other that uses MIDI in the browser. The potential is overwhelming! There is also a great cultural benefit in preserving and distributing non-fixed media artworks, such as algorithmic composition, many (if not most) of which are composed with MIDI. 
There is no reason that the only device that can control a browser is a keyboard, and there are millions of devices out there that speak MIDI. Beyond music applications, the industrial applications for show control would explode. 
Every major OS has seen fit to include MIDI natively - as the browser becomes the default "operating system" for screens around the world, this established and important hardware interface needs to be part of this growth.

Thank you for many positive comments on Web MIDI. This is very helpful to know how Web MIDI is important.

We need proper discussion for introducing new API into web platform and I'm making effort to make good progress. As you know, Chris also has made awesome contribution to W3C.

I'm happy to hear your opinions and expectations here.
@toyoshim: I wouldn't read too heavily in to all these comments. They seem like a statistical anomaly, which suggests that someone has solicited positive comments, perhaps on some online forum popular with MIDI enthusiasts. There's nothing wrong with that, of course, but careful thought is warranted regarding whether this is best suited as a web platform API or perhaps a specialized apps / system API.
@scarybeasts & @toyoshim: We're a select few who's been personally invited to the discussion to help give you a picture of the kind of use cases and the need for the API in the audio community. 

Personally I have been bugging Chris for a while now unaware that this discussion was even occurring. I would, on the contrary, suggest that the increase in involvement in this question should be taken as a hint that there is a big want/need for this API, but many people don't even know that it's up for discussion. 

What you have seen here is a sample of voices throughout the audio community, including research, hardware manufacturers, composers/musicians and in my case audio developers.

Having said that, I understand that we won't get what we want just because we ask for it and that you have to handle the resources available to you, and nor do I mean to turn up the heat in the discussion. I just ask that you don't discount our voices because we raised them at the same time.
Comment 19 by cwilso@google.com, Mar 4 2013
@scarybeasts: in fact, some (not all) of the comments on here were prompted by me privately asking a half-dozen or so music industry people to weigh in on MIDI support, as there seemed to be a lack of understanding of MIDI in the industry today in the web platform world, and I wanted to connect people who would actually use it to this issue.  This feature has the potential to enable an industry on the web platform.  That's not generally well-understood.

I did not, on purpose, carpetbomb this issue by posting to a MIDI forum (or any open forum).  That would garner a lot more votes, and a lot lower quality of feedback.
I wanted to cast my vote of support for getting the MIDI API implemented. Although many seem to not understand the importance of MIDI and it's status as a long-standing standard for real-time I/O control, I personally cannot imagine us achieving the dream of the "browser being the platform" without both low-level audio AND MIDI support. If every OS on the market found the need to add MIDI functionality to their product, so should browser developers. From lighting and show control, to music education, to gaming, to controlling industrial machinery, MIDI has seemingly limitless applications. If you ponder MIDI’s potential in the home automation market alone, it is mind-boggling. 

Having said that, I will now tell you that I work for one of the biggest audio manufacturers in the world. Obviously, MIDI plays a huge part in most things we do...but that is probably not enough to have the API put in a browser. It should be in the browser because of the potential for developers to make applications that reach out of the browser and interact with the "real" world. Again, the applications are almost limitless.

My company is a month away from shipping the follow-up to one of our biggest selling products in our history, with expected initial sales to be thousands and thousands of units a month. This products will ship with a PC/Mac desktop Editor/Librarian app. We have spent a considerable amount of time and resources developing this app. Before the product even ships, we are already beginning the process of porting the app over to the browser, utilizing the poly-fill/Jazz Soft midi plug in. If history repeats itself, that would be potentially 500,000 users of the web app. Strong stuff.    

In closing, I am not excited about this because of who I work for. I am excited about this because I spent 15 years as a web application developer and I am passionate about the potential of the platform. 

Scott Mire
Peavey Electronics
Project Member Comment 21 by bugdroid1@chromium.org, Mar 10 2013
Labels: -Area-WebKit -Feature-Media Cr-Content Cr-Internals-Media
Please merge https://code.google.com/p/chromium/issues/detail?id=91253 with this one.
Issue 91253 has been merged into this issue.
Comment 24 by p...@echonest.com, Mar 31 2013
Please add suppor for MIDI in the browser.
Just wanted to add my support for implementing the Web MIDI API, as well as some thoughts on how I'd use it...

I recently created a synth using the Web Audio API - http://stuartmemo.com/synth/ - and while it works fairly well using a qwerty keyboard, most performing musicians won't use it as they can't control it with a physical musical keyboard, especially when things like touch sensitivity aren't available on a laptop keyboard!

Performance aside, I would like the musical instruments I create to be easily integrated into a recording set-up, allowing a musician to sequence a web synth or drum machine as easily as he or she would any other MIDI-enabled device.
Comment 26 by jkr@google.com, Apr 2 2013
I am adding my support for implementing the Web MIDI API in Chrome.  The Creative Lab Works on branding initiatives such as Jam With Chrome and This Exquisite Forest which benefit from having the ability to integrate music generation tools.  Imagine what we could do next with a more powerful tool!
I'd really like to see Midi input & output added. The ability to use existing hardware controllers would open some very exciting possibilities, as would the ability to drive audio software and hardware. I built a Midi bridge for Flash and have been searching for a way to do similar projects in javascript.
I'm just an amateur MIDI user but I dream of the day I could plug my USB-->MIDI--> Keyboard converter into my Chromebook and be able to use web apps to interact with it. I would seriously love MIDI support and it would finish my conversion to ChromeOS for everything besides gaming.
I want MIDI to become a popular protocol more and I believe that MIDI have power to help making innovation of the web.
So, I am definitely adding my support for implementing the Web MIDI API.

One of the meaning of implementing Web MIDI API into browser is that browser will get various kinds of physical interfaces. MIDI-output-enabled devices(controller) is not only Piano Keybords but also DJ Controllers, Drum Pads, Electric Light Controllers, Stage Controllers. The other meaning is that browser will become MIDI-output-enabled devices which can control synthesizers, music work station, Light, Stage and so on. It is not only for local use. Since Web MIDI API will be in browser, these control  also is able to use over the network.

Because MIDI spec is simple enough and is well defined, so I believe that Web MIDI API have possibility of creating another value of MIDI and also would help making innovation of the web.

I also write some note on this URL.
http://db.tt/B4QnFh4C

Ryoya Kawai
Yamaha Corporation
Labels: -Review-Security
Thanks all! Removing Review-Security for now.
Project Member Comment 31 by bugdroid1@chromium.org, Apr 5 2013
Labels: -Cr-Content Cr-Blink
Comment 32 by cwilso@google.com, Apr 17 2013
Intent to Implement mail sent: https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/blink-dev/KUx9s-XFdj0.
Project Member Comment 33 by bugdroid1@chromium.org, Apr 22 2013
------------------------------------------------------------------------
r148813 | toyoshim@chromium.org | 2013-04-22T11:55:22.517530Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/RuntimeEnabledFeatures.h?r1=148813&r2=148812&pathrev=148813
   M http://src.chromium.org/viewvc/blink/trunk/Source/WebKit/chromium/src/WebRuntimeFeatures.cpp?r1=148813&r2=148812&pathrev=148813
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/RuntimeEnabledFeatures.cpp?r1=148813&r2=148812&pathrev=148813
   M http://src.chromium.org/viewvc/blink/trunk/Source/WebKit/chromium/public/WebRuntimeFeatures.h?r1=148813&r2=148812&pathrev=148813

Web MIDI: Add a run-time flag in blink

This change adds a run-time flag for Web MIDI API in blink.
This flag is not used now, but it's needed before Chromium side changes
are landed and will be used very soon.

BUG=163795
TEST=none

Review URL: https://chromiumcodereview.appspot.com/14254007
------------------------------------------------------------------------
Project Member Comment 34 by bugdroid1@chromium.org, Apr 23 2013
------------------------------------------------------------------------
r148885 | toyoshim@chromium.org | 2013-04-23T05:51:15.731296Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/OWNERS?r1=148885&r2=148884&pathrev=148885
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=148885&r2=148884&pathrev=148885
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIMessageEvent.h?r1=148885&r2=148884&pathrev=148885
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi?r1=148885&r2=148884&pathrev=148885
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIMessageEvent.idl?r1=148885&r2=148884&pathrev=148885
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/events/constructors/midi-message-event-constructor-expected.txt?r1=148885&r2=148884&pathrev=148885
   M http://src.chromium.org/viewvc/blink/trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp?r1=148885&r2=148884&pathrev=148885
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/derived_sources.gyp?r1=148885&r2=148884&pathrev=148885
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventNames.in?r1=148885&r2=148884&pathrev=148885
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/events/constructors/midi-message-event-constructor.html?r1=148885&r2=148884&pathrev=148885
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventNames.h?r1=148885&r2=148884&pathrev=148885

Web MIDI: implement MIDIMessageEvent

This change implements MIDIMessageEvent behind a runtime flag.

BUG=163795
TEST=LayoutTests/fast/events/constructors/midi-message-event-constructor.html

Review URL: https://codereview.chromium.org/14192043
------------------------------------------------------------------------
Project Member Comment 35 by bugdroid1@chromium.org, Apr 23 2013
------------------------------------------------------------------------
r148886 | toyoshim@chromium.org | 2013-04-23T06:20:25.171514Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/DOMWindowWebMIDI.idl?r1=148886&r2=148885&pathrev=148886

Web MIDI: build fix

DOMWindowWebMIDI.idl was not included in the previous commit.

BUG=163795
TBR=crogers@google.com

Review URL: https://codereview.chromium.org/14421002
------------------------------------------------------------------------
Project Member Comment 36 by bugdroid1@chromium.org, Apr 23 2013
------------------------------------------------------------------------
r195766 | toyoshim@chromium.org | 2013-04-23T08:40:34.136228Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/content_switches.cc?r1=195766&r2=195765&pathrev=195766
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/content_switches.h?r1=195766&r2=195765&pathrev=195766
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/render_thread_impl.cc?r1=195766&r2=195765&pathrev=195766
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_process_host_impl.cc?r1=195766&r2=195765&pathrev=195766

Web MIDI: Add a run-time flag

The flag is disabled by default for now.
--enable-web-midi command line flag enables a run-time flag for Web MIDI .
But it doesn't work for now.

BUG=163795
TEST=none

Review URL: https://codereview.chromium.org/14241011
------------------------------------------------------------------------
Project Member Comment 37 by bugdroid1@chromium.org, Apr 24 2013
------------------------------------------------------------------------
r148967 | toyoshim@chromium.org | 2013-04-24T05:21:04.114329Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIErrorCallback.cpp?r1=148967&r2=148966&pathrev=148967
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=148967&r2=148966&pathrev=148967
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIErrorCallback.h?r1=148967&r2=148966&pathrev=148967
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIErrorCallback.idl?r1=148967&r2=148966&pathrev=148967

Web MIDI: implement MIDIErrorCallback

This change implements MIDIErrorCallback.

BUG=163795
TEST=none
R=crogers@google.com

Review URL: https://codereview.chromium.org/14423002
------------------------------------------------------------------------
Project Member Comment 38 by bugdroid1@chromium.org, Apr 25 2013
------------------------------------------------------------------------
r149071 | toyoshim@chromium.org | 2013-04-25T03:59:44.747041Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventTargetFactory.in?r1=149071&r2=149070&pathrev=149071
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.cpp?r1=149071&r2=149070&pathrev=149071
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventNames.h?r1=149071&r2=149070&pathrev=149071
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventTarget.h?r1=149071&r2=149070&pathrev=149071
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.h?r1=149071&r2=149070&pathrev=149071
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.idl?r1=149071&r2=149070&pathrev=149071
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=149071&r2=149070&pathrev=149071

Web MIDI: implement MIDIPort

This change implements MIDIPort.

BUG=163795
TEST=none
R=crogers@google.com

Review URL: https://codereview.chromium.org/13843021
------------------------------------------------------------------------
Project Member Comment 39 by bugdroid1@chromium.org, Apr 26 2013
------------------------------------------------------------------------
r149161 | toyoshim@chromium.org | 2013-04-26T05:03:20.103951Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.cpp?r1=149161&r2=149160&pathrev=149161
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIErrorCallback.cpp?r1=149161&r2=149160&pathrev=149161
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIPort.idl?r1=149161&r2=149160&pathrev=149161

Web MIDI: clean up on MIDIPort and MIDIErrorCallback

- Style fix on include statements
- MIDIPortType should be readonly enum because it's available now

BUG=163795
TEST=none
R=tkent@chromium.org

Review URL: https://codereview.chromium.org/14373008
------------------------------------------------------------------------
Project Member Comment 40 by bugdroid1@chromium.org, Apr 26 2013
------------------------------------------------------------------------
r149164 | toyoshim@chromium.org | 2013-04-26T05:27:13.253198Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIConnectionEvent.idl?r1=149164&r2=149163&pathrev=149164
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/Dictionary.h?r1=149164&r2=149163&pathrev=149164
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/events/constructors/midi-connection-event-constructor-expected.txt?r1=149164&r2=149163&pathrev=149164
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=149164&r2=149163&pathrev=149164
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/DOMWindowWebMIDI.idl?r1=149164&r2=149163&pathrev=149164
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/events/constructors/midi-connection-event-constructor.html?r1=149164&r2=149163&pathrev=149164
   M http://src.chromium.org/viewvc/blink/trunk/Source/bindings/v8/Dictionary.cpp?r1=149164&r2=149163&pathrev=149164
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventNames.in?r1=149164&r2=149163&pathrev=149164
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIConnectionEvent.h?r1=149164&r2=149163&pathrev=149164

Web MIDI: implement MIDIConnectionEvent

This change implements MIDIConnectionEvent.

BUG=163795
TEST=none
R=crogers@google.com, haraken@chromium.org

Review URL: https://codereview.chromium.org/14358032
------------------------------------------------------------------------
Project Member Comment 41 by bugdroid1@chromium.org, May 3 2013
------------------------------------------------------------------------
r149648 | toyoshim@chromium.org | 2013-05-03T13:08:28.838441Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.h?r1=149648&r2=149647&pathrev=149648
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.idl?r1=149648&r2=149647&pathrev=149648
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventTarget.h?r1=149648&r2=149647&pathrev=149648
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=149648&r2=149647&pathrev=149648
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.cpp?r1=149648&r2=149647&pathrev=149648
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventTargetFactory.in?r1=149648&r2=149647&pathrev=149648

Web MIDI: implement MIDIInput

This change implements MIDIInput.
midimessage Event is not invoked yet.

BUG=163795
TEST=none
R=crogers@google.com, haraken@chromium.org

Review URL: https://codereview.chromium.org/14520002
------------------------------------------------------------------------
Project Member Comment 42 by bugdroid1@chromium.org, May 3 2013
------------------------------------------------------------------------
r149649 | toyoshim@chromium.org | 2013-05-03T13:20:31.672641Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=149649&r2=149648&pathrev=149649
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=149649&r2=149648&pathrev=149649
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=149649&r2=149648&pathrev=149649
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=149649&r2=149648&pathrev=149649

Web MIDI: implement MIDIOutput

This change implements MIDIOutput interfaces.
send methods are not implemeneted yet.

BUG=163795
TEST=none
R=crogers@google.com

Review URL: https://codereview.chromium.org/14442004
------------------------------------------------------------------------
Project Member Comment 43 by bugdroid1@chromium.org, May 3 2013
------------------------------------------------------------------------
r149653 | dglazkov@chromium.org | 2013-05-03T15:29:19.676522Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=149653&r2=149652&pathrev=149653
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=149653&r2=149652&pathrev=149653
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=149653&r2=149652&pathrev=149653
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=149653&r2=149652&pathrev=149653

Revert "Web MIDI: implement MIDIOutput"

This reverts http://src.chromium.org/viewvc/blink?revision=149649&view=revision,
because it broke Windows compile.

TBR=toyoshim
BUG=163795

Review URL: https://codereview.chromium.org/14918002
------------------------------------------------------------------------
Project Member Comment 44 by bugdroid1@chromium.org, May 13 2013
------------------------------------------------------------------------
r150219 | toyoshim@chromium.org | 2013-05-13T13:42:10.108616Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=150219&r2=150218&pathrev=150219
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=150219&r2=150218&pathrev=150219
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=150219&r2=150218&pathrev=150219
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=150219&r2=150218&pathrev=150219

Web MIDI: implement MIDIOutput

This change implements MIDIOutput interfaces.
send methods are not implemeneted yet.

BUG=163795
TEST=none
NOTRY=true
R=crogers@google.com,haraken@chromium.org

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=149649

Review URL: https://chromiumcodereview.appspot.com/14442004
------------------------------------------------------------------------
Project Member Comment 45 by bugdroid1@chromium.org, May 13 2013
------------------------------------------------------------------------
r150226 | danakj@chromium.org | 2013-05-13T16:08:54.338403Z

Changed paths:
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=150226&r2=150225&pathrev=150226
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=150226&r2=150225&pathrev=150226
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=150226&r2=150225&pathrev=150226
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=150226&r2=150225&pathrev=150226

Revert "Web MIDI: implement MIDIOutput"

This reverts commit 3559701d6e127ef5fcb92a5fe43caa8e71fb11f6.

Breaks webexposed/global-constructors-listing.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20chromium.org&showExpectations=true&tests=webexposed%2Fglobal-constructors-listing.html

NOTRY=true
TBR=toyoshim@chromium.org

>    Web MIDI: implement MIDIOutput
>
>    This change implements MIDIOutput interfaces.
>    send methods are not implemeneted yet.
>
>    BUG=163795
>    TEST=none
>    NOTRY=true
>    R=crogers@google.com,haraken@chromium.org
>
>    Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=149649
>
>    Review URL: https://chromiumcodereview.appspot.com/14442004

BUG=

Review URL: https://chromiumcodereview.appspot.com/14758009
------------------------------------------------------------------------
Project Member Comment 46 by bugdroid1@chromium.org, May 14 2013
------------------------------------------------------------------------
r150343 | toyoshim@chromium.org | 2013-05-14T20:12:29.373081Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=150343&r2=150342&pathrev=150343
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.idl?r1=150343&r2=150342&pathrev=150343
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=150343&r2=150342&pathrev=150343
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.cpp?r1=150343&r2=150342&pathrev=150343

Web MIDI: implement MIDIOutput

This change implements MIDIOutput interfaces.
send methods are not implemeneted yet.

BUG=163795
TEST=none
R=crogers@google.com,haraken@chromium.org

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=149649

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=150219

Review URL: https://chromiumcodereview.appspot.com/14442004
------------------------------------------------------------------------
Comment 47 Deleted
Project Member Comment 48 by bugdroid1@chromium.org, May 29 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=151351

------------------------------------------------------------------------
r151351 | toyoshim@chromium.org | 2013-05-29T04:02:55.254051Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventTarget.h?r1=151351&r2=151350&pathrev=151351
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=151351&r2=151350&pathrev=151351
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/dom/EventTargetFactory.in?r1=151351&r2=151350&pathrev=151351
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=151351&r2=151350&pathrev=151351
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIInput.h?r1=151351&r2=151350&pathrev=151351
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOutput.h?r1=151351&r2=151350&pathrev=151351
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.h?r1=151351&r2=151350&pathrev=151351
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.idl?r1=151351&r2=151350&pathrev=151351

Web MIDI: implement MIDIAccess

This change implements MIDIAccess.

BUG=163795
TEST=none
R=crogers@google.com

Review URL: https://chromiumcodereview.appspot.com/14044022
------------------------------------------------------------------------
Blockedon: chromium:243345
Project Member Comment 50 by bugdroid1@chromium.org, Jun 6 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=151961

------------------------------------------------------------------------
r151961 | toyoshim@chromium.org | 2013-06-06T20:37:31.324255Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOptions.h?r1=151961&r2=151960&pathrev=151961
   D http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIErrorCallback.cpp?r1=151961&r2=151960&pathrev=151961
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDISuccessCallback.h?r1=151961&r2=151960&pathrev=151961
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=151961&r2=151960&pathrev=151961
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIErrorCallback.h?r1=151961&r2=151960&pathrev=151961
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDISuccessCallback.idl?r1=151961&r2=151960&pathrev=151961

Web MIDI: implement MIDISuccessCallback and MIDIOptions

This change implements MIDISuccessCallback and MIDIOptions.
Since the IDL generator can not handle Dictionary as an arugment of
handleEvent in callback interface, MIDIOptions is not used for now.

BUG=163795
TEST=none

Review URL: https://chromiumcodereview.appspot.com/16331005
------------------------------------------------------------------------
Project Member Comment 51 by bugdroid1@chromium.org, Jun 11 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=152189

------------------------------------------------------------------------
r152189 | toyoshim@chromium.org | 2013-06-11T06:04:19.829748Z

Changed paths:
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessPromise.cpp?r1=152189&r2=152188&pathrev=152189
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=152189&r2=152188&pathrev=152189
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessPromise.h?r1=152189&r2=152188&pathrev=152189
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.h?r1=152189&r2=152188&pathrev=152189
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessPromise.idl?r1=152189&r2=152188&pathrev=152189
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=152189&r2=152188&pathrev=152189

Web MIDI: implement MIDIAccessPromise

Since Promise is not available yet, Web MIDI tentatively uses this interface
to go implementation ahead.

BUG=163795
TEST=none

Review URL: https://chromiumcodereview.appspot.com/15995010
------------------------------------------------------------------------
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
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=152732

------------------------------------------------------------------------
r152732 | crogers@google.com | 2013-06-19T21:51:09.853549Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.h?r1=152732&r2=152731&pathrev=152732
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessorClient.h?r1=152732&r2=152731&pathrev=152732
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessor.h?r1=152732&r2=152731&pathrev=152732
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/Platform.h?r1=152732&r2=152731&pathrev=152732
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.cpp?r1=152732&r2=152731&pathrev=152732

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

Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=152715

R=abarth@chromium.org, crogers@google.com, tkent@chromium.org

Review URL: https://codereview.chromium.org/17155009
------------------------------------------------------------------------
Project Member Comment 55 by bugdroid1@chromium.org, Jun 20 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=152780

------------------------------------------------------------------------
r152780 | crogers@google.com | 2013-06-20T12:37:08.540029Z

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

Web MIDI: refine MIDIAccessor and WebMIDIAccessor APIs

This re-lands 17155009 along with Adam Barth's last review comments.
https://codereview.chromium.org/17155009/#msg12

TEST=(tested locally with unlanded Chromium back-end)
BUG=163795

Review URL: https://chromiumcodereview.appspot.com/17101035
------------------------------------------------------------------------
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
------------------------------------------------------------------------
Project Member Comment 65 by bugdroid1@chromium.org, Jul 1 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=153368

------------------------------------------------------------------------
r153368 | toyoshim@chromium.org | 2013-07-01T19:59:06.937690Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webmidi/requestmidiaccess.html?r1=153368&r2=153367&pathrev=153368
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDISuccessCallback.idl?r1=153368&r2=153367&pathrev=153368
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessor.h?r1=153368&r2=153367&pathrev=153368
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccessPromise.cpp?r1=153368&r2=153367&pathrev=153368
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIOptions.h?r1=153368&r2=153367&pathrev=153368
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/webmidi/MIDIAccess.cpp?r1=153368&r2=153367&pathrev=153368

Web MIDI: rename sysexEnabled to sysex

To follow the latest spec, sysexEnabled option is renamed to sysex.

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

Review URL: https://chromiumcodereview.appspot.com/18350002
------------------------------------------------------------------------
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
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=154858

------------------------------------------------------------------------
r154858 | crogers@google.com | 2013-07-24T23:34:32.631798Z

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

re-lands 18858006 which was reviewed by:
abarth@chromium.org
toyoshim@chromium.org

BUG=163795
TBR=crogers@google.com

Review URL: https://chromiumcodereview.appspot.com/19695015
------------------------------------------------------------------------
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 80 by bugdroid1@chromium.org, Jul 26 2013
The following revision refers to this bug:
    http://src.chromium.org/viewvc/blink?view=rev&rev=155004

------------------------------------------------------------------------
r155004 | toyoshim@chromium.org | 2013-07-26T19:31:49.242885Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.h?r1=155004&r2=155003&pathrev=155004
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessorClient.h?r1=155004&r2=155003&pathrev=155004
   M http://src.chromium.org/viewvc/blink/trunk/Tools/DumpRenderTree/chromium/TestRunner/src/MockWebMIDIAccessor.h?r1=155004&r2=155003&pathrev=155004
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMIDIAccessor.h?r1=155004&r2=155003&pathrev=155004
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/platform/midi/MIDIAccessor.cpp?r1=155004&r2=155003&pathrev=155004
   M http://src.chromium.org/viewvc/blink/trunk/Tools/DumpRenderTree/chromium/TestRunner/src/MockWebMIDIAccessor.cpp?r1=155004&r2=155003&pathrev=155004

Web MIDI: remove old platform API

Remove obsoleted APIs, requestAccess of WebMIDIAccessor, and
didAllowAccess and didBlockAccess of WebMIDIAccessorClient.

TEST=none 
BUG=163795

Review URL: https://chromiumcodereview.appspot.com/18260005
------------------------------------------------------------------------
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.
Sign in to add a comment