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",
"//media:media_unittests",
"//media/cast:cast_unittests",
"//media/midi:midi_unittests",
"//mojo",
"//mojo/application",
"//mojo/common:mojo_common_unittests",
@ -740,8 +741,9 @@ if (is_linux) {
"//ipc:ipc_tests", # PASSES 2/25/2015
"//ipc/mojo:ipc_mojo_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/cast:cast_unittests", # PASSES 2/25/2015
"//media/midi:midi_unittests", # PASSES 4/10/2015
"//mojo/common:mojo_common_unittests", # PASSES 2/25/2015
"//net:net_unittests", # PASSES 2/25/2015
"//ppapi:ppapi_unittests", # PASSES 2/26/2015

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

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

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

@ -37,6 +37,7 @@ ISOLATE_FILE_PATHS = {
'content_unittests': 'content/content_unittests.isolate',
'media_perftests': 'media/media_perftests.isolate',
'media_unittests': 'media/media_unittests.isolate',
'midi_unittests': 'media/midi/midi_unittests.isolate',
'net_unittests': 'net/net_unittests.isolate',
'sql_unittests': 'sql/sql_unittests.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:media_perftests',
'../media/media.gyp:media_unittests',
'../media/midi/midi.gyp:midi_unittests',
'../media/cast/cast.gyp:cast_benchmarks',
'../media/cast/cast.gyp:cast_unittests',
'../media/cast/cast.gyp:generate_barcode_video',
@ -526,6 +527,7 @@
'../gpu/gpu.gyp:gpu_unittests_run',
'../media/cast/cast.gyp:cast_unittests_run',
'../media/media.gyp:media_unittests_run',
'../media/midi/midi.gyp:midi_unittests_run',
'../net/net.gyp:net_unittests_run',
'../sql/sql.gyp:sql_unittests_run',
'../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests_run',

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

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

@ -24,6 +24,7 @@
#include "content/public/common/result_codes.h"
#include "device/vibration/android/vibration_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 "ui/android/ui_android_jni_registrar.h"
#include "ui/base/android/ui_base_jni_registrar.h"
@ -70,6 +71,9 @@ bool EnsureJniRegistered(JNIEnv* env) {
if (!media::RegisterJni(env))
return false;
if (!media::midi::RegisterJni(env))
return false;
if (!ui::RegisterUIAndroidJni(env))
return false;

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

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

@ -869,6 +869,7 @@
'../ipc/mojo/ipc_mojo.gyp:*',
'../media/blink/media_blink.gyp:media_blink',
'../media/media.gyp:media',
'../media/midi/midi.gyp:midi',
'../ppapi/ppapi_internal.gyp:ppapi_host',
'../ppapi/ppapi_internal.gyp:ppapi_proxy',
'../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/audio:test_support",
"//media/base:test_support",
"//media/midi:midi",
"//storage/browser",
"//storage/common",
"//third_party/WebKit/public:blink",

@ -32,9 +32,6 @@ config("media_config") {
if (use_cras) {
defines += [ "USE_CRAS" ]
}
if (use_alsa) {
defines += [ "USE_ALSA" ]
}
}
config("media_implementation") {
@ -178,30 +175,6 @@ component("media") {
"formats/webm/webm_video_client.h",
"formats/webm/webm_webvtt_parser.cc",
"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.h",
"renderers/gpu_video_accelerator_factories.h",
@ -337,11 +310,6 @@ component("media") {
if (is_android) {
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.h",
"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.
if (use_ozone) {
@ -402,7 +361,6 @@ component("media") {
"//third_party/decklink",
]
libs += [
"CoreMIDI.framework",
"CoreVideo.framework",
"OpenGL.framework",
"QTKit.framework",
@ -421,8 +379,6 @@ component("media") {
}
if (is_win) {
deps += [ "//device/usb" ]
libs += [
"mf.lib",
"mfplat.lib",
@ -575,13 +531,6 @@ test("media_unittests") {
"formats/webm/webm_parser_unittest.cc",
"formats/webm/webm_tracks_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/renderer_impl_unittest.cc",
"renderers/video_renderer_impl_unittest.cc",
@ -669,18 +618,8 @@ test("media_unittests") {
}
if (is_mac) {
sources += [
"midi/midi_manager_mac_unittest.cc",
"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" ]
sources +=
[ "video/capture/mac/video_capture_device_factory_mac_unittest.mm" ]
}
# include_dirs += [

@ -6,10 +6,5 @@ scherkus@chromium.org
wolenetz@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=maruel@chromium.org

@ -87,8 +87,6 @@ generate_jni("media_jni_headers") {
"java/src/org/chromium/media/MediaDrmBridge.java",
"java/src/org/chromium/media/MediaPlayerBridge.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",
]
jni_package = "media"

@ -15,8 +15,6 @@
#include "media/base/android/media_player_bridge.h"
#include "media/base/android/media_player_listener.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_factory_android.h"
@ -35,10 +33,6 @@ static base::android::RegistrationMethod kMediaRegisteredMethods[] = {
MediaPlayerBridge::RegisterMediaPlayerBridge },
{ "MediaPlayerListener",
MediaPlayerListener::RegisterMediaPlayerListener },
{ "UsbMidiDevice",
UsbMidiDeviceAndroid::RegisterUsbMidiDevice },
{ "UsbMidiDeviceFactory",
UsbMidiDeviceFactoryAndroid::RegisterUsbMidiDeviceFactory },
{ "VideoCaptureDevice",
VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice },
{ "VideoCaptureDeviceFactory",

@ -512,37 +512,6 @@
'formats/webm/webm_video_client.cc',
'formats/webm/webm_video_client.h',
'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.h',
'renderers/audio_renderer_impl.cc',
@ -956,7 +925,6 @@
'$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
'$(SDKROOT)/System/Library/Frameworks/AudioUnit.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreMIDI.framework',
'$(SDKROOT)/System/Library/Frameworks/CoreVideo.framework',
'$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
'$(SDKROOT)/System/Library/Frameworks/QTKit.framework',
@ -964,9 +932,6 @@
},
}],
['OS=="win"', {
'dependencies': [
'../device/usb/usb.gyp:device_usb',
],
'link_settings': {
'libraries': [
'-lmf.lib',
@ -1093,16 +1058,6 @@
'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
'target_conditions': [
['OS == "ios" and _toolset != "host"', {
@ -1274,13 +1229,6 @@
'formats/webm/webm_parser_unittest.cc',
'formats/webm/webm_tracks_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/renderer_impl_unittest.cc',
'renderers/video_renderer_impl_unittest.cc',
@ -1413,15 +1361,9 @@
}],
['OS=="mac"', {
'sources': [
'midi/midi_manager_mac_unittest.cc',
'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', {
'dependencies': [
'../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/MediaPlayerBridge.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',
],
'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
// found in the LICENSE file.
package org.chromium.media;
package org.chromium.media.midi;
import android.annotation.TargetApi;
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.
* Refer to that class for general comments.
*/
@JNINamespace("media")
@JNINamespace("media::midi")
class UsbMidiDeviceAndroid {
/**
* A connection handle for this device.
@ -184,14 +184,14 @@ class UsbMidiDeviceAndroid {
*/
private void postOnDataEvent(final int endpointNumber, final byte[] bs) {
mHandler.post(new Runnable() {
@Override
public void run() {
if (mIsClosed) {
return;
}
nativeOnData(mNativePointer, endpointNumber, bs);
@Override
public void run() {
if (mIsClosed) {
return;
}
});
nativeOnData(mNativePointer, endpointNumber, bs);
}
});
}
UsbDevice getUsbDevice() {
@ -321,7 +321,6 @@ class UsbMidiDeviceAndroid {
return position;
}
private static native void nativeOnData(long nativeUsbMidiDeviceAndroid,
int endpointNumber,
byte[] data);
private static native void nativeOnData(
long nativeUsbMidiDeviceAndroid, int endpointNumber, byte[] data);
}

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

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

@ -7,6 +7,7 @@
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "media/base/media_export.h"
namespace media {
@ -14,7 +15,7 @@ class MidiManager;
class MidiManagerClient;
// TODO(crbug.com/467442): Make tasks cancelable per client.
class MidiScheduler final {
class MEDIA_EXPORT MidiScheduler final {
public:
explicit MidiScheduler(MidiManager* manager);
~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)
: raw_device_(raw_device), delegate_(delegate) {
JNIEnv* env = base::android::AttachCurrentThread();
Java_UsbMidiDeviceAndroid_registerSelf(
env, raw_device_.obj(), reinterpret_cast<jlong>(this));
midi::Java_UsbMidiDeviceAndroid_registerSelf(env, raw_device_.obj(),
reinterpret_cast<jlong>(this));
GetDescriptorsInternal();
InitDeviceInfo();
@ -29,7 +29,7 @@ UsbMidiDeviceAndroid::UsbMidiDeviceAndroid(ObjectRef raw_device,
UsbMidiDeviceAndroid::~UsbMidiDeviceAndroid() {
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() {
@ -55,8 +55,8 @@ void UsbMidiDeviceAndroid::Send(int endpoint_number,
ScopedJavaLocalRef<jbyteArray> data_to_pass =
base::android::ToJavaByteArray(env, head, data.size());
Java_UsbMidiDeviceAndroid_send(
env, raw_device_.obj(), endpoint_number, data_to_pass.obj());
midi::Java_UsbMidiDeviceAndroid_send(env, raw_device_.obj(), endpoint_number,
data_to_pass.obj());
}
void UsbMidiDeviceAndroid::OnData(JNIEnv* env,
@ -72,13 +72,13 @@ void UsbMidiDeviceAndroid::OnData(JNIEnv* env,
}
bool UsbMidiDeviceAndroid::RegisterUsbMidiDevice(JNIEnv* env) {
return RegisterNativesImpl(env);
return midi::RegisterNativesImpl(env);
}
void UsbMidiDeviceAndroid::GetDescriptorsInternal() {
JNIEnv* env = base::android::AttachCurrentThread();
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(),
&descriptors_);
@ -111,8 +111,8 @@ void UsbMidiDeviceAndroid::InitDeviceInfo() {
std::vector<uint8> UsbMidiDeviceAndroid::GetStringDescriptor(int index) {
JNIEnv* env = base::android::AttachCurrentThread();
base::android::ScopedJavaLocalRef<jbyteArray> descriptors =
Java_UsbMidiDeviceAndroid_getStringDescriptor(env, raw_device_.obj(),
index);
midi::Java_UsbMidiDeviceAndroid_getStringDescriptor(
env, raw_device_.obj(), index);
std::vector<uint8> ret;
base::android::JavaByteArrayToByteVector(env, descriptors.obj(), &ret);

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

@ -98,7 +98,7 @@ bool UsbMidiOutputStream::PushSysExMessage(const std::vector<uint8>& data,
message[message_size] = byte;
++message_size;
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);
data_to_send->push_back((jack_.cable_number << 4) | code_index);
data_to_send->insert(data_to_send->end(),

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

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

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

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

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

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

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

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

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

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

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