tree ae34259db6e97f92a86c72275ca8cead47fce78b
parent 97ae1fc5210670aa8a23919c8975a6bc654f67b8
author chrisdecenzo <61757564+chrisdecenzo@users.noreply.github.com> 1784581335 -0700
committer GitHub <noreply@github.com> 1784581335 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJqXozXCRC1aQ7uu5UhlAAAwA8QAIvY/hm6M65tWWlkbxTKhDTi
 IMhyoeCazme2LyVAxQXobxqlQfzrfcB9KwPN9YggBkLcoabebO6JVKlr6r4LJmM4
 RNDKiG5Pbzl5iDIhtseROfwfcTc79cOGbr/pqVhjW8HPU4sUB+zq6+EQnJR/ihzo
 KLLQjVhQSw4s8WUqIY2vhvx5iXBVla/TuvM4yUIEIhOgVKNLAfKMOXq8qLrb404W
 etG4yb61QMNfJ2/a/rBYZFGTUPbUT7EOQnOYKOF0IxMEeAa7Nm0Sd2sGroaQkdzt
 5uQnD+VqwIrxYs7XaznuU9mdc5OP3osOPm10z4gTQklWCngWIBVGPYL2TrV80sak
 DLsYkPEq2XD/r1RYtLVOfBYsJ4pEOn5BeWZk7xQanzA0BbIyt3AuruvjRiiszrL8
 TQ8DhVaUrnDQZ9cJXHrcfSQkPDW+d5MmP/xvqghMTRJuf0uePxx0KoUAgNcQtgpB
 /3BS8c9CdNBwEnm/O6QDMmFYmgeeRoS0W8eD0hSdOHtMtIR0QMKeRlJbr3BMPeYX
 yLfbPm6JYMS5zIMi6gLnCE5mIsyFvjVG9CqfPFT9PCBGsnFuEIzA8zcNABbOnMB/
 oJ5ApC9vTXNt6Aa6n+p7ejnmAn+1jR0xeUwgRdeKxDi3Hdf3veNcdupf2ixED25V
 4JkWGUX3K32CIoTQDA9P
 =JwhJ
 -----END PGP SIGNATURE-----
 

feat(tv-app): Implement new Content Launcher features (#73015)

* feat(tv-app): Implement new Content Launcher features

- Add HandleContentReplicationRequest and HandlePlayPreset command handlers
- Add HandleGetMovable (returns true) and HandleGetPresets (returns
  example preset list) attribute handlers
- Update kEndpointFeatureMap to 0x00FF (all features) and
  kClusterRevision to 3
- Add Movable and Presets attributes to dynamic endpoint declaration
- Add ContentReplicationRequest, PlayPreset, and ContentReplicationResponse
  to dynamic endpoint command lists

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* feat(tv-app): Add Content Launcher new features to Android implementation

- Add contentReplicationRequest, playPreset, getMovable, getPresets
  to Java ContentLaunchManager interface and stub implementation
- Add ContentLaunchPreset Java class for preset data
- Update ContentLauncherManager JNI bridge with new method IDs and
  implementations that call through to Java
- Update AppContentLauncherManager with HandleGetMovable and
  HandleGetPresets implementations
- Update kEndpointFeatureMap to 0x00FF and kClusterRevision to 3

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Address review: use TEMPORARY_RETURN_IGNORED and Metadata.h kRevision

- Replace (void) casts with TEMPORARY_RETURN_IGNORED for nodiscard
- Use chip::app::Clusters::ContentLauncher::kRevision from Metadata.h
  instead of hardcoded kClusterRevision constant
- Remove stale TODO comment

* fix: Add ContentLaunchPreset.java to Android BUILD.gn

* fix: Remove unavailable Metadata.h include, use literal revision

* Restyled by google-java-format

* test: Add YAML test steps for new Content Launcher features

Add test steps for:
- Read Movable attribute (expects true)
- Read Presets attribute (validates readable)
- ContentReplicationRequest command (validates invocable)
- PlayPreset command with PresetID=1 (validates invocable)

* test: Add unit tests for Content Launcher server delegate

Test the delegate interface methods including:
- Default HandleGetMovable returns false
- Override HandleGetMovable returns true
- HandleGetPresets is callable (default returns empty list)
- HandleGetSupportedStreamingProtocols returns configured value
- GetFeatureMap returns configured value
- GetClusterRevision returns expected value

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* fix: PlayPreset returns plain status response, not LauncherResponse

Per the spec, PlayPreset has no cluster-specific response type —
it returns a regular IM status. Change HandlePlayPreset delegate
signature to take CommandHandler + CommandPath and call AddStatus
directly, matching the spec behavior.

* Restore TODO comment for kEndpointFeatureMap

* Use kRevision from Metadata.h for cluster revision fallback

* Address review comments:

- Use _span literal for string constants instead of CharSpan::fromCharString
- Use explicit Feature enum constants instead of 0x00FF for feature maps
- Use kRevision from Metadata.h for cluster revision in AppContentLauncherManager
- Replace TEMPORARY_RETURN_IGNORED and (void) with LogErrorOnFailure
- Extract JNI class/field IDs outside loop for efficiency

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* fix: Use kRevision from Metadata.h in Android ContentLauncherManager

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Address review: use BitFlags for feature map readability

Replace the to_underlying(...) | ... chain with BitFlags<Feature>(...).Raw()
so enabled features are visually clear and named.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <commits@restyled.io>