0

Reland: Web MIDI: split build rules for media/midi

Changes from the first coommit.
- Define right dependencies to xdisplaycheck
- Fix build rules for midi_unittests_apk to run on Android
- Rebase error fixes (build rule deopendency adjustments)

Original commit is:
https://crrev.com/31624cad1a3b5cf26950b864837ba44b3aa38331

Original description follows:

Split MIDI related stuffs from media as a component in build files.
Also, MIDI related unit tests are split into midi_unittests.

BUG=475869
TEST=git cl try
TEST=ninja midi_unittests_apk && ./build/android/test_runner.py gtest midi_unittests

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

Cr-Commit-Position: refs/heads/master@{#327712}
This commit is contained in:
toyoshim
2015-04-30 07:52:02 -07:00
committed by Commit bot
parent 3140c71945
commit c647577999
42 changed files with 782 additions and 182 deletions

@@ -84,6 +84,7 @@ group("both_gn_and_gyp") {
"//jingle:jingle_unittests", "//jingle:jingle_unittests",
"//media:media_unittests", "//media:media_unittests",
"//media/cast:cast_unittests", "//media/cast:cast_unittests",
"//media/midi:midi_unittests",
"//mojo", "//mojo",
"//mojo/application", "//mojo/application",
"//mojo/common:mojo_common_unittests", "//mojo/common:mojo_common_unittests",
@@ -740,8 +741,9 @@ if (is_linux) {
"//ipc:ipc_tests", # PASSES 2/25/2015 "//ipc:ipc_tests", # PASSES 2/25/2015
"//ipc/mojo:ipc_mojo_unittests", # PASSES 2/25/2015 "//ipc/mojo:ipc_mojo_unittests", # PASSES 2/25/2015
"//jingle:jingle_unittests", # PASSES 2/25/2015 "//jingle:jingle_unittests", # PASSES 2/25/2015
"//media/cast:cast_unittests", # PASSES 2/25/2015
"//media:media_unittests", # PASSES 3/3/2015 "//media:media_unittests", # PASSES 3/3/2015
"//media/cast:cast_unittests", # PASSES 2/25/2015
"//media/midi:midi_unittests", # PASSES 4/10/2015
"//mojo/common:mojo_common_unittests", # PASSES 2/25/2015 "//mojo/common:mojo_common_unittests", # PASSES 2/25/2015
"//net:net_unittests", # PASSES 2/25/2015 "//net:net_unittests", # PASSES 2/25/2015
"//ppapi:ppapi_unittests", # PASSES 2/26/2015 "//ppapi:ppapi_unittests", # PASSES 2/26/2015

@@ -181,6 +181,7 @@
'../gpu/gpu.gyp:gles2_implementation', '../gpu/gpu.gyp:gles2_implementation',
'../gpu/skia_bindings/skia_bindings.gyp:gpu_skia_bindings', '../gpu/skia_bindings/skia_bindings.gyp:gpu_skia_bindings',
'../media/media.gyp:media', '../media/media.gyp:media',
'../media/midi/midi.gyp:midi',
'../printing/printing.gyp:printing', '../printing/printing.gyp:printing',
'../skia/skia.gyp:skia', '../skia/skia.gyp:skia',
'../third_party/WebKit/public/blink.gyp:blink', '../third_party/WebKit/public/blink.gyp:blink',

@@ -124,6 +124,7 @@
'../jingle/jingle.gyp:*', '../jingle/jingle.gyp:*',
'../media/cast/cast.gyp:*', '../media/cast/cast.gyp:*',
'../media/media.gyp:*', '../media/media.gyp:*',
'../media/midi/midi.gyp:*',
'../mojo/mojo.gyp:*', '../mojo/mojo.gyp:*',
'../mojo/mojo_base.gyp:*', '../mojo/mojo_base.gyp:*',
'../ppapi/ppapi.gyp:*', '../ppapi/ppapi.gyp:*',
@@ -344,6 +345,7 @@
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/cast/cast.gyp:cast_unittests', '../media/cast/cast.gyp:cast_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../mojo/mojo.gyp:mojo', '../mojo/mojo.gyp:mojo',
'../ppapi/ppapi_internal.gyp:ppapi_unittests', '../ppapi/ppapi_internal.gyp:ppapi_unittests',
'../remoting/remoting.gyp:remoting_unittests', '../remoting/remoting.gyp:remoting_unittests',
@@ -567,6 +569,7 @@
'../content/content_shell_and_tests.gyp:content_shell', '../content/content_shell_and_tests.gyp:content_shell',
'../gpu/gpu.gyp:gpu_perftests', '../gpu/gpu.gyp:gpu_perftests',
'../media/media.gyp:media_perftests', '../media/media.gyp:media_perftests',
'../media/midi/midi.gyp:midi_unittests',
'../tools/perf/clear_system_cache/clear_system_cache.gyp:*', '../tools/perf/clear_system_cache/clear_system_cache.gyp:*',
'../tools/telemetry/telemetry.gyp:*', '../tools/telemetry/telemetry.gyp:*',
], ],
@@ -681,6 +684,7 @@
'../content/content_shell_and_tests.gyp:content_browsertests', '../content/content_shell_and_tests.gyp:content_browsertests',
'../content/content_shell_and_tests.gyp:content_unittests', '../content/content_shell_and_tests.gyp:content_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../third_party/webrtc/tools/tools.gyp:frame_analyzer', '../third_party/webrtc/tools/tools.gyp:frame_analyzer',
'../third_party/webrtc/tools/tools.gyp:rgba_to_i420_converter', '../third_party/webrtc/tools/tools.gyp:rgba_to_i420_converter',
], ],
@@ -814,6 +818,8 @@
'../ipc/ipc.gyp:ipc_tests', '../ipc/ipc.gyp:ipc_tests',
'../media/media.gyp:media_perftests_apk', '../media/media.gyp:media_perftests_apk',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests_apk',
'../media/midi/midi.gyp:midi_unittests',
'../net/net.gyp:net_unittests', '../net/net.gyp:net_unittests',
'../sandbox/sandbox.gyp:sandbox_linux_unittests_deps', '../sandbox/sandbox.gyp:sandbox_linux_unittests_deps',
'../skia/skia_tests.gyp:skia_unittests', '../skia/skia_tests.gyp:skia_unittests',
@@ -843,6 +849,7 @@
'../gpu/gpu.gyp:gpu_unittests_apk', '../gpu/gpu.gyp:gpu_unittests_apk',
'../ipc/ipc.gyp:ipc_tests_apk', '../ipc/ipc.gyp:ipc_tests_apk',
'../media/media.gyp:media_unittests_apk', '../media/media.gyp:media_unittests_apk',
'../media/midi/midi.gyp:midi_unittests_apk',
'../net/net.gyp:net_unittests_apk', '../net/net.gyp:net_unittests_apk',
'../sandbox/sandbox.gyp:sandbox_linux_jni_unittests_apk', '../sandbox/sandbox.gyp:sandbox_linux_jni_unittests_apk',
'../skia/skia_tests.gyp:skia_unittests_apk', '../skia/skia_tests.gyp:skia_unittests_apk',
@@ -929,6 +936,7 @@
'../ipc/mojo/ipc_mojo.gyp:ipc_mojo_unittests', '../ipc/mojo/ipc_mojo.gyp:ipc_mojo_unittests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../ppapi/ppapi_internal.gyp:ppapi_unittests', '../ppapi/ppapi_internal.gyp:ppapi_unittests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests', '../remoting/remoting.gyp:remoting_unittests',
@@ -968,6 +976,7 @@
'../ipc/mojo/ipc_mojo.gyp:ipc_mojo_unittests', '../ipc/mojo/ipc_mojo.gyp:ipc_mojo_unittests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../ppapi/ppapi_internal.gyp:ppapi_unittests', '../ppapi/ppapi_internal.gyp:ppapi_unittests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests', '../remoting/remoting.gyp:remoting_unittests',
@@ -995,6 +1004,7 @@
'../ipc/ipc.gyp:ipc_tests', '../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../net/net.gyp:net_unittests', '../net/net.gyp:net_unittests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests', '../remoting/remoting.gyp:remoting_unittests',
@@ -1018,6 +1028,7 @@
'../ipc/ipc.gyp:ipc_tests', '../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../net/net.gyp:net_unittests', '../net/net.gyp:net_unittests',
'../google_apis/gcm/gcm.gyp:gcm_unit_tests', '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
@@ -1069,6 +1080,7 @@
'../ipc/mojo/ipc_mojo.gyp:ipc_mojo_unittests', '../ipc/mojo/ipc_mojo.gyp:ipc_mojo_unittests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../ppapi/ppapi_internal.gyp:ppapi_unittests', '../ppapi/ppapi_internal.gyp:ppapi_unittests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests', '../remoting/remoting.gyp:remoting_unittests',
@@ -1108,6 +1120,7 @@
'../ipc/ipc.gyp:ipc_tests', '../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../net/net.gyp:net_unittests', '../net/net.gyp:net_unittests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests', '../remoting/remoting.gyp:remoting_unittests',
@@ -1166,6 +1179,7 @@
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/cast/cast.gyp:cast_unittests', '../media/cast/cast.gyp:cast_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../mojo/mojo.gyp:mojo', '../mojo/mojo.gyp:mojo',
'../net/net.gyp:net_unittests', '../net/net.gyp:net_unittests',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
@@ -1234,6 +1248,7 @@
'../chrome/chrome.gyp:sync_integration_tests', '../chrome/chrome.gyp:sync_integration_tests',
'../ipc/ipc.gyp:ipc_tests', '../ipc/ipc.gyp:ipc_tests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../net/net.gyp:net_unittests_run', '../net/net.gyp:net_unittests_run',
'../printing/printing.gyp:printing_unittests', '../printing/printing.gyp:printing_unittests',
'../sql/sql.gyp:sql_unittests', '../sql/sql.gyp:sql_unittests',

