From 9b312180c69890fcad3d0adea76ccfd46b339544 Mon Sep 17 00:00:00 2001 From: darkrain-nl <24763370+darkrain-nl@users.noreply.github.com> Date: Sat, 5 Sep 2026 17:23:41 +0200 Subject: [PATCH] Add app_id attribute to webostv media player (#181385) --- homeassistant/components/webostv/media_player.py | 1 + .../webostv/snapshots/test_media_player.ambr | 1 + tests/components/webostv/test_media_player.py | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/homeassistant/components/webostv/media_player.py b/homeassistant/components/webostv/media_player.py index 571080a17b31..a5744cdca76a 100644 --- a/homeassistant/components/webostv/media_player.py +++ b/homeassistant/components/webostv/media_player.py @@ -148,6 +148,7 @@ class LgWebOSMediaPlayerEntity(WebOsTvEntity, RestoreEntity, MediaPlayerEntity): self._attr_source = self._current_source self._attr_source_list = sorted(self._source_list) + self._attr_app_id = tv_state.current_app_id self._attr_media_content_type = None if tv_state.current_app_id == LIVE_TV_APP_ID: diff --git a/tests/components/webostv/snapshots/test_media_player.ambr b/tests/components/webostv/snapshots/test_media_player.ambr index b1b172d23bbb..2f9aa2897bdd 100644 --- a/tests/components/webostv/snapshots/test_media_player.ambr +++ b/tests/components/webostv/snapshots/test_media_player.ambr @@ -12,6 +12,7 @@ # name: test_entity_attributes StateSnapshot({ 'attributes': ReadOnlyDict({ + : 'com.webos.app.livetv', : 'tv', : 'LG webOS TV MODEL', : False, diff --git a/tests/components/webostv/test_media_player.py b/tests/components/webostv/test_media_player.py index bd6f97e18f66..d4f05c3ea69a 100644 --- a/tests/components/webostv/test_media_player.py +++ b/tests/components/webostv/test_media_player.py @@ -11,6 +11,7 @@ from syrupy.filters import props from homeassistant.components import automation from homeassistant.components.media_player import ( + ATTR_APP_ID, ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST, ATTR_MEDIA_CONTENT_ID, @@ -537,6 +538,20 @@ async def test_update_sources_live_tv_find(hass: HomeAssistant, client) -> None: assert len(sources) == 1 +async def test_app_id(hass: HomeAssistant, client) -> None: + """Test app_id follows the foreground app id reported by the TV.""" + await setup_webostv(hass) + await client.mock_state_update() + + assert hass.states.get(ENTITY_ID).attributes[ATTR_APP_ID] == LIVE_TV_APP_ID + + # apps outside the source list still get a usable app id + client.tv_state.current_app_id = "com.webos.app.home" + await client.mock_state_update() + + assert hass.states.get(ENTITY_ID).attributes[ATTR_APP_ID] == "com.webos.app.home" + + async def test_client_disconnected( hass: HomeAssistant, client,