/* ── Android Auto can see the app ───────────────────────── Round forty-nine made `MediaService` a `MediaLibraryService` and put three actions on one filter. Nothing on this phone can prove the car screen — that needs a head unit or the Desktop Head Unit — but the two doors Auto knocks on are exactly what `pm dump` prints, and their absence is how this fails in practice: a plugin module that never reached the APK takes the service, the filter and the Auto meta-data with it in one go, silently. `auto-browse` is the legacy action Android Auto actually binds (`android.media.browse.MediaBrowserService`), which media3 still serves through `MediaSessionService.onBind`. `auto-library` is media3's own, which is also what `MediaSessionLegacyStub` resolves the media-button PendingIntent against — it queries the LibraryService action FIRST — so it is the regression guard for `media-keys` above as much as for Auto. See autoManifest(). */ const auto = autoManifest(); const browseOk = auto.browse === "MediaService"; if (!browseOk) problems.push("EXPECT auto-browse " + JSON.stringify(auto)); console.log((browseOk ? " ok " : " FAIL ") + "auto-browse".padEnd(16) + " " + JSON.stringify({ browse: auto.browse, table: auto.table })); const libraryOk = auto.library === "MediaService"; if (!libraryOk) problems.push("EXPECT auto-library " + JSON.stringify(auto)); console.log((libraryOk ? " ok " : " FAIL ") + "auto-library".padEnd(16) + " " + JSON.stringify({ library: auto.library, table: auto.table })); /* and the Auto declaration itself, which `pm dump` does not print at all — this is the last `{"ev":"desc"}` line tools/auto-prober/ left in logcat, or a note that it has not run. Advisory, always: the prober is a separate app and is not installed on a plain walk. */ console.log(" -- " + "auto-desc".padEnd(16) + " " + auto.desc + " (advisory: prints, never fails)");