1# Copyright (C) 2023 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15import logging 16import time 17 18from bluetooth_test import bluetooth_base_test 19from mobly import asserts 20from utilities.media_utils import MediaUtils 21from utilities.common_utils import CommonUtils 22from utilities.main_utils import common_main 23from utilities.video_utils_service import VideoRecording 24 25 26class IsMediaSynchronizedForReconnectedDevice(bluetooth_base_test.BluetoothBaseTest): 27 28 def setup_class(self): 29 super().setup_class() 30 self.media_utils = MediaUtils(self.target, self.discoverer) 31 self.common_utils = CommonUtils(self.target, self.discoverer) 32 33 def setup_test(self): 34 self.common_utils.grant_local_mac_address_permission() 35 logging.info("\tInitializing video services on Target") 36 self.video_utils_service_target = VideoRecording(self.target,self.__class__.__name__) 37 logging.info("Enabling video recording for phone Target") 38 self.video_utils_service_target.enable_screen_recording() 39 self.common_utils.enable_wifi_on_phone_device() 40 self.bt_utils.pair_primary_to_secondary() 41 42 def test_is_media_synchronized_after_reconnect_device(self): 43 """Tests validating is Media data synchronized after reconnect device""" 44 # Validate current song is playing on both devices 45 self.media_utils.open_media_app_on_hu() 46 self.media_utils.open_youtube_music_app() 47 current_phone_song_title = self.media_utils.get_song_title_from_phone() 48 current_hu_song_title = self.media_utils.get_song_title_from_hu() 49 asserts.assert_true(current_phone_song_title == current_hu_song_title, 50 'Invalid song titles. ' 51 'Song title on phone device and HU should be the same') 52 53 # Disable BT on HU 54 self.call_utils.open_bluetooth_palette() 55 self.bt_utils.click_on_use_bluetooth_toggle() 56 self.call_utils.open_bluetooth_palette() 57 # Assert <Bluetooth Audio disconnected> label is present 58 asserts.assert_true(self.call_utils.is_bluetooth_audio_disconnected_label_visible(), 59 '<Bluetooth Audio disconnected> label should be present') 60 # Close <Bluetooth Audio disconnected> page 61 self.media_utils.click_on_cancel_bt_audio_connection_button_on_hu() 62 # Enable BT on HU 63 self.discoverer.mbs.btEnable() 64 self.call_utils.wait_with_log(5) 65 # Assert <Bluetooth Audio disconnected> label is NOT present 66 asserts.assert_false(self.call_utils.is_bluetooth_audio_disconnected_label_visible(), 67 '<Bluetooth Audio disconnected> label should be present') 68 # Assert song title same on both devices after reconnect 69 current_next_phone_song_title = self.media_utils.get_song_title_from_phone() 70 current_next_hu_song_title = self.media_utils.get_song_title_from_hu() 71 asserts.assert_true(current_next_phone_song_title == current_next_hu_song_title, 72 'Invalid song titles. ' 73 'Song title on phone device and HU should be the same') 74 75 def teardown_test(self): 76 # Close YouTube Music app 77 self.media_utils.close_youtube_music_app() 78 self.call_utils.press_home() 79 logging.info("Stopping the screen recording on Target") 80 self.video_utils_service_target.stop_screen_recording() 81 logging.info("Pull the screen recording from Target") 82 self.video_utils_service_target.pull_recording_file(self.log_path) 83 logging.info("delete the screen recording from the Target") 84 self.video_utils_service_target.delete_screen_recording_from_device() 85 super().teardown_test() 86 87 88if __name__ == '__main__': 89 common_main() 90