diff options
author | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 17:17:32 +0000 |
---|---|---|
committer | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-01 17:17:32 +0000 |
commit | 2b5376897c5d21b15c350383f810a9e0bb975ae3 (patch) | |
tree | 4f427897983803937129966dfbeb0e1f250925ab /media/midi/midi_manager_usb.cc | |
parent | 6e9f63759e3b56ebedfd511f7735df949e2d5267 (diff) | |
download | chromium_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.cc | 27 |
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 |