blob: cde8e63824e2ac703e502fdb07082e8eba0ca7ba [file] [log] [blame]
Amy2a6c3dc2018-06-05 17:31:55 -07001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.server.hdmi;
17
18import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
Amy9b91e8c2018-06-11 17:26:26 -070019import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
Amy2a6c3dc2018-06-05 17:31:55 -070020import static com.android.server.hdmi.Constants.ADDR_TV;
Amy4e7ff1a2018-06-07 16:24:31 -070021import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
Amyb887fa02018-06-21 11:22:13 -070022import static com.android.server.hdmi.HdmiControlService.STANDBY_SCREEN_OFF;
Amy6506bd62018-07-02 17:29:36 -070023import static com.google.common.truth.Truth.assertThat;
Amy2a6c3dc2018-06-05 17:31:55 -070024
25import android.media.AudioManager;
Amy4e7ff1a2018-06-07 16:24:31 -070026import android.os.Looper;
Amy4e7ff1a2018-06-07 16:24:31 -070027import android.os.test.TestLooper;
Amy2a6c3dc2018-06-05 17:31:55 -070028import android.support.test.filters.SmallTest;
Nick Chalko7206f3b2018-06-19 10:17:03 -070029
Amye30f9932018-07-13 13:54:52 -070030import com.android.server.hdmi.HdmiCecLocalDevice.ActiveSource;
Amy4e7ff1a2018-06-07 16:24:31 -070031import java.util.ArrayList;
Amy2a6c3dc2018-06-05 17:31:55 -070032import org.junit.Before;
33import org.junit.Test;
34import org.junit.runner.RunWith;
35import org.junit.runners.JUnit4;
36
37@SmallTest
38@RunWith(JUnit4.class)
39/**
40 * Tests for {@link HdmiCecLocalDeviceAudioSystem} class.
41 */
42public class HdmiCecLocalDeviceAudioSystemTest {
43
Amyb887fa02018-06-21 11:22:13 -070044 private static final String TAG = "HdmiCecLocalDeviceAudioSystemTest";
Amy2a6c3dc2018-06-05 17:31:55 -070045 private HdmiControlService mHdmiControlService;
Amy4e7ff1a2018-06-07 16:24:31 -070046 private HdmiCecController mHdmiCecController;
Amy2a6c3dc2018-06-05 17:31:55 -070047 private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem;
Nick Chalko7206f3b2018-06-19 10:17:03 -070048 private FakeNativeWrapper mNativeWrapper;
Amy4e7ff1a2018-06-07 16:24:31 -070049 private Looper mMyLooper;
50 private TestLooper mTestLooper = new TestLooper();
51 private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>();
Amy2a6c3dc2018-06-05 17:31:55 -070052 private int mMusicVolume;
53 private int mMusicMaxVolume;
54 private boolean mMusicMute;
Amy0fd41e32018-06-21 13:40:27 -070055 private boolean isAwake;
Amy2a6c3dc2018-06-05 17:31:55 -070056
57 @Before
58 public void SetUp() {
Amy0fd41e32018-06-21 13:40:27 -070059 isAwake = false;
Amy2a6c3dc2018-06-05 17:31:55 -070060 mHdmiControlService = new HdmiControlService(null) {
61 @Override
62 AudioManager getAudioManager() {
63 return new AudioManager() {
64 @Override
65 public int getStreamVolume(int streamType) {
66 switch (streamType) {
67 case STREAM_MUSIC:
68 return mMusicVolume;
69 default:
70 return 0;
71 }
72 }
73
74 @Override
75 public boolean isStreamMute(int streamType) {
76 switch (streamType) {
77 case STREAM_MUSIC:
78 return mMusicMute;
79 default:
80 return false;
81 }
82 }
83
84 @Override
85 public int getStreamMaxVolume(int streamType) {
86 switch (streamType) {
87 case STREAM_MUSIC:
88 return mMusicMaxVolume;
89 default:
90 return 100;
91 }
92 }
Amy2a6c3dc2018-06-05 17:31:55 -070093
Amy9b91e8c2018-06-11 17:26:26 -070094 @Override
95 public void adjustStreamVolume(int streamType, int direction, int flags) {
96 switch (streamType) {
97 case STREAM_MUSIC:
98 if (direction == AudioManager.ADJUST_UNMUTE) {
99 mMusicMute = false;
100 } else if (direction == AudioManager.ADJUST_MUTE) {
101 mMusicMute = true;
102 }
103 default:
104 }
105 }
106 };
Amy2a6c3dc2018-06-05 17:31:55 -0700107 }
Amy0fd41e32018-06-21 13:40:27 -0700108
109 @Override
110 void wakeUp() {
111 isAwake = true;
112 }
Amy2a6c3dc2018-06-05 17:31:55 -0700113 };
Amy4e7ff1a2018-06-07 16:24:31 -0700114 mMyLooper = mTestLooper.getLooper();
Amy2a6c3dc2018-06-05 17:31:55 -0700115 mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService);
Amy4e7ff1a2018-06-07 16:24:31 -0700116 mHdmiCecLocalDeviceAudioSystem.init();
117 mHdmiControlService.setIoLooper(mMyLooper);
118
Nick Chalko7206f3b2018-06-19 10:17:03 -0700119 mNativeWrapper = new FakeNativeWrapper();
Amy4e7ff1a2018-06-07 16:24:31 -0700120 mHdmiCecController = HdmiCecController.createWithNativeWrapper(
Amy9b91e8c2018-06-11 17:26:26 -0700121 mHdmiControlService, mNativeWrapper);
Amy4e7ff1a2018-06-07 16:24:31 -0700122 mHdmiControlService.setCecController(mHdmiCecController);
123 mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService));
Amy9b91e8c2018-06-11 17:26:26 -0700124 mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService));
Amy4e7ff1a2018-06-07 16:24:31 -0700125
126 mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem);
127 mHdmiControlService.initPortInfo();
Amyfc56efb2018-07-09 16:37:07 -0700128 // No TV device interacts with AVR so system audio control won't be turned on here
Amy4e7ff1a2018-06-07 16:24:31 -0700129 mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
130
131 mTestLooper.dispatchAll();
Amy2a6c3dc2018-06-05 17:31:55 -0700132 }
133
134 @Test
135 public void handleGiveAudioStatus_volume_10_mute_true() {
136 mMusicVolume = 10;
137 mMusicMute = true;
138 mMusicMaxVolume = 20;
139 int scaledVolume = VolumeControlAction.scaleToCecVolume(10, mMusicMaxVolume);
Shubang2fd186e2018-07-18 16:53:12 -0700140 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder.buildReportAudioStatus(
Amy4e7ff1a2018-06-07 16:24:31 -0700141 ADDR_AUDIO_SYSTEM, ADDR_TV, scaledVolume, true);
Amy9b91e8c2018-06-11 17:26:26 -0700142 HdmiCecMessage messageGive = HdmiCecMessageBuilder.buildGiveAudioStatus(
Amy2a6c3dc2018-06-05 17:31:55 -0700143 ADDR_TV, ADDR_AUDIO_SYSTEM);
Amy2a6c3dc2018-06-05 17:31:55 -0700144
Shubang2fd186e2018-07-18 16:53:12 -0700145 assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveAudioStatus(messageGive))
146 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700147 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700148 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amy2a6c3dc2018-06-05 17:31:55 -0700149 }
Amy87eda822018-06-06 17:56:39 -0700150
151 @Test
Amyfc56efb2018-07-09 16:37:07 -0700152 public void handleGiveSystemAudioModeStatus_originalOff() {
Shubang2fd186e2018-07-18 16:53:12 -0700153 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
Amyfc56efb2018-07-09 16:37:07 -0700154 .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false);
Amy9b91e8c2018-06-11 17:26:26 -0700155 HdmiCecMessage messageGive = HdmiCecMessageBuilder
Amy87eda822018-06-06 17:56:39 -0700156 .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM);
Amy87eda822018-06-06 17:56:39 -0700157
Shubang2fd186e2018-07-18 16:53:12 -0700158 assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive))
159 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700160 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700161 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amy87eda822018-06-06 17:56:39 -0700162 }
Amy4e7ff1a2018-06-07 16:24:31 -0700163
164 @Test
165 public void handleRequestArcInitiate() {
166 // TODO(b/80296911): Add tests when finishing handler impl.
Shubang2fd186e2018-07-18 16:53:12 -0700167 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
Amy4e7ff1a2018-06-07 16:24:31 -0700168 .buildInitiateArc(ADDR_AUDIO_SYSTEM, ADDR_TV);
Amy4e7ff1a2018-06-07 16:24:31 -0700169 HdmiCecMessage message = HdmiCecMessageBuilder
170 .buildRequestArcInitiation(ADDR_TV, ADDR_AUDIO_SYSTEM);
Amy4e7ff1a2018-06-07 16:24:31 -0700171
Shubang2fd186e2018-07-18 16:53:12 -0700172 assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcInitiate(message))
173 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700174 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700175 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amy4e7ff1a2018-06-07 16:24:31 -0700176 }
177
178 @Test
179 public void handleRequestArcTermination() {
180 // TODO(b/80297105): Add tests when finishing handler impl.
Shubang2fd186e2018-07-18 16:53:12 -0700181 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
Amy4e7ff1a2018-06-07 16:24:31 -0700182 .buildTerminateArc(ADDR_AUDIO_SYSTEM, ADDR_TV);
Amy9b91e8c2018-06-11 17:26:26 -0700183 HdmiCecMessage messageRequestOff = HdmiCecMessageBuilder
Amy4e7ff1a2018-06-07 16:24:31 -0700184 .buildRequestArcTermination(ADDR_TV, ADDR_AUDIO_SYSTEM);
Amy4e7ff1a2018-06-07 16:24:31 -0700185
Shubang2fd186e2018-07-18 16:53:12 -0700186 assertThat(mHdmiCecLocalDeviceAudioSystem.handleRequestArcTermination(messageRequestOff))
187 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700188 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700189 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amy9b91e8c2018-06-11 17:26:26 -0700190 }
191
192 @Test
Amyfc56efb2018-07-09 16:37:07 -0700193 public void handleSetSystemAudioMode_setOn_orignalOff() {
194 mMusicMute = true;
Amy9b91e8c2018-06-11 17:26:26 -0700195 HdmiCecMessage messageSet = HdmiCecMessageBuilder
Amyfc56efb2018-07-09 16:37:07 -0700196 .buildSetSystemAudioMode(ADDR_TV, ADDR_AUDIO_SYSTEM, true);
Amy9b91e8c2018-06-11 17:26:26 -0700197 HdmiCecMessage messageGive = HdmiCecMessageBuilder
198 .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM);
199
Amyfc56efb2018-07-09 16:37:07 -0700200 // Check if originally off
Shubang2fd186e2018-07-18 16:53:12 -0700201 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
Amyfc56efb2018-07-09 16:37:07 -0700202 .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false);
Amy9b91e8c2018-06-11 17:26:26 -0700203
Shubang2fd186e2018-07-18 16:53:12 -0700204 assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive))
205 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700206 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700207 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amy9b91e8c2018-06-11 17:26:26 -0700208
Amyfc56efb2018-07-09 16:37:07 -0700209 // Check if correctly turned on
Shubang2fd186e2018-07-18 16:53:12 -0700210 expectedMessage = HdmiCecMessageBuilder
Amyfc56efb2018-07-09 16:37:07 -0700211 .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, true);
Amy9b91e8c2018-06-11 17:26:26 -0700212
Shubang2fd186e2018-07-18 16:53:12 -0700213 assertThat(mHdmiCecLocalDeviceAudioSystem.handleSetSystemAudioMode(messageSet))
214 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700215 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700216 assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive))
217 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700218 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700219 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
220 assertThat(mMusicMute).isEqualTo(false);
Amy9b91e8c2018-06-11 17:26:26 -0700221 }
222
223 @Test
Amy0fd41e32018-06-21 13:40:27 -0700224 public void handleSystemAudioModeRequest_turnOffByTv() {
Shubang2fd186e2018-07-18 16:53:12 -0700225 assertThat(mMusicMute).isEqualTo(false);
Amy9b91e8c2018-06-11 17:26:26 -0700226
227 // Check if feature correctly turned off
Amy0fd41e32018-06-21 13:40:27 -0700228 HdmiCecMessage messageGive = HdmiCecMessageBuilder
229 .buildGiveSystemAudioModeStatus(ADDR_TV, ADDR_AUDIO_SYSTEM);
Amy9b91e8c2018-06-11 17:26:26 -0700230 HdmiCecMessage messageRequestOff = HdmiCecMessageBuilder
231 .buildSystemAudioModeRequest(ADDR_TV, ADDR_AUDIO_SYSTEM, 2, false);
Amy9b91e8c2018-06-11 17:26:26 -0700232
Shubang2fd186e2018-07-18 16:53:12 -0700233 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
Amy0fd41e32018-06-21 13:40:27 -0700234 .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false);
Shubang2fd186e2018-07-18 16:53:12 -0700235 assertThat(mHdmiCecLocalDeviceAudioSystem.handleSystemAudioModeRequest(messageRequestOff))
236 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700237 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700238 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amy0fd41e32018-06-21 13:40:27 -0700239
Shubang2fd186e2018-07-18 16:53:12 -0700240 expectedMessage = HdmiCecMessageBuilder
Amy0fd41e32018-06-21 13:40:27 -0700241 .buildReportSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_TV, false);
Shubang2fd186e2018-07-18 16:53:12 -0700242 assertThat(mHdmiCecLocalDeviceAudioSystem.handleGiveSystemAudioModeStatus(messageGive))
243 .isEqualTo(true);
Amy9b91e8c2018-06-11 17:26:26 -0700244 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700245 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
246 assertThat(mMusicMute).isEqualTo(true);
Amy4e7ff1a2018-06-07 16:24:31 -0700247 }
Amyb887fa02018-06-21 11:22:13 -0700248
249 @Test
250 public void onStandbyAudioSystem_currentSystemAudioControlOn() {
251 // Set system audio control on first
252 mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(true);
253
254 // Check if standby correctly turns off the feature
255 mHdmiCecLocalDeviceAudioSystem.onStandby(false, STANDBY_SCREEN_OFF);
256 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700257 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
Amyb887fa02018-06-21 11:22:13 -0700258 .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false);
Shubang2fd186e2018-07-18 16:53:12 -0700259 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
260 assertThat(mMusicMute).isEqualTo(true);
Amyb887fa02018-06-21 11:22:13 -0700261 }
Amy6506bd62018-07-02 17:29:36 -0700262
263 @Test
264 public void systemAudioControlOnPowerOn_alwaysOn() {
265 mHdmiCecLocalDeviceAudioSystem.removeAction(
266 SystemAudioInitiationActionFromAvr.class);
267 mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn(
268 Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true);
269
270 assertThat(mHdmiCecLocalDeviceAudioSystem
271 .getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty();
272 }
273
274 @Test
275 public void systemAudioControlOnPowerOn_neverOn() {
276 mHdmiCecLocalDeviceAudioSystem.removeAction(
277 SystemAudioInitiationActionFromAvr.class);
278 mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn(
279 Constants.NEVER_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, false);
280
281 assertThat(mHdmiCecLocalDeviceAudioSystem
282 .getActions(SystemAudioInitiationActionFromAvr.class)).isEmpty();
283 }
284
285 @Test
286 public void systemAudioControlOnPowerOn_useLastState_off() {
287 mHdmiCecLocalDeviceAudioSystem.removeAction(
288 SystemAudioInitiationActionFromAvr.class);
289 mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn(
290 Constants.USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, false);
291
292 assertThat(mHdmiCecLocalDeviceAudioSystem
293 .getActions(SystemAudioInitiationActionFromAvr.class)).isEmpty();
294 }
295
296 @Test
297 public void systemAudioControlOnPowerOn_useLastState_on() {
298 mHdmiCecLocalDeviceAudioSystem.removeAction(
299 SystemAudioInitiationActionFromAvr.class);
300 mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn(
301 Constants.USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true);
302
303 assertThat(mHdmiCecLocalDeviceAudioSystem
304 .getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty();
305 }
Amye30f9932018-07-13 13:54:52 -0700306
307 @Test
308 public void handleActiveSource_updateActiveSource() {
309 HdmiCecMessage message = HdmiCecMessageBuilder
310 .buildActiveSource(ADDR_TV, 0x0000);
311 ActiveSource expectedActiveSource = new ActiveSource(ADDR_TV, 0x0000);
312
Shubang2fd186e2018-07-18 16:53:12 -0700313 assertThat(mHdmiCecLocalDeviceAudioSystem.handleActiveSource(message))
314 .isEqualTo(true);
Amye30f9932018-07-13 13:54:52 -0700315 mTestLooper.dispatchAll();
Shubang2fd186e2018-07-18 16:53:12 -0700316 assertThat(mHdmiCecLocalDeviceAudioSystem.getActiveSource().equals(expectedActiveSource))
317 .isEqualTo(true);
318 }
319
320 @Test
321 public void terminateSystemAudioMode_systemAudioModeOff() {
322 mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(false);
323 assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false);
324
325 mMusicMute = false;
326 HdmiCecMessage message = HdmiCecMessageBuilder
327 .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false);
328
329 mHdmiCecLocalDeviceAudioSystem.terminateSystemAudioMode();
330
331 assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false);
332 assertThat(mMusicMute).isEqualTo(false);
333 assertThat(mNativeWrapper.getResultMessage()).isNotEqualTo(message);
334 }
335
336 @Test
337 public void terminateSystemAudioMode_systemAudioModeOn() {
338 mHdmiCecLocalDeviceAudioSystem.setSystemAudioMode(true);
339 assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(true);
340
341 mMusicMute = false;
342 HdmiCecMessage expectedMessage = HdmiCecMessageBuilder
343 .buildSetSystemAudioMode(ADDR_AUDIO_SYSTEM, ADDR_BROADCAST, false);
344
345 mHdmiCecLocalDeviceAudioSystem.terminateSystemAudioMode();
346
347 assertThat(mHdmiCecLocalDeviceAudioSystem.isSystemAudioActivated()).isEqualTo(false);
348 assertThat(mMusicMute).isEqualTo(true);
349 mTestLooper.dispatchAll();
350 assertThat(mNativeWrapper.getResultMessage()).isEqualTo(expectedMessage);
Amye30f9932018-07-13 13:54:52 -0700351 }
Amy2a6c3dc2018-06-05 17:31:55 -0700352}