Report webOS media player state (#113774)
* support for webos media player state * add test coverage and don't use assumed state if media player state is available * fallback to assumed state if media state isn't available Co-authored-by: Shay Levy <levyshay1@gmail.com> --------- Co-authored-by: Shay Levy <levyshay1@gmail.com>pull/116416/head
parent
50d83bbdbf
commit
a6fdd4e1e2
|
@ -241,6 +241,20 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
name=self._device_name,
|
||||
)
|
||||
|
||||
self._attr_assumed_state = True
|
||||
if (
|
||||
self._client.media_state is not None
|
||||
and self._client.media_state.get("foregroundAppInfo") is not None
|
||||
):
|
||||
self._attr_assumed_state = False
|
||||
for entry in self._client.media_state.get("foregroundAppInfo"):
|
||||
if entry.get("playState") == "playing":
|
||||
self._attr_state = MediaPlayerState.PLAYING
|
||||
elif entry.get("playState") == "paused":
|
||||
self._attr_state = MediaPlayerState.PAUSED
|
||||
elif entry.get("playState") == "unloaded":
|
||||
self._attr_state = MediaPlayerState.IDLE
|
||||
|
||||
if self._client.system_info is not None or self.state != MediaPlayerState.OFF:
|
||||
maj_v = self._client.software_info.get("major_ver")
|
||||
min_v = self._client.software_info.get("minor_ver")
|
||||
|
|
|
@ -21,6 +21,7 @@ from homeassistant.components.media_player import (
|
|||
SERVICE_SELECT_SOURCE,
|
||||
MediaPlayerDeviceClass,
|
||||
MediaPlayerEntityFeature,
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
)
|
||||
from homeassistant.components.webostv.const import (
|
||||
|
@ -811,3 +812,23 @@ async def test_reauth_reconnect(hass: HomeAssistant, client, monkeypatch) -> Non
|
|||
assert "context" in flow
|
||||
assert flow["context"].get("source") == SOURCE_REAUTH
|
||||
assert flow["context"].get("entry_id") == entry.entry_id
|
||||
|
||||
|
||||
async def test_update_media_state(hass: HomeAssistant, client, monkeypatch) -> None:
|
||||
"""Test updating media state."""
|
||||
await setup_webostv(hass)
|
||||
|
||||
data = {"foregroundAppInfo": [{"playState": "playing"}]}
|
||||
monkeypatch.setattr(client, "media_state", data)
|
||||
await client.mock_state_update()
|
||||
assert hass.states.get(ENTITY_ID).state == MediaPlayerState.PLAYING
|
||||
|
||||
data = {"foregroundAppInfo": [{"playState": "paused"}]}
|
||||
monkeypatch.setattr(client, "media_state", data)
|
||||
await client.mock_state_update()
|
||||
assert hass.states.get(ENTITY_ID).state == MediaPlayerState.PAUSED
|
||||
|
||||
data = {"foregroundAppInfo": [{"playState": "unloaded"}]}
|
||||
monkeypatch.setattr(client, "media_state", data)
|
||||
await client.mock_state_update()
|
||||
assert hass.states.get(ENTITY_ID).state == MediaPlayerState.IDLE
|
||||
|
|
Loading…
Reference in New Issue