diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index dcc23158750986..249dfe638c39e8 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -15407,7 +15407,13 @@ After you create a new supervised user, you can manage their settings at any tim Pre-populate the New Tab page with popular sites. - + + Use Android Midi API + + + Use Android Midi API for WebMIDI (effective only with Android M+ devices). + + diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index cefe99b763cc07..9d5ef3e35ce172 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn @@ -301,6 +301,7 @@ source_set("browser") { "//components/web_modal", "//content/app/resources", "//media", + "//media/midi", "//mojo/application/public/cpp", "//mojo/common", "//mojo/environment:chromium", diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS index 70939549447d6b..38ac5055c51fc6 100644 --- a/chrome/browser/DEPS +++ b/chrome/browser/DEPS @@ -135,6 +135,7 @@ include_rules = [ "+jni", "+media/audio", # For media audio hang monitor. "+media/base", # For media switches + "+media/midi", # For midi switches "+mojo/application/public/cpp", "+policy", # For generated headers and source "+ppapi/c", # For various types. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 5af309b3e287f8..cae14681acb171 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -40,6 +40,7 @@ #include "components/version_info/version_info.h" #include "content/public/browser/user_metrics.h" #include "media/base/media_switches.h" +#include "media/midi/midi_switches.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/ui_base_switches.h" #include "ui/display/display_switches.h" @@ -2020,6 +2021,11 @@ const Experiment kExperiments[] = { kOsAndroid, ENABLE_DISABLE_VALUE_TYPE(switches::kEnableNTPPopularSites, switches::kDisableNTPPopularSites)}, + {"use-android-midi-api", + IDS_FLAGS_USE_ANDROID_MIDI_API_NAME, + IDS_FLAGS_USE_ANDROID_MIDI_API_DESCRIPTION, + kOsAndroid, + SINGLE_VALUE_TYPE(switches::kUseAndroidMidiApi)}, #endif // defined(OS_ANDROID) #if defined(OS_WIN) {"trace-export-events-to-etw", diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index fb24e8d0333577..428d4f0f12450f 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -3269,6 +3269,7 @@ '../content/app/resources/content_resources.gyp:content_resources', '../gpu/gpu.gyp:gpu', '../media/media.gyp:media', + '../media/midi/midi.gyp:midi', '../media/mojo/interfaces/mojo_bindings.gyp:platform_verification_api', '../mojo/mojo_base.gyp:mojo_application_base', '../mojo/mojo_base.gyp:mojo_common_lib', diff --git a/media/midi/BUILD.gn b/media/midi/BUILD.gn index b7d2a376399fa0..812565467f9fc9 100644 --- a/media/midi/BUILD.gn +++ b/media/midi/BUILD.gn @@ -78,6 +78,8 @@ component("midi") { "midi_port_info.h", "midi_scheduler.cc", "midi_scheduler.h", + "midi_switches.cc", + "midi_switches.h", ] configs += [ ":midi_config" ] diff --git a/media/midi/midi.gyp b/media/midi/midi.gyp index c4fc9455ce9972..cde4a0b6924e7c 100644 --- a/media/midi/midi.gyp +++ b/media/midi/midi.gyp @@ -59,6 +59,8 @@ 'midi_port_info.h', 'midi_scheduler.cc', 'midi_scheduler.h', + 'midi_switches.cc', + 'midi_switches.h', 'usb_midi_device_android.cc', 'usb_midi_device_android.h', 'usb_midi_device_factory_android.cc', diff --git a/media/midi/midi_switches.cc b/media/midi/midi_switches.cc new file mode 100644 index 00000000000000..1fee12ce92da34 --- /dev/null +++ b/media/midi/midi_switches.cc @@ -0,0 +1,14 @@ +// 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_switches.h" + +namespace switches { + +#if defined(OS_ANDROID) +// Use Android Midi API for WebMIDI +const char kUseAndroidMidiApi[] = "use-android-midi-api"; +#endif + +} // namespace switches diff --git a/media/midi/midi_switches.h b/media/midi/midi_switches.h new file mode 100644 index 00000000000000..471d3a7be4398b --- /dev/null +++ b/media/midi/midi_switches.h @@ -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. + +// Defines all the "midi" command-line switches. + +#ifndef MEDIA_MIDI_MIDI_SWITCHES_H_ +#define MEDIA_MIDI_MIDI_SWITCHES_H_ + +#include "build/build_config.h" +#include "media/midi/midi_export.h" + +namespace switches { + +#if defined(OS_ANDROID) +MIDI_EXPORT extern const char kUseAndroidMidiApi[]; +#endif + +} // namespace switches + +#endif // MEDIA_MIDI_MIDI_SWITCHES_H_ diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 3beb9fe011b65f..f4fe5160d4e6dd 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -64642,6 +64642,7 @@ To add a new entry, add it with any value and run test to compute valid value. +