summaryrefslogtreecommitdiffstats
path: root/media/midi/midi_manager_usb.cc
diff options
context:
space:
mode:
authortoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-01 17:17:32 +0000
committertoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-01 17:17:32 +0000
commit2b5376897c5d21b15c350383f810a9e0bb975ae3 (patch)
tree4f427897983803937129966dfbeb0e1f250925ab /media/midi/midi_manager_usb.cc
parent6e9f63759e3b56ebedfd511f7735df949e2d5267 (diff)
downloadchromium_src-2b5376897c5d21b15c350383f810a9e0bb975ae3.zip
chromium_src-2b5376897c5d21b15c350383f810a9e0bb975ae3.tar.gz
chromium_src-2b5376897c5d21b15c350383f810a9e0bb975ae3.tar.bz2
Web MIDI: make platform dependent initialization asynchronous
Since Android port needs asynchronous initialization, MIDIManager should provide asynchronous initialization scheme for platform dependent initialization. BUG=339746 TEST=out/Debug/media_unittests --gtest_filter='Midi*.*' Review URL: https://codereview.chromium.org/253493008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267555 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/midi/midi_manager_usb.cc')
-rw-r--r--media/midi/midi_manager_usb.cc27
1 files changed, 8 insertions, 19 deletions
diff --git a/media/midi/midi_manager_usb.cc b/media/midi/midi_manager_usb.cc
index 3ac1dda..f2cf866 100644
--- a/media/midi/midi_manager_usb.cc
+++ b/media/midi/midi_manager_usb.cc
@@ -5,7 +5,6 @@
#include "media/midi/midi_manager_usb.h"
#include "base/callback.h"
-#include "base/debug/trace_event.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
@@ -17,16 +16,6 @@
namespace media {
-namespace {
-
-// Noop callback for (sync) Initialize.
-// TODO(yhirano): This function should go away when
-// MidiManager::Initialize() becomes asynchronous. See http://crbug.com/339746.
-void Noop(bool result) {
-}
-
-} // namespace
-
MidiManagerUsb::MidiManagerUsb(scoped_ptr<UsbMidiDevice::Factory> factory)
: device_factory_(factory.Pass()) {
}
@@ -34,13 +23,13 @@ MidiManagerUsb::MidiManagerUsb(scoped_ptr<UsbMidiDevice::Factory> factory)
MidiManagerUsb::~MidiManagerUsb() {
}
-MidiResult MidiManagerUsb::Initialize() {
- TRACE_EVENT0("midi", "MidiManagerUsb::Initialize");
- Initialize(base::Bind(Noop));
- return MIDI_OK;
+void MidiManagerUsb::StartInitialization() {
+ Initialize(
+ base::Bind(&MidiManager::CompleteInitialization, base::Unretained(this)));
}
-void MidiManagerUsb::Initialize(base::Callback<void(bool result)> callback) {
+void MidiManagerUsb::Initialize(
+ base::Callback<void(MidiResult result)> callback) {
initialize_callback_ = callback;
// This is safe because EnumerateDevices cancels the operation on destruction.
device_factory_->EnumerateDevices(
@@ -83,7 +72,7 @@ void MidiManagerUsb::OnReceivedData(size_t jack_index,
void MidiManagerUsb::OnEnumerateDevicesDone(bool result,
UsbMidiDevice::Devices* devices) {
if (!result) {
- initialize_callback_.Run(false);
+ initialize_callback_.Run(MIDI_INITIALIZATION_ERROR);
return;
}
devices->swap(devices_);
@@ -97,7 +86,7 @@ void MidiManagerUsb::OnEnumerateDevicesDone(bool result,
descriptor.size(),
&jacks);
if (!parse_result) {
- initialize_callback_.Run(false);
+ initialize_callback_.Run(MIDI_INITIALIZATION_ERROR);
return;
}
std::vector<UsbMidiJack> input_jacks;
@@ -115,7 +104,7 @@ void MidiManagerUsb::OnEnumerateDevicesDone(bool result,
}
input_stream_.reset(new UsbMidiInputStream(input_jacks, this));
}
- initialize_callback_.Run(true);
+ initialize_callback_.Run(MIDI_OK);
}
} // namespace media