@@ -32,6 +32,7 @@ STABLE_TEST_SUITES = [
'gpu_unittests', 'gpu_unittests',
'ipc_tests', 'ipc_tests',
'media_unittests', 'media_unittests',
'midi_unittests',
'net_unittests', 'net_unittests',
'sandbox_linux_unittests', 'sandbox_linux_unittests',
'skia_unittests', 'skia_unittests',

@@ -37,6 +37,7 @@ ISOLATE_FILE_PATHS = {
'content_unittests': 'content/content_unittests.isolate', 'content_unittests': 'content/content_unittests.isolate',
'media_perftests': 'media/media_perftests.isolate', 'media_perftests': 'media/media_perftests.isolate',
'media_unittests': 'media/media_unittests.isolate', 'media_unittests': 'media/media_unittests.isolate',
'midi_unittests': 'media/midi/midi_unittests.isolate',
'net_unittests': 'net/net_unittests.isolate', 'net_unittests': 'net/net_unittests.isolate',
'sql_unittests': 'sql/sql_unittests.isolate', 'sql_unittests': 'sql/sql_unittests.isolate',
'sync_unit_tests': 'sync/sync_unit_tests.isolate', 'sync_unit_tests': 'sync/sync_unit_tests.isolate',

@@ -102,6 +102,7 @@
'../media/media.gyp:ffmpeg_regression_tests', # TODO(GYP) this should be conditional on media_use_ffmpeg '../media/media.gyp:ffmpeg_regression_tests', # TODO(GYP) this should be conditional on media_use_ffmpeg
'../media/media.gyp:media_perftests', '../media/media.gyp:media_perftests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../media/cast/cast.gyp:cast_benchmarks', '../media/cast/cast.gyp:cast_benchmarks',
'../media/cast/cast.gyp:cast_unittests', '../media/cast/cast.gyp:cast_unittests',
'../media/cast/cast.gyp:generate_barcode_video', '../media/cast/cast.gyp:generate_barcode_video',
@@ -526,6 +527,7 @@
'../gpu/gpu.gyp:gpu_unittests_run', '../gpu/gpu.gyp:gpu_unittests_run',
'../media/cast/cast.gyp:cast_unittests_run', '../media/cast/cast.gyp:cast_unittests_run',
'../media/media.gyp:media_unittests_run', '../media/media.gyp:media_unittests_run',
'../media/midi/midi.gyp:midi_unittests_run',
'../net/net.gyp:net_unittests_run', '../net/net.gyp:net_unittests_run',
'../sql/sql.gyp:sql_unittests_run', '../sql/sql.gyp:sql_unittests_run',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests_run', '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests_run',

@@ -45,6 +45,7 @@
'../ipc/ipc.gyp:ipc_tests', '../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests', '../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests', '../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../net/net.gyp:net_unittests', '../net/net.gyp:net_unittests',
'../sandbox/sandbox.gyp:sandbox_linux_unittests', '../sandbox/sandbox.gyp:sandbox_linux_unittests',
'../sql/sql.gyp:sql_unittests', '../sql/sql.gyp:sql_unittests',
@@ -188,6 +189,7 @@
'../cc/cc_tests.gyp:cc_unittests_apk', '../cc/cc_tests.gyp:cc_unittests_apk',
'../ipc/ipc.gyp:ipc_tests_apk', '../ipc/ipc.gyp:ipc_tests_apk',
'../media/media.gyp:media_unittests_apk', '../media/media.gyp:media_unittests_apk',
'../media/midi/midi.gyp:midi_unittests_apk',
'../net/net.gyp:net_unittests_apk', '../net/net.gyp:net_unittests_apk',
'../sandbox/sandbox.gyp:sandbox_linux_jni_unittests_apk', '../sandbox/sandbox.gyp:sandbox_linux_jni_unittests_apk',
'../sql/sql.gyp:sql_unittests_apk', '../sql/sql.gyp:sql_unittests_apk',

@@ -7,4 +7,5 @@ include_rules = [
"+gin/public/snapshot_fd_data.h", "+gin/public/snapshot_fd_data.h",
"+gin/v8_initializer.h", "+gin/v8_initializer.h",
"+media/base", # For initializing media library. "+media/base", # For initializing media library.
"+media/midi", # For initializing midi library.
] ]

@@ -24,6 +24,7 @@
#include "content/public/common/result_codes.h" #include "content/public/common/result_codes.h"
#include "device/vibration/android/vibration_jni_registrar.h" #include "device/vibration/android/vibration_jni_registrar.h"
#include "media/base/android/media_jni_registrar.h" #include "media/base/android/media_jni_registrar.h"
#include "media/midi/midi_jni_registrar.h"
#include "net/android/net_jni_registrar.h" #include "net/android/net_jni_registrar.h"
#include "ui/android/ui_android_jni_registrar.h" #include "ui/android/ui_android_jni_registrar.h"
#include "ui/base/android/ui_base_jni_registrar.h" #include "ui/base/android/ui_base_jni_registrar.h"
@@ -70,6 +71,9 @@ bool EnsureJniRegistered(JNIEnv* env) {
if (!media::RegisterJni(env)) if (!media::RegisterJni(env))
return false; return false;
if (!media::midi::RegisterJni(env))
return false;
if (!ui::RegisterUIAndroidJni(env)) if (!ui::RegisterUIAndroidJni(env))
return false; return false;

@@ -177,6 +177,7 @@ source_set("common") {
"//gpu/ipc", "//gpu/ipc",
"//gpu/skia_bindings", "//gpu/skia_bindings",
"//media", "//media",
"//media/midi",
"//media:shared_memory_support", "//media:shared_memory_support",
"//mojo/environment:chromium", "//mojo/environment:chromium",
"//sandbox", "//sandbox",

@@ -594,6 +594,7 @@
'../ipc/mojo/ipc_mojo.gyp:ipc_mojo', '../ipc/mojo/ipc_mojo.gyp:ipc_mojo',
'../media/media.gyp:media', '../media/media.gyp:media',
'../media/media.gyp:shared_memory_support', '../media/media.gyp:shared_memory_support',
'../media/midi/midi.gyp:midi',
'../mojo/mojo_base.gyp:mojo_environment_chromium', '../mojo/mojo_base.gyp:mojo_environment_chromium',
'../storage/storage_common.gyp:storage_common', '../storage/storage_common.gyp:storage_common',
'../third_party/WebKit/public/blink.gyp:blink', '../third_party/WebKit/public/blink.gyp:blink',

@@ -869,6 +869,7 @@
'../ipc/mojo/ipc_mojo.gyp:*', '../ipc/mojo/ipc_mojo.gyp:*',
'../media/blink/media_blink.gyp:media_blink', '../media/blink/media_blink.gyp:media_blink',
'../media/media.gyp:media', '../media/media.gyp:media',
'../media/midi/midi.gyp:midi',
'../ppapi/ppapi_internal.gyp:ppapi_host', '../ppapi/ppapi_internal.gyp:ppapi_host',
'../ppapi/ppapi_internal.gyp:ppapi_proxy', '../ppapi/ppapi_internal.gyp:ppapi_proxy',
'../ppapi/ppapi_internal.gyp:ppapi_shared', '../ppapi/ppapi_internal.gyp:ppapi_shared',

@@ -497,6 +497,7 @@ if (!is_mac) { # TODO(GYP) enable on Mac once it links.
"//media:shared_memory_support", "//media:shared_memory_support",
"//media/audio:test_support", "//media/audio:test_support",
"//media/base:test_support", "//media/base:test_support",
"//media/midi:midi",
"//storage/browser", "//storage/browser",
"//storage/common", "//storage/common",
"//third_party/WebKit/public:blink", "//third_party/WebKit/public:blink",

@@ -32,9 +32,6 @@ config("media_config") {
if (use_cras) { if (use_cras) {
defines += [ "USE_CRAS" ] defines += [ "USE_CRAS" ]
} }
if (use_alsa) {
defines += [ "USE_ALSA" ]
}
} }
config("media_implementation") { config("media_implementation") {
@@ -178,30 +175,6 @@ component("media") {
"formats/webm/webm_video_client.h", "formats/webm/webm_video_client.h",
"formats/webm/webm_webvtt_parser.cc", "formats/webm/webm_webvtt_parser.cc",
"formats/webm/webm_webvtt_parser.h", "formats/webm/webm_webvtt_parser.h",
"midi/midi_manager.cc",
"midi/midi_manager.h",
"midi/midi_manager_mac.cc",
"midi/midi_manager_mac.h",
"midi/midi_manager_usb.cc",
"midi/midi_manager_usb.h",
"midi/midi_manager_win.cc",
"midi/midi_manager_win.h",
"midi/midi_message_queue.cc",
"midi/midi_message_queue.h",
"midi/midi_message_util.cc",
"midi/midi_message_util.h",
"midi/midi_port_info.cc",
"midi/midi_port_info.h",
"midi/midi_scheduler.cc",
"midi/midi_scheduler.h",
"midi/usb_midi_descriptor_parser.cc",
"midi/usb_midi_descriptor_parser.h",
"midi/usb_midi_device.h",
"midi/usb_midi_input_stream.cc",
"midi/usb_midi_input_stream.h",
"midi/usb_midi_jack.h",
"midi/usb_midi_output_stream.cc",
"midi/usb_midi_output_stream.h",
"renderers/audio_renderer_impl.cc", "renderers/audio_renderer_impl.cc",
"renderers/audio_renderer_impl.h", "renderers/audio_renderer_impl.h",
"renderers/gpu_video_accelerator_factories.h", "renderers/gpu_video_accelerator_factories.h",
@@ -337,11 +310,6 @@ component("media") {
if (is_android) { if (is_android) {
sources += [ sources += [
"midi/midi_manager_android.cc",
"midi/usb_midi_device_android.cc",
"midi/usb_midi_device_android.h",
"midi/usb_midi_device_factory_android.cc",
"midi/usb_midi_device_factory_android.h",
"video/capture/android/video_capture_device_android.cc", "video/capture/android/video_capture_device_android.cc",
"video/capture/android/video_capture_device_android.h", "video/capture/android/video_capture_device_android.h",
"video/capture/android/video_capture_device_factory_android.cc", "video/capture/android/video_capture_device_factory_android.cc",
@@ -370,15 +338,6 @@ component("media") {
] ]
} }
if (use_alsa && use_udev) {
libs += [ "asound" ]
sources += [
"midi/midi_manager_alsa.cc",
"midi/midi_manager_alsa.h",
]
deps += [ "//device/udev_linux" ]
}
# A simple WebM encoder for animated avatars on ChromeOS. # A simple WebM encoder for animated avatars on ChromeOS.
if (use_ozone) { if (use_ozone) {
@@ -402,7 +361,6 @@ component("media") {
"//third_party/decklink", "//third_party/decklink",
] ]
libs += [ libs += [
"CoreMIDI.framework",
"CoreVideo.framework", "CoreVideo.framework",
"OpenGL.framework", "OpenGL.framework",
"QTKit.framework", "QTKit.framework",
@@ -421,8 +379,6 @@ component("media") {
} }
if (is_win) { if (is_win) {
deps += [ "//device/usb" ]
libs += [ libs += [
"mf.lib", "mf.lib",
"mfplat.lib", "mfplat.lib",
@@ -575,13 +531,6 @@ test("media_unittests") {
"formats/webm/webm_parser_unittest.cc", "formats/webm/webm_parser_unittest.cc",
"formats/webm/webm_tracks_parser_unittest.cc", "formats/webm/webm_tracks_parser_unittest.cc",
"formats/webm/webm_webvtt_parser_unittest.cc", "formats/webm/webm_webvtt_parser_unittest.cc",
"midi/midi_manager_unittest.cc",
"midi/midi_manager_usb_unittest.cc",
"midi/midi_message_queue_unittest.cc",
"midi/midi_message_util_unittest.cc",
"midi/usb_midi_descriptor_parser_unittest.cc",
"midi/usb_midi_input_stream_unittest.cc",
"midi/usb_midi_output_stream_unittest.cc",
"renderers/audio_renderer_impl_unittest.cc", "renderers/audio_renderer_impl_unittest.cc",
"renderers/renderer_impl_unittest.cc", "renderers/renderer_impl_unittest.cc",
"renderers/video_renderer_impl_unittest.cc", "renderers/video_renderer_impl_unittest.cc",
@@ -669,18 +618,8 @@ test("media_unittests") {
} }
if (is_mac) { if (is_mac) {
sources += [ sources +=
"midi/midi_manager_mac_unittest.cc", [ "video/capture/mac/video_capture_device_factory_mac_unittest.mm" ]
"video/capture/mac/video_capture_device_factory_mac_unittest.mm",
]
libs = [
# Required by midi_manager_mac_unittest.cc.
"CoreMIDI.framework",
]
}
if (use_alsa && use_udev) {
sources += [ "midi/midi_manager_alsa_unittest.cc" ]
} }
# include_dirs += [ # include_dirs += [

@@ -6,10 +6,5 @@ scherkus@chromium.org
wolenetz@chromium.org wolenetz@chromium.org
xhwang@chromium.org xhwang@chromium.org
# Build rules for Web MIDI
per-file BUILD.gn=toyoshim@chromium.org
per-file *.gyp=toyoshim@chromium.org
per-file *.gypi=toyoshim@chromium.org
per-file *.isolate=csharp@chromium.org per-file *.isolate=csharp@chromium.org
per-file *.isolate=maruel@chromium.org per-file *.isolate=maruel@chromium.org

@@ -87,8 +87,6 @@ generate_jni("media_jni_headers") {
"java/src/org/chromium/media/MediaDrmBridge.java", "java/src/org/chromium/media/MediaDrmBridge.java",
"java/src/org/chromium/media/MediaPlayerBridge.java", "java/src/org/chromium/media/MediaPlayerBridge.java",
"java/src/org/chromium/media/MediaPlayerListener.java", "java/src/org/chromium/media/MediaPlayerListener.java",
"java/src/org/chromium/media/UsbMidiDeviceAndroid.java",
"java/src/org/chromium/media/UsbMidiDeviceFactoryAndroid.java",
"java/src/org/chromium/media/WebAudioMediaCodecBridge.java", "java/src/org/chromium/media/WebAudioMediaCodecBridge.java",
] ]
jni_package = "media" jni_package = "media"

@@ -15,8 +15,6 @@
#include "media/base/android/media_player_bridge.h" #include "media/base/android/media_player_bridge.h"
#include "media/base/android/media_player_listener.h" #include "media/base/android/media_player_listener.h"
#include "media/base/android/webaudio_media_codec_bridge.h" #include "media/base/android/webaudio_media_codec_bridge.h"
#include "media/midi/usb_midi_device_android.h"
#include "media/midi/usb_midi_device_factory_android.h"
#include "media/video/capture/android/video_capture_device_android.h" #include "media/video/capture/android/video_capture_device_android.h"
#include "media/video/capture/android/video_capture_device_factory_android.h" #include "media/video/capture/android/video_capture_device_factory_android.h"
@@ -35,10 +33,6 @@ static base::android::RegistrationMethod kMediaRegisteredMethods[] = {
MediaPlayerBridge::RegisterMediaPlayerBridge }, MediaPlayerBridge::RegisterMediaPlayerBridge },
{ "MediaPlayerListener", { "MediaPlayerListener",
MediaPlayerListener::RegisterMediaPlayerListener }, MediaPlayerListener::RegisterMediaPlayerListener },
{ "UsbMidiDevice",
UsbMidiDeviceAndroid::RegisterUsbMidiDevice },
{ "UsbMidiDeviceFactory",
UsbMidiDeviceFactoryAndroid::RegisterUsbMidiDeviceFactory },
{ "VideoCaptureDevice", { "VideoCaptureDevice",
VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice }, VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice },
{ "VideoCaptureDeviceFactory", { "VideoCaptureDeviceFactory",

@@ -512,37 +512,6 @@
'formats/webm/webm_video_client.cc', 'formats/webm/webm_video_client.cc',
'formats/webm/webm_video_client.h', 'formats/webm/webm_video_client.h',
'formats/webm/webm_webvtt_parser.cc', 'formats/webm/webm_webvtt_parser.cc',
'midi/midi_manager.cc',
'midi/midi_manager.h',
'midi/midi_manager_alsa.cc',
'midi/midi_manager_alsa.h',
'midi/midi_manager_android.cc',
'midi/midi_manager_mac.cc',
'midi/midi_manager_mac.h',
'midi/midi_manager_usb.cc',
'midi/midi_manager_usb.h',
'midi/midi_manager_win.cc',
'midi/midi_manager_win.h',
'midi/midi_message_queue.cc',
'midi/midi_message_queue.h',
'midi/midi_message_util.cc',
'midi/midi_message_util.h',
'midi/midi_port_info.cc',
'midi/midi_port_info.h',
'midi/midi_scheduler.cc',
'midi/midi_scheduler.h',
'midi/usb_midi_descriptor_parser.cc',
'midi/usb_midi_descriptor_parser.h',
'midi/usb_midi_device.h',
'midi/usb_midi_device_android.cc',
'midi/usb_midi_device_android.h',
'midi/usb_midi_device_factory_android.cc',
'midi/usb_midi_device_factory_android.h',
'midi/usb_midi_input_stream.cc',
'midi/usb_midi_input_stream.h',
'midi/usb_midi_jack.h',
'midi/usb_midi_output_stream.cc',
'midi/usb_midi_output_stream.h',
'ozone/media_ozone_platform.cc', 'ozone/media_ozone_platform.cc',
'ozone/media_ozone_platform.h', 'ozone/media_ozone_platform.h',
'renderers/audio_renderer_impl.cc', 'renderers/audio_renderer_impl.cc',
@@ -956,7 +925,6 @@
'$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework', '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
'$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework', '$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework', '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreMIDI.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework', '$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework',
'$(SDKROOT)/System/Library/Frameworks/OpenGL.framework', '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
'$(SDKROOT)/System/Library/Frameworks/QTKit.framework', '$(SDKROOT)/System/Library/Frameworks/QTKit.framework',
@@ -964,9 +932,6 @@
}, },
}], }],
['OS=="win"', { ['OS=="win"', {
'dependencies': [
'../device/usb/usb.gyp:device_usb',
],
'link_settings': { 'link_settings': {
'libraries': [ 'libraries': [
'-lmf.lib', '-lmf.lib',
@@ -1093,16 +1058,6 @@
'filters/source_buffer_platform.h', 'filters/source_buffer_platform.h',
] ]
}], }],
['use_udev==1', {
'dependencies': [
'../device/udev_linux/udev.gyp:udev_linux',
],
}, { # use_udev==0
'sources!': [
'midi/midi_manager_alsa.cc',
'midi/midi_manager_alsa.h',
],
}],
], # conditions ], # conditions
'target_conditions': [ 'target_conditions': [
['OS == "ios" and _toolset != "host"', { ['OS == "ios" and _toolset != "host"', {
@@ -1274,13 +1229,6 @@
'formats/webm/webm_parser_unittest.cc', 'formats/webm/webm_parser_unittest.cc',
'formats/webm/webm_tracks_parser_unittest.cc', 'formats/webm/webm_tracks_parser_unittest.cc',
'formats/webm/webm_webvtt_parser_unittest.cc', 'formats/webm/webm_webvtt_parser_unittest.cc',
'midi/midi_manager_unittest.cc',
'midi/midi_manager_usb_unittest.cc',
'midi/midi_message_queue_unittest.cc',
'midi/midi_message_util_unittest.cc',
'midi/usb_midi_descriptor_parser_unittest.cc',
'midi/usb_midi_input_stream_unittest.cc',
'midi/usb_midi_output_stream_unittest.cc',
'renderers/audio_renderer_impl_unittest.cc', 'renderers/audio_renderer_impl_unittest.cc',
'renderers/renderer_impl_unittest.cc', 'renderers/renderer_impl_unittest.cc',
'renderers/video_renderer_impl_unittest.cc', 'renderers/video_renderer_impl_unittest.cc',
@@ -1413,15 +1361,9 @@
}], }],
['OS=="mac"', { ['OS=="mac"', {
'sources': [ 'sources': [
'midi/midi_manager_mac_unittest.cc',
'video/capture/mac/video_capture_device_factory_mac_unittest.mm', 'video/capture/mac/video_capture_device_factory_mac_unittest.mm',
] ]
}], }],
['use_alsa==1 and use_udev==1', {
'sources': [
'midi/midi_manager_alsa_unittest.cc',
]
}],
['use_x11==1', { ['use_x11==1', {
'dependencies': [ 'dependencies': [
'../tools/xdisplaycheck/xdisplaycheck.gyp:xdisplaycheck', '../tools/xdisplaycheck/xdisplaycheck.gyp:xdisplaycheck',
@@ -1705,8 +1647,6 @@
'base/android/java/src/org/chromium/media/MediaDrmBridge.java', 'base/android/java/src/org/chromium/media/MediaDrmBridge.java',
'base/android/java/src/org/chromium/media/MediaPlayerBridge.java', 'base/android/java/src/org/chromium/media/MediaPlayerBridge.java',
'base/android/java/src/org/chromium/media/MediaPlayerListener.java', 'base/android/java/src/org/chromium/media/MediaPlayerListener.java',
'base/android/java/src/org/chromium/media/UsbMidiDeviceAndroid.java',
'base/android/java/src/org/chromium/media/UsbMidiDeviceFactoryAndroid.java',
'base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java', 'base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java',
], ],
'variables': { 'variables': {

172
media/midi/BUILD.gn Normal file

@@ -0,0 +1,172 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/config.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//media/media_options.gni")
import("//testing/test.gni")
if (is_android) {
# For generate_jni().
import("//build/config/android/rules.gni")
}
# Common configuration for targets in the media/midi directory.
config("midi_config") {
if (use_alsa) {
defines = [
"USE_ALSA",
"USE_UDEV",
]
}
visibility = [ ":*" ]
}
# USB MIDI specific source files that are used in Android port, and unit tests.
source_set("usb_midi") {
sources = [
"midi_manager_usb.cc",
"midi_manager_usb.h",
"usb_midi_descriptor_parser.cc",
"usb_midi_descriptor_parser.h",
"usb_midi_device.h",
"usb_midi_input_stream.cc",
"usb_midi_input_stream.h",
"usb_midi_jack.h",
"usb_midi_output_stream.cc",
"usb_midi_output_stream.h",
]
defines = [ "MEDIA_IMPLEMENTATION" ]
deps = [
"//base",
]
}
# Android specific Java source files that are used to generate jni header files.
if (is_android) {
android_library("midi_java") {
deps = [
"//base:base_java",
]
DEPRECATED_java_in_dir = "java/src"
}
generate_jni("midi_jni_headers") {
sources = [
"java/src/org/chromium/media/midi/UsbMidiDeviceAndroid.java",
"java/src/org/chromium/media/midi/UsbMidiDeviceFactoryAndroid.java",
]
jni_package = "media/midi"
}
}
component("midi") {
sources = [
"midi_manager.cc",
"midi_manager.h",
"midi_manager_mac.cc",
"midi_manager_mac.h",
"midi_manager_win.cc",
"midi_manager_win.h",
"midi_message_queue.cc",
"midi_message_queue.h",
"midi_message_util.cc",
"midi_message_util.h",
"midi_port_info.cc",
"midi_port_info.h",
"midi_scheduler.cc",
"midi_scheduler.h",
]
configs += [ ":midi_config" ]
defines = [ "MEDIA_IMPLEMENTATION" ]
deps = []
libs = []
if (is_android) {
sources += [
"midi_jni_registrar.cc",
"midi_jni_registrar.h",
"midi_manager_android.cc",
"usb_midi_device_android.cc",
"usb_midi_device_android.h",
"usb_midi_device_factory_android.cc",
"usb_midi_device_factory_android.h",
]
deps += [
"//base:i18n",
":midi_jni_headers",
":usb_midi",
]
}
if (is_mac) {
libs += [
"CoreAudio.framework",
"CoreMIDI.framework",
]
}
if (is_win) {
deps += [ "//device/usb" ]
}
if (use_alsa && use_udev) {
deps += [
"//crypto",
"//crypto:platform",
]
libs += [ "asound" ]
sources += [
"midi_manager_alsa.cc",
"midi_manager_alsa.h",
]
}
if (use_udev) {
deps += [ "//device/udev_linux" ]
}
}
test("midi_unittests") {
sources = [
"midi_manager_unittest.cc",
"midi_manager_usb_unittest.cc",
"midi_message_queue_unittest.cc",
"midi_message_util_unittest.cc",
"usb_midi_descriptor_parser_unittest.cc",
"usb_midi_input_stream_unittest.cc",
"usb_midi_output_stream_unittest.cc",
]
configs += [ ":midi_config" ]
deps = [
":midi",
"//base/test/:run_all_unittests",
"//base/test/:test_support",
"//testing/gtest",
]
if (!is_android) {
deps += [ ":usb_midi" ]
}
if (is_mac) {
sources += [ "midi_manager_mac_unittest.cc" ]
}
if (use_alsa && use_udev) {
sources += [ "midi_manager_alsa_unittest.cc" ]
}
if (use_x11) {
deps += [ "//tools/xdisplaycheck" ]
}
}

@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.media; package org.chromium.media.midi;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbConstants;
@@ -28,7 +28,7 @@ import java.util.Map;
* Owned by its native counterpart declared in usb_midi_device_android.h. * Owned by its native counterpart declared in usb_midi_device_android.h.
* Refer to that class for general comments. * Refer to that class for general comments.
*/ */
@JNINamespace("media") @JNINamespace("media::midi")
class UsbMidiDeviceAndroid { class UsbMidiDeviceAndroid {
/** /**
* A connection handle for this device. * A connection handle for this device.
@@ -184,14 +184,14 @@ class UsbMidiDeviceAndroid {
*/ */
private void postOnDataEvent(final int endpointNumber, final byte[] bs) { private void postOnDataEvent(final int endpointNumber, final byte[] bs) {
mHandler.post(new Runnable() { mHandler.post(new Runnable() {
@Override @Override
public void run() { public void run() {
if (mIsClosed) { if (mIsClosed) {
return; return;
}
nativeOnData(mNativePointer, endpointNumber, bs);
} }
}); nativeOnData(mNativePointer, endpointNumber, bs);
}
});
} }
UsbDevice getUsbDevice() { UsbDevice getUsbDevice() {
@@ -321,7 +321,6 @@ class UsbMidiDeviceAndroid {
return position; return position;
} }
private static native void nativeOnData(long nativeUsbMidiDeviceAndroid, private static native void nativeOnData(
int endpointNumber, long nativeUsbMidiDeviceAndroid, int endpointNumber, byte[] data);
byte[] data);
} }

@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.media; package org.chromium.media.midi;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@@ -28,7 +28,7 @@ import java.util.Set;
* Owned by its native counterpart declared in * Owned by its native counterpart declared in
* usb_midi_device_factory_android.h. Refer to that class for general comments. * usb_midi_device_factory_android.h. Refer to that class for general comments.
*/ */
@JNINamespace("media") @JNINamespace("media::midi")
class UsbMidiDeviceFactoryAndroid { class UsbMidiDeviceFactoryAndroid {
/** /**
* The UsbManager of this system. * The UsbManager of this system.
@@ -60,8 +60,7 @@ class UsbMidiDeviceFactoryAndroid {
*/ */
private long mNativePointer; private long mNativePointer;
private static final String ACTION_USB_PERMISSION = private static final String ACTION_USB_PERMISSION = "org.chromium.media.USB_PERMISSION";
"org.chromium.media.USB_PERMISSION";
/** /**
* Constructs a UsbMidiDeviceAndroid. * Constructs a UsbMidiDeviceAndroid.
@@ -125,7 +124,7 @@ class UsbMidiDeviceFactoryAndroid {
mIsEnumeratingDevices = false; mIsEnumeratingDevices = false;
return false; return false;
} }
for (UsbDevice device: devices.values()) { for (UsbDevice device : devices.values()) {
requestDevicePermissionIfNecessary(context, device); requestDevicePermissionIfNecessary(context, device);
} }
return true; return true;
@@ -138,7 +137,7 @@ class UsbMidiDeviceFactoryAndroid {
* @param device a USB device * @param device a USB device
*/ */
private void requestDevicePermissionIfNecessary(Context context, UsbDevice device) { private void requestDevicePermissionIfNecessary(Context context, UsbDevice device) {
for (UsbDevice d: mRequestedDevices) { for (UsbDevice d : mRequestedDevices) {
if (d.getDeviceId() == device.getDeviceId()) { if (d.getDeviceId() == device.getDeviceId()) {
// It is already requested. // It is already requested.
return; return;
@@ -150,8 +149,9 @@ class UsbMidiDeviceFactoryAndroid {
if (iface.getInterfaceClass() == UsbConstants.USB_CLASS_AUDIO if (iface.getInterfaceClass() == UsbConstants.USB_CLASS_AUDIO
&& iface.getInterfaceSubclass() == UsbMidiDeviceAndroid.MIDI_SUBCLASS) { && iface.getInterfaceSubclass() == UsbMidiDeviceAndroid.MIDI_SUBCLASS) {
// There is at least one interface supporting MIDI. // There is at least one interface supporting MIDI.
mUsbManager.requestPermission(device, PendingIntent.getBroadcast( mUsbManager.requestPermission(
context, 0, new Intent(ACTION_USB_PERMISSION), 0)); device, PendingIntent.getBroadcast(
context, 0, new Intent(ACTION_USB_PERMISSION), 0));
mRequestedDevices.add(device); mRequestedDevices.add(device);
break; break;
} }
@@ -164,7 +164,7 @@ class UsbMidiDeviceFactoryAndroid {
* @param device a USB device * @param device a USB device
*/ */
private void onUsbDeviceDetached(UsbDevice device) { private void onUsbDeviceDetached(UsbDevice device) {
for (UsbDevice usbDevice: mRequestedDevices) { for (UsbDevice usbDevice : mRequestedDevices) {
if (usbDevice.getDeviceId() == device.getDeviceId()) { if (usbDevice.getDeviceId() == device.getDeviceId()) {
mRequestedDevices.remove(usbDevice); mRequestedDevices.remove(usbDevice);
break; break;
@@ -214,7 +214,7 @@ class UsbMidiDeviceFactoryAndroid {
} }
if (device != null) { if (device != null) {
for (UsbMidiDeviceAndroid registered: mDevices) { for (UsbMidiDeviceAndroid registered : mDevices) {
if (!registered.isClosed() if (!registered.isClosed()
&& registered.getUsbDevice().getDeviceId() == device.getDeviceId()) { && registered.getUsbDevice().getDeviceId() == device.getDeviceId()) {
// The device is already registered. // The device is already registered.

235
media/midi/midi.gyp Normal file

@@ -0,0 +1,235 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'variables': {
'chromium_code': 1,
'conditions': [
['(OS=="linux" or OS=="freebsd" or OS=="solaris") and (embedded!=1 or (chromecast==1 and target_arch!="arm"))', {
'use_alsa%': 1,
}, {
'use_alsa%': 0,
}],
],
# Source files that are used in production code for Android, and in tests
# for others.
'usb_midi_sources': [
'midi_manager_usb.cc',
'midi_manager_usb.h',
'usb_midi_descriptor_parser.cc',
'usb_midi_descriptor_parser.h',
'usb_midi_device.h',
'usb_midi_input_stream.cc',
'usb_midi_input_stream.h',
'usb_midi_jack.h',
'usb_midi_output_stream.cc',
'usb_midi_output_stream.h',
],
},
'targets': [
{
# GN version: //media/midi
'target_name': 'midi',
'type': '<(component)',
'dependencies': [
'../../base/base.gyp:base',
],
'defines': [
'MEDIA_IMPLEMENTATION',
],
'include_dirs': [
'../..',
],
'sources': [
'midi_manager.cc',
'midi_manager.h',
'midi_manager_android.cc',
'midi_manager_mac.cc',
'midi_manager_mac.h',
'midi_manager_win.cc',
'midi_manager_win.h',
'midi_message_queue.cc',
'midi_message_queue.h',
'midi_message_util.cc',
'midi_message_util.h',
'midi_port_info.cc',
'midi_port_info.h',
'midi_scheduler.cc',
'midi_scheduler.h',
'usb_midi_device_android.cc',
'usb_midi_device_android.h',
'usb_midi_device_factory_android.cc',
'usb_midi_device_factory_android.h',
],
'direct_dependent_settings': {
'include_dirs': [
'../..',
],
},
'conditions': [
['use_alsa==1 and use_udev==1', {
'dependencies': [
'../../crypto/crypto.gyp:crypto',
'../../device/udev_linux/udev.gyp:udev_linux',
],
'defines': [
'USE_ALSA',
'USE_UDEV',
],
'sources': [
'midi_manager_alsa.cc',
'midi_manager_alsa.h',
],
'link_settings': {
'libraries': [
'-lasound',
],
},
}],
['OS=="android"', {
'dependencies': [
'../../base/base.gyp:base_i18n',
'midi_jni_headers',
'midi_java',
],
'sources': [
'<@(usb_midi_sources)',
'midi_jni_registrar.cc',
'midi_jni_registrar.h',
],
}],
['OS=="mac"', {
'link_settings': {
'libraries': [
'$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreMIDI.framework',
],
},
}],
['OS=="win"', {
'dependencies': [
'../../device/usb/usb.gyp:device_usb',
],
}],
], # conditions
},
{
# GN version: //media/midi:midi_unittests
'target_name': 'midi_unittests',
'type': '<(gtest_target_type)',
'dependencies': [
'midi',
'../../base/base.gyp:base',
'../../base/base.gyp:run_all_unittests',
'../../testing/gtest.gyp:gtest',
],
'defines': [
'MEDIA_IMPLEMENTATION',
],
'include_dirs': [
'../..',
],
'sources': [
'midi_manager_unittest.cc',
'midi_manager_usb_unittest.cc',
'midi_message_queue_unittest.cc',
'midi_message_util_unittest.cc',
'usb_midi_descriptor_parser_unittest.cc',
'usb_midi_input_stream_unittest.cc',
'usb_midi_output_stream_unittest.cc',
],
'conditions': [
['use_alsa==1 and use_udev==1', {
'defines': [
'USE_ALSA',
'USE_UDEV',
],
'sources': [
'midi_manager_alsa_unittest.cc',
],
}],
['use_x11==1', {
'dependencies': [
'../../tools/xdisplaycheck/xdisplaycheck.gyp:xdisplaycheck',
],
}],
['OS=="android"', {
'dependencies': [
'../../testing/android/native_test.gyp:native_test_native_code',
],
}, {
'sources': [
'<@(usb_midi_sources)',
],
}],
['OS=="mac"', {
'sources': [
'midi_manager_mac_unittest.cc',
],
}],
],
},
],
'conditions': [
['OS=="android"', {
'targets': [
{
# TODO(GN)
'target_name': 'midi_unittests_apk',
'type': 'none',
'dependencies': [
'midi_java',
'midi_unittests',
],
'variables': {
'test_suite_name': 'midi_unittests',
},
'includes': ['../../build/apk_test.gypi'],
},
{
# GN: //media/midi:midi_java
'target_name': 'midi_java',
'type': 'none',
'dependencies': [
'../../base/base.gyp:base',
],
'variables': {
'java_in_dir': 'java',
},
'includes': ['../../build/java.gypi' ],
},
{
# GN: //media/midi:midi_jni_headers
'target_name': 'midi_jni_headers',
'type': 'none',
'sources': [
'java/src/org/chromium/media/midi/UsbMidiDeviceAndroid.java',
'java/src/org/chromium/media/midi/UsbMidiDeviceFactoryAndroid.java',
],
'variables': {
'jni_gen_package': 'media/midi',
},
'includes': ['../../build/jni_generator.gypi'],
},
],
}],
['test_isolation_mode != "noop"', {
'targets': [
{
'target_name': 'midi_unittests_run',
'type': 'none',
'dependencies': [
'midi_unittests',
],
'includes': [
'../../build/isolate.gypi',
],
'sources': [
'midi_unittests.isolate',
],
},
],
}],
],
}

@@ -0,0 +1,29 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/midi/midi_jni_registrar.h"
#include "base/android/jni_android.h"
#include "base/android/jni_registrar.h"
#include "base/basictypes.h"
#include "media/midi/usb_midi_device_android.h"
#include "media/midi/usb_midi_device_factory_android.h"
namespace media {
namespace midi {
static base::android::RegistrationMethod kMediaRegisteredMethods[] = {
{"UsbMidiDevice", UsbMidiDeviceAndroid::RegisterUsbMidiDevice},
{"UsbMidiDeviceFactory",
UsbMidiDeviceFactoryAndroid::RegisterUsbMidiDeviceFactory},
};
bool RegisterJni(JNIEnv* env) {
return base::android::RegisterNativeMethods(
env, kMediaRegisteredMethods, arraysize(kMediaRegisteredMethods));
}
} // namespace midi
} // namespace media

@@ -0,0 +1,21 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MEDIA_MIDI_MIDI_JNI_REGISTRAR_H_
#define MEDIA_MIDI_MIDI_JNI_REGISTRAR_H_
#include <jni.h>
#include "media/base/media_export.h"
namespace media {
namespace midi {
// Register all JNI bindings necessary for media/midi.
MEDIA_EXPORT bool RegisterJni(JNIEnv* env);
} // namespace midi
} // namespace media
#endif // MEDIA_MIDI_MIDI_JNI_REGISTRAR_H_

@@ -74,7 +74,7 @@ void MidiManagerUsb::ReceiveUsbMidiData(UsbMidiDevice* device,
} }
void MidiManagerUsb::OnDeviceAttached(scoped_ptr<UsbMidiDevice> device) { void MidiManagerUsb::OnDeviceAttached(scoped_ptr<UsbMidiDevice> device) {
int device_id = devices_.size(); int device_id = static_cast<int>(devices_.size());
devices_.push_back(device.release()); devices_.push_back(device.release());
AddPorts(devices_.back(), device_id); AddPorts(devices_.back(), device_id);
} }
@@ -86,13 +86,13 @@ void MidiManagerUsb::OnDeviceDetached(size_t index) {
UsbMidiDevice* device = devices_[index]; UsbMidiDevice* device = devices_[index];
for (size_t i = 0; i < output_streams_.size(); ++i) { for (size_t i = 0; i < output_streams_.size(); ++i) {
if (output_streams_[i]->jack().device == device) { if (output_streams_[i]->jack().device == device) {
SetOutputPortState(i, MIDI_PORT_DISCONNECTED); SetOutputPortState(static_cast<uint32>(i), MIDI_PORT_DISCONNECTED);
} }
} }
const std::vector<UsbMidiJack>& input_jacks = input_stream_->jacks(); const std::vector<UsbMidiJack>& input_jacks = input_stream_->jacks();
for (size_t i = 0; i < input_jacks.size(); ++i) { for (size_t i = 0; i < input_jacks.size(); ++i) {
if (input_jacks[i].device == device) { if (input_jacks[i].device == device) {
SetInputPortState(i, MIDI_PORT_DISCONNECTED); SetInputPortState(static_cast<uint32>(i), MIDI_PORT_DISCONNECTED);
} }
} }
} }
@@ -101,7 +101,7 @@ void MidiManagerUsb::OnReceivedData(size_t jack_index,
const uint8* data, const uint8* data,
size_t size, size_t size,
base::TimeTicks time) { base::TimeTicks time) {
ReceiveMidiData(jack_index, data, size, time); ReceiveMidiData(static_cast<uint32>(jack_index), data, size, time);
} }
@@ -114,7 +114,7 @@ void MidiManagerUsb::OnEnumerateDevicesDone(bool result,
input_stream_.reset(new UsbMidiInputStream(this)); input_stream_.reset(new UsbMidiInputStream(this));
devices->swap(devices_); devices->swap(devices_);
for (size_t i = 0; i < devices_.size(); ++i) { for (size_t i = 0; i < devices_.size(); ++i) {
if (!AddPorts(devices_[i], i)) { if (!AddPorts(devices_[i], static_cast<int>(i))) {
initialize_callback_.Run(MIDI_INITIALIZATION_ERROR); initialize_callback_.Run(MIDI_INITIALIZATION_ERROR);
return; return;
} }

@@ -101,7 +101,7 @@ ScopedMIDIHDR CreateMIDIHDR(size_t size) {
ScopedMIDIHDR header(new MIDIHDR); ScopedMIDIHDR header(new MIDIHDR);
ZeroMemory(header.get(), sizeof(*header)); ZeroMemory(header.get(), sizeof(*header));
header->lpData = new char[size]; header->lpData = new char[size];
header->dwBufferLength = size; header->dwBufferLength = static_cast<DWORD>(size);
return header.Pass(); return header.Pass();
} }
@@ -619,7 +619,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
base::AutoLock auto_lock(input_ports_lock_); base::AutoLock auto_lock(input_ports_lock_);
const auto it = unused_input_ports_.find(state_device_info); const auto it = unused_input_ports_.find(state_device_info);
if (it == unused_input_ports_.end()) { if (it == unused_input_ports_.end()) {
port_number = input_ports_.size(); port_number = static_cast<uint32>(input_ports_.size());
add_new_port = true; add_new_port = true;
input_ports_.push_back(nullptr); input_ports_.push_back(nullptr);
input_ports_ages_.push_back(0); input_ports_ages_.push_back(0);
@@ -800,7 +800,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
base::AutoLock auto_lock(output_ports_lock_); base::AutoLock auto_lock(output_ports_lock_);
const auto it = unused_output_ports_.find(state_device_info); const auto it = unused_output_ports_.find(state_device_info);
if (it == unused_output_ports_.end()) { if (it == unused_output_ports_.end()) {
port_number = output_ports_.size(); port_number = static_cast<uint32>(output_ports_.size());
add_new_port = true; add_new_port = true;
output_ports_.push_back(nullptr); output_ports_.push_back(nullptr);
output_ports_ages_.push_back(0); output_ports_ages_.push_back(0);

@@ -7,6 +7,7 @@
#include "base/callback.h" #include "base/callback.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "media/base/media_export.h"
namespace media { namespace media {
@@ -14,7 +15,7 @@ class MidiManager;
class MidiManagerClient; class MidiManagerClient;
// TODO(crbug.com/467442): Make tasks cancelable per client. // TODO(crbug.com/467442): Make tasks cancelable per client.
class MidiScheduler final { class MEDIA_EXPORT MidiScheduler final {
public: public:
explicit MidiScheduler(MidiManager* manager); explicit MidiScheduler(MidiManager* manager);
~MidiScheduler(); ~MidiScheduler();

@@ -0,0 +1,63 @@
# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'includes': [
'../../base/base.isolate',
],
'conditions': [
['use_x11==0', {
'variables': {
'command': [
'../../testing/test_env.py',
'<(PRODUCT_DIR)/midi_unittests<(EXECUTABLE_SUFFIX)',
'--brave-new-test-launcher',
'--test-launcher-bot-mode',
'--asan=<(asan)',
'--msan=<(msan)',
'--tsan=<(tsan)',
],
},
}],
['use_x11==1', {
'variables': {
'command': [
'../../testing/xvfb.py',
'<(PRODUCT_DIR)',
'<(PRODUCT_DIR)/midi_unittests',
'--brave-new-test-launcher',
'--test-launcher-bot-mode',
'--asan=<(asan)',
'--msan=<(msan)',
'--tsan=<(tsan)',
],
'files': [
'../../testing/xvfb.py',
'<(PRODUCT_DIR)/xdisplaycheck',
],
},
}],
['OS=="linux" or OS=="mac" or OS=="win"', {
'variables': {
'files': [
'../../testing/test_env.py',
'<(PRODUCT_DIR)/midi_unittests<(EXECUTABLE_SUFFIX)',
],
},
}],
['OS=="mac" and asan==1 and fastbuild==0', {
'variables': {
'files': [
'<(PRODUCT_DIR)/midi_unittests.dSYM/',
],
},
}],
['OS=="win" and (fastbuild==0 or fastbuild==1)', {
'variables': {
'files': [
'<(PRODUCT_DIR)/midi_unittests.exe.pdb',
],
},
}],
],
}

@@ -20,8 +20,8 @@ UsbMidiDeviceAndroid::UsbMidiDeviceAndroid(ObjectRef raw_device,
UsbMidiDeviceDelegate* delegate) UsbMidiDeviceDelegate* delegate)
: raw_device_(raw_device), delegate_(delegate) { : raw_device_(raw_device), delegate_(delegate) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
Java_UsbMidiDeviceAndroid_registerSelf( midi::Java_UsbMidiDeviceAndroid_registerSelf(env, raw_device_.obj(),
env, raw_device_.obj(), reinterpret_cast<jlong>(this)); reinterpret_cast<jlong>(this));
GetDescriptorsInternal(); GetDescriptorsInternal();
InitDeviceInfo(); InitDeviceInfo();
@@ -29,7 +29,7 @@ UsbMidiDeviceAndroid::UsbMidiDeviceAndroid(ObjectRef raw_device,
UsbMidiDeviceAndroid::~UsbMidiDeviceAndroid() { UsbMidiDeviceAndroid::~UsbMidiDeviceAndroid() {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
Java_UsbMidiDeviceAndroid_close(env, raw_device_.obj()); midi::Java_UsbMidiDeviceAndroid_close(env, raw_device_.obj());
} }
std::vector<uint8> UsbMidiDeviceAndroid::GetDescriptors() { std::vector<uint8> UsbMidiDeviceAndroid::GetDescriptors() {
@@ -55,8 +55,8 @@ void UsbMidiDeviceAndroid::Send(int endpoint_number,
ScopedJavaLocalRef<jbyteArray> data_to_pass = ScopedJavaLocalRef<jbyteArray> data_to_pass =
base::android::ToJavaByteArray(env, head, data.size()); base::android::ToJavaByteArray(env, head, data.size());
Java_UsbMidiDeviceAndroid_send( midi::Java_UsbMidiDeviceAndroid_send(env, raw_device_.obj(), endpoint_number,
env, raw_device_.obj(), endpoint_number, data_to_pass.obj()); data_to_pass.obj());
} }
void UsbMidiDeviceAndroid::OnData(JNIEnv* env, void UsbMidiDeviceAndroid::OnData(JNIEnv* env,
@@ -72,13 +72,13 @@ void UsbMidiDeviceAndroid::OnData(JNIEnv* env,
} }
bool UsbMidiDeviceAndroid::RegisterUsbMidiDevice(JNIEnv* env) { bool UsbMidiDeviceAndroid::RegisterUsbMidiDevice(JNIEnv* env) {
return RegisterNativesImpl(env); return midi::RegisterNativesImpl(env);
} }
void UsbMidiDeviceAndroid::GetDescriptorsInternal() { void UsbMidiDeviceAndroid::GetDescriptorsInternal() {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
base::android::ScopedJavaLocalRef<jbyteArray> descriptors = base::android::ScopedJavaLocalRef<jbyteArray> descriptors =
Java_UsbMidiDeviceAndroid_getDescriptors(env, raw_device_.obj()); midi::Java_UsbMidiDeviceAndroid_getDescriptors(env, raw_device_.obj());
base::android::JavaByteArrayToByteVector(env, descriptors.obj(), base::android::JavaByteArrayToByteVector(env, descriptors.obj(),
&descriptors_); &descriptors_);
@@ -111,8 +111,8 @@ void UsbMidiDeviceAndroid::InitDeviceInfo() {
std::vector<uint8> UsbMidiDeviceAndroid::GetStringDescriptor(int index) { std::vector<uint8> UsbMidiDeviceAndroid::GetStringDescriptor(int index) {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
base::android::ScopedJavaLocalRef<jbyteArray> descriptors = base::android::ScopedJavaLocalRef<jbyteArray> descriptors =
Java_UsbMidiDeviceAndroid_getStringDescriptor(env, raw_device_.obj(), midi::Java_UsbMidiDeviceAndroid_getStringDescriptor(
index); env, raw_device_.obj(), index);
std::vector<uint8> ret; std::vector<uint8> ret;
base::android::JavaByteArrayToByteVector(env, descriptors.obj(), &ret); base::android::JavaByteArrayToByteVector(env, descriptors.obj(), &ret);

@@ -30,7 +30,7 @@ UsbMidiDeviceFactoryAndroid::UsbMidiDeviceFactoryAndroid() : delegate_(NULL) {}
UsbMidiDeviceFactoryAndroid::~UsbMidiDeviceFactoryAndroid() { UsbMidiDeviceFactoryAndroid::~UsbMidiDeviceFactoryAndroid() {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
if (!raw_factory_.is_null()) if (!raw_factory_.is_null())
Java_UsbMidiDeviceFactoryAndroid_close( midi::Java_UsbMidiDeviceFactoryAndroid_close(
env, raw_factory_.obj(), base::android::GetApplicationContext()); env, raw_factory_.obj(), base::android::GetApplicationContext());
} }
@@ -40,13 +40,13 @@ void UsbMidiDeviceFactoryAndroid::EnumerateDevices(
DCHECK(!delegate_); DCHECK(!delegate_);
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
uintptr_t pointer = reinterpret_cast<uintptr_t>(this); uintptr_t pointer = reinterpret_cast<uintptr_t>(this);
raw_factory_.Reset(Java_UsbMidiDeviceFactoryAndroid_create( raw_factory_.Reset(midi::Java_UsbMidiDeviceFactoryAndroid_create(
env, base::android::GetApplicationContext(), pointer)); env, base::android::GetApplicationContext(), pointer));
delegate_ = delegate; delegate_ = delegate;
callback_ = callback; callback_ = callback;
if (Java_UsbMidiDeviceFactoryAndroid_enumerateDevices( if (midi::Java_UsbMidiDeviceFactoryAndroid_enumerateDevices(
env, raw_factory_.obj(), base::android::GetApplicationContext())) { env, raw_factory_.obj(), base::android::GetApplicationContext())) {
// Asynchronous operation. // Asynchronous operation.
return; return;
@@ -92,7 +92,7 @@ void UsbMidiDeviceFactoryAndroid::OnUsbMidiDeviceDetached(
} }
bool UsbMidiDeviceFactoryAndroid::RegisterUsbMidiDeviceFactory(JNIEnv* env) { bool UsbMidiDeviceFactoryAndroid::RegisterUsbMidiDeviceFactory(JNIEnv* env) {
return RegisterNativesImpl(env); return midi::RegisterNativesImpl(env);
} }
} // namespace media } // namespace media

@@ -98,7 +98,7 @@ bool UsbMidiOutputStream::PushSysExMessage(const std::vector<uint8>& data,
message[message_size] = byte; message[message_size] = byte;
++message_size; ++message_size;
if (byte == kEndOfSysExByte) { if (byte == kEndOfSysExByte) {
uint8 code_index = message_size + 0x4; uint8 code_index = static_cast<uint8>(message_size) + 0x4;
DCHECK(code_index == 0x5 || code_index == 0x6 || code_index == 0x7); DCHECK(code_index == 0x5 || code_index == 0x6 || code_index == 0x7);
data_to_send->push_back((jack_.cable_number << 4) | code_index); data_to_send->push_back((jack_.cable_number << 4) | code_index);
data_to_send->insert(data_to_send->end(), data_to_send->insert(data_to_send->end(),

@@ -216,6 +216,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },
@@ -401,6 +404,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },
@@ -582,6 +588,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },

@@ -52,6 +52,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "net_unittests" "test": "net_unittests"
}, },
@@ -137,6 +140,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
@@ -305,6 +311,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -466,6 +475,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true, "can_use_on_swarming_builders": true,
@@ -577,6 +589,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -715,6 +730,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -853,6 +871,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "net_unittests" "test": "net_unittests"
}, },
@@ -965,6 +986,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "net_unittests" "test": "net_unittests"
}, },
@@ -1084,6 +1108,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1209,6 +1236,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1334,6 +1364,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1459,6 +1492,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1584,6 +1620,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1709,6 +1748,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1834,6 +1876,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -1986,6 +2031,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -2151,6 +2199,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -2322,6 +2373,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -2487,6 +2541,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },

@@ -381,6 +381,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -635,6 +641,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -879,6 +891,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },

@@ -189,6 +189,12 @@
}, },
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -388,6 +394,12 @@
}, },
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -587,6 +599,12 @@
}, },
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -787,6 +805,12 @@
}, },
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },

@@ -102,6 +102,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -266,6 +269,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -426,6 +432,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },

@@ -90,6 +90,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true, "can_use_on_swarming_builders": true,
@@ -265,6 +268,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },
@@ -391,6 +397,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true
@@ -495,6 +504,9 @@
{ {
"test": "media_unittests" "test": "media_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true "can_use_on_swarming_builders": true

@@ -134,6 +134,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },
@@ -309,6 +312,9 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },

@@ -129,6 +129,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -370,6 +376,12 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -748,6 +760,12 @@
{ {
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -976,6 +994,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "mojo_common_unittests" "test": "mojo_common_unittests"
}, },
@@ -1361,6 +1385,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"test": "nacl_loader_unittests" "test": "nacl_loader_unittests"
}, },

@@ -83,6 +83,12 @@
}, },
"test": "media_unittests" "test": "media_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
{ {
"swarming": { "swarming": {
"can_use_on_swarming_builders": true, "can_use_on_swarming_builders": true,

@@ -213,6 +213,12 @@
}, },
"test": "message_center_unittests" "test": "message_center_unittests"
}, },
{
"swarming": {
"can_use_on_swarming_builders": true
},
"test": "midi_unittests"
},
"mojo_common_unittests", "mojo_common_unittests",
"mojo_public_bindings_unittests", "mojo_public_bindings_unittests",
"mojo_public_environment_unittests", "mojo_public_environment_unittests",

@@ -401,6 +401,9 @@ class ChromeTests:
def TestMessageCenter(self): def TestMessageCenter(self):
return self.SimpleTest("message_center", "message_center_unittests") return self.SimpleTest("message_center", "message_center_unittests")
def TestMidi(self):
return self.SimpleTest("chrome", "midi_unittests")
def TestMojoCommon(self): def TestMojoCommon(self):
return self.SimpleTest("mojo_common", "mojo_common_unittests") return self.SimpleTest("mojo_common", "mojo_common_unittests")
@@ -696,6 +699,7 @@ class ChromeTests:
"media": TestMedia, "media_unittests": TestMedia, "media": TestMedia, "media_unittests": TestMedia,
"message_center": TestMessageCenter, "message_center": TestMessageCenter,
"message_center_unittests" : TestMessageCenter, "message_center_unittests" : TestMessageCenter,
"midi": TestMidi, "midi_unittests": TestMidi,
"mojo_common": TestMojoCommon, "mojo_common": TestMojoCommon,
"mojo_system": TestMojoSystem, "mojo_system": TestMojoSystem,
"mojo_public_system": TestMojoPublicSystem, "mojo_public_system": TestMojoPublicSystem,