OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 ++state_changed_count_; | 51 ++state_changed_count_; |
52 } | 52 } |
53 | 53 |
54 void BluetoothAudioSinkVolumeChanged(BluetoothAudioSink* audio_sink, | 54 void BluetoothAudioSinkVolumeChanged(BluetoothAudioSink* audio_sink, |
55 uint16_t volume) override { | 55 uint16_t volume) override { |
56 ++volume_changed_count_; | 56 ++volume_changed_count_; |
57 } | 57 } |
58 | 58 |
59 void BluetoothAudioSinkDataAvailable(BluetoothAudioSink* audio_sink, | 59 void BluetoothAudioSinkDataAvailable(BluetoothAudioSink* audio_sink, |
60 char* data, | 60 char* data, |
61 size_t size) override { | 61 size_t size, |
| 62 uint16_t read_mtu) override { |
62 total_read_ += size; | 63 total_read_ += size; |
63 data_.clear(); | 64 data_.clear(); |
64 data_.insert(data_.begin(), data, data + size); | 65 data_.insert(data_.begin(), data, data + size); |
| 66 read_mtu_ = read_mtu; |
65 } | 67 } |
66 | 68 |
67 int state_changed_count_; | 69 int state_changed_count_; |
68 int volume_changed_count_; | 70 int volume_changed_count_; |
69 int data_available_count_; | 71 int data_available_count_; |
70 size_t total_read_; | 72 size_t total_read_; |
71 std::vector<char> data_; | 73 std::vector<char> data_; |
| 74 uint16_t read_mtu_; |
72 BluetoothAudioSink::State state_; | 75 BluetoothAudioSink::State state_; |
73 | 76 |
74 private: | 77 private: |
75 scoped_refptr<BluetoothAudioSink> audio_sink_; | 78 scoped_refptr<BluetoothAudioSink> audio_sink_; |
76 }; | 79 }; |
77 | 80 |
78 class BluetoothAudioSinkChromeOSTest : public testing::Test { | 81 class BluetoothAudioSinkChromeOSTest : public testing::Test { |
79 public: | 82 public: |
80 void SetUp() override { | 83 void SetUp() override { |
81 DBusThreadManager::Initialize(); | 84 DBusThreadManager::Initialize(); |
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
831 | 834 |
832 message_loop_.RunUntilIdle(); | 835 message_loop_.RunUntilIdle(); |
833 | 836 |
834 // Acquire is called when the state of |audio_sink_| becomes STATE_PENDING, | 837 // Acquire is called when the state of |audio_sink_| becomes STATE_PENDING, |
835 // and Acquire will trigger state change. Therefore, the state will be | 838 // and Acquire will trigger state change. Therefore, the state will be |
836 // STATE_ACTIVE right after STATE_PENDING. | 839 // STATE_ACTIVE right after STATE_PENDING. |
837 // State: STATE_IDLE -> STATE_PENDING -> STATE_ACTIVE | 840 // State: STATE_IDLE -> STATE_PENDING -> STATE_ACTIVE |
838 EXPECT_EQ(observer_->state_changed_count_, 3); | 841 EXPECT_EQ(observer_->state_changed_count_, 3); |
839 EXPECT_EQ(observer_->total_read_, data_one.size()); | 842 EXPECT_EQ(observer_->total_read_, data_one.size()); |
840 EXPECT_EQ(observer_->data_, data_one); | 843 EXPECT_EQ(observer_->data_, data_one); |
| 844 EXPECT_EQ(observer_->read_mtu_, |
| 845 FakeBluetoothMediaTransportClient::kDefaultReadMtu); |
841 } | 846 } |
842 | 847 |
843 // Tests the case where the remote device pauses and resume audio streaming. | 848 // Tests the case where the remote device pauses and resume audio streaming. |
844 TEST_F(BluetoothAudioSinkChromeOSTest, PauseAndResume) { | 849 TEST_F(BluetoothAudioSinkChromeOSTest, PauseAndResume) { |
845 GetAudioSink(); | 850 GetAudioSink(); |
846 | 851 |
847 media_endpoint_->SelectConfiguration( | 852 media_endpoint_->SelectConfiguration( |
848 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), | 853 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), |
849 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, | 854 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, |
850 base::Unretained(this))); | 855 base::Unretained(this))); |
(...skipping 15 matching lines...) Expand all Loading... |
866 EXPECT_EQ(observer_->volume_changed_count_, 1); | 871 EXPECT_EQ(observer_->volume_changed_count_, 1); |
867 | 872 |
868 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); | 873 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); |
869 | 874 |
870 std::vector<char> data_one(16, 0x12); | 875 std::vector<char> data_one(16, 0x12); |
871 fake_transport_->WriteData(media_endpoint_->object_path(), data_one); | 876 fake_transport_->WriteData(media_endpoint_->object_path(), data_one); |
872 | 877 |
873 message_loop_.RunUntilIdle(); | 878 message_loop_.RunUntilIdle(); |
874 | 879 |
875 EXPECT_EQ(observer_->data_, data_one); | 880 EXPECT_EQ(observer_->data_, data_one); |
| 881 EXPECT_EQ(observer_->read_mtu_, |
| 882 FakeBluetoothMediaTransportClient::kDefaultReadMtu); |
876 EXPECT_EQ(observer_->state_changed_count_, 3); | 883 EXPECT_EQ(observer_->state_changed_count_, 3); |
877 EXPECT_EQ(observer_->total_read_, data_one.size()); | 884 EXPECT_EQ(observer_->total_read_, data_one.size()); |
878 | 885 |
879 // Simulates the situation where the remote device pauses and resume audio | 886 // Simulates the situation where the remote device pauses and resume audio |
880 // streaming. | 887 // streaming. |
881 fake_transport_->SetState(media_endpoint_->object_path(), "idle"); | 888 fake_transport_->SetState(media_endpoint_->object_path(), "idle"); |
882 | 889 |
883 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); | 890 EXPECT_EQ(audio_sink_->GetState(), BluetoothAudioSink::STATE_IDLE); |
884 EXPECT_EQ(observer_->state_changed_count_, 4); | 891 EXPECT_EQ(observer_->state_changed_count_, 4); |
885 | 892 |
886 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); | 893 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); |
887 | 894 |
888 std::vector<char> data_two(8, 0x10); | 895 std::vector<char> data_two(8, 0x10); |
889 fake_transport_->WriteData(media_endpoint_->object_path(), data_two); | 896 fake_transport_->WriteData(media_endpoint_->object_path(), data_two); |
890 | 897 |
891 message_loop_.RunUntilIdle(); | 898 message_loop_.RunUntilIdle(); |
892 | 899 |
893 EXPECT_EQ(observer_->data_, data_two); | 900 EXPECT_EQ(observer_->data_, data_two); |
| 901 EXPECT_EQ(observer_->read_mtu_, |
| 902 FakeBluetoothMediaTransportClient::kDefaultReadMtu); |
894 EXPECT_EQ(observer_->state_changed_count_, 6); | 903 EXPECT_EQ(observer_->state_changed_count_, 6); |
895 EXPECT_EQ(observer_->total_read_, data_two.size()); | 904 EXPECT_EQ(observer_->total_read_, data_two.size()); |
896 } | 905 } |
897 | 906 |
898 TEST_F(BluetoothAudioSinkChromeOSTest, ContinuouslyStreaming) { | 907 TEST_F(BluetoothAudioSinkChromeOSTest, ContinuouslyStreaming) { |
899 GetAudioSink(); | 908 GetAudioSink(); |
900 | 909 |
901 media_endpoint_->SelectConfiguration( | 910 media_endpoint_->SelectConfiguration( |
902 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), | 911 std::vector<uint8_t>({0x21, 0x15, 0x33, 0x2C}), |
903 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, | 912 base::Bind(&BluetoothAudioSinkChromeOSTest::SelectConfigurationCallback, |
(...skipping 16 matching lines...) Expand all Loading... |
920 EXPECT_EQ(observer_->volume_changed_count_, 1); | 929 EXPECT_EQ(observer_->volume_changed_count_, 1); |
921 | 930 |
922 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); | 931 fake_transport_->SetState(media_endpoint_->object_path(), "pending"); |
923 | 932 |
924 std::vector<char> data_one(16, 0x12); | 933 std::vector<char> data_one(16, 0x12); |
925 fake_transport_->WriteData(media_endpoint_->object_path(), data_one); | 934 fake_transport_->WriteData(media_endpoint_->object_path(), data_one); |
926 | 935 |
927 message_loop_.RunUntilIdle(); | 936 message_loop_.RunUntilIdle(); |
928 | 937 |
929 EXPECT_EQ(observer_->data_, data_one); | 938 EXPECT_EQ(observer_->data_, data_one); |
| 939 EXPECT_EQ(observer_->read_mtu_, |
| 940 FakeBluetoothMediaTransportClient::kDefaultReadMtu); |
930 EXPECT_EQ(observer_->state_changed_count_, 3); | 941 EXPECT_EQ(observer_->state_changed_count_, 3); |
931 EXPECT_EQ(observer_->total_read_, data_one.size()); | 942 EXPECT_EQ(observer_->total_read_, data_one.size()); |
932 | 943 |
933 std::vector<char> data_two(8, 0x10); | 944 std::vector<char> data_two(8, 0x10); |
934 fake_transport_->WriteData(media_endpoint_->object_path(), data_two); | 945 fake_transport_->WriteData(media_endpoint_->object_path(), data_two); |
935 | 946 |
936 message_loop_.RunUntilIdle(); | 947 message_loop_.RunUntilIdle(); |
937 | 948 |
938 EXPECT_EQ(observer_->data_, data_two); | 949 EXPECT_EQ(observer_->data_, data_two); |
| 950 EXPECT_EQ(observer_->read_mtu_, |
| 951 FakeBluetoothMediaTransportClient::kDefaultReadMtu); |
939 EXPECT_EQ(observer_->state_changed_count_, 3); | 952 EXPECT_EQ(observer_->state_changed_count_, 3); |
940 EXPECT_EQ(observer_->total_read_, data_one.size() + data_two.size()); | 953 EXPECT_EQ(observer_->total_read_, data_one.size() + data_two.size()); |
941 } | 954 } |
942 | 955 |
943 } // namespace chromeos | 956 } // namespace chromeos |
OLD | NEW |