| Index: media/midi/midi_manager_unittest.cc
|
| diff --git a/media/midi/midi_manager_unittest.cc b/media/midi/midi_manager_unittest.cc
|
| index 2b56780e22e793fea044a223692ba74ad13b23f0..bf2b57328eaca4cfed32c7ae34283d2f35bab059 100644
|
| --- a/media/midi/midi_manager_unittest.cc
|
| +++ b/media/midi/midi_manager_unittest.cc
|
| @@ -22,7 +22,8 @@ namespace {
|
|
|
| class FakeMidiManager : public MidiManager {
|
| public:
|
| - FakeMidiManager() : start_initialization_is_called_(false) {}
|
| + FakeMidiManager()
|
| + : start_initialization_is_called_(false), finalize_is_called_(false) {}
|
| ~FakeMidiManager() override {}
|
|
|
| // MidiManager implementation.
|
| @@ -30,6 +31,8 @@ class FakeMidiManager : public MidiManager {
|
| start_initialization_is_called_ = true;
|
| }
|
|
|
| + void Finalize() override { finalize_is_called_ = true; }
|
| +
|
| void DispatchSendMidiData(MidiManagerClient* client,
|
| uint32 port_index,
|
| const std::vector<uint8>& data,
|
| @@ -49,6 +52,7 @@ class FakeMidiManager : public MidiManager {
|
| }
|
|
|
| bool start_initialization_is_called_;
|
| + bool finalize_is_called_;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(FakeMidiManager);
|
| @@ -77,6 +81,7 @@ class FakeMidiManagerClient : public MidiManagerClient {
|
| size_t size,
|
| double timestamp) override {}
|
| void AccumulateMidiBytesSent(size_t size) override {}
|
| + void Detach() override {}
|
|
|
| Result result() const { return result_; }
|
|
|
| @@ -100,7 +105,13 @@ class MidiManagerTest : public ::testing::Test {
|
| MidiManagerTest()
|
| : manager_(new FakeMidiManager),
|
| message_loop_(new base::MessageLoop) {}
|
| - ~MidiManagerTest() override {}
|
| + ~MidiManagerTest() override {
|
| + manager_->Shutdown();
|
| + base::RunLoop run_loop;
|
| + run_loop.RunUntilIdle();
|
| + EXPECT_EQ(manager_->start_initialization_is_called_,
|
| + manager_->finalize_is_called_);
|
| + }
|
|
|
| protected:
|
| void StartTheFirstSession(FakeMidiManagerClient* client) {
|
| @@ -204,6 +215,7 @@ TEST_F(MidiManagerTest, TooManyPendingSessions) {
|
| many_existing_clients[i] = new FakeMidiManagerClient;
|
| StartTheNthSession(many_existing_clients[i], i + 1);
|
| }
|
| + EXPECT_TRUE(manager_->start_initialization_is_called_);
|
|
|
| // Push the last client that should be rejected for too many pending requests.
|
| scoped_ptr<FakeMidiManagerClient> additional_client(
|
| @@ -211,6 +223,7 @@ TEST_F(MidiManagerTest, TooManyPendingSessions) {
|
| manager_->start_initialization_is_called_ = false;
|
| manager_->StartSession(additional_client.get());
|
| EXPECT_FALSE(manager_->start_initialization_is_called_);
|
| + manager_->start_initialization_is_called_ = true;
|
| EXPECT_EQ(Result::INITIALIZATION_ERROR, additional_client->result());
|
|
|
| // Other clients still should not receive a result.
|
| @@ -267,8 +280,15 @@ TEST_F(MidiManagerTest, CreateMidiManager) {
|
| #else
|
| EXPECT_EQ(Result::OK, result);
|
| #endif
|
| +
|
| + manager->Shutdown();
|
| + base::RunLoop run_loop;
|
| + run_loop.RunUntilIdle();
|
| }
|
|
|
| +// TODO(toyoshim): Add multi-threaded unit tests to check races around
|
| +// StartInitialization(), CompleteInitialization(), and Finalize().
|
| +
|
| } // namespace
|
|
|
| } // namespace midi
|
|
|