Repository navigation
Conversation
|
Complementary PR submitted: #3596 (#3596) This PR adds two critical bug fixes on top of the Constellation/Asterism implementation:
These address the bugs identified by unpluggederan in issue #2994 comments. |
|
Quick update: I submitted a complementary fix PR (#3596) but @mar-v-in correctly pointed out it duplicates #3360 since the timeout and callback fixes are already in this PR. Closing #3596. The two critical bugs mentioned by @unpluggederan are already addressed:
Remaining issue from @unpluggederan's last comment:
I'm investigating this DroidGuard attestation path next. |
|
Heads-up on a
There's no lint baseline and no To be precise about the severity: the two methods reachable from the settings screen are What built cleanly for me locally: // PhoneNumberVerificationPreferencesFragment.kt — after the licence header, before the package line
@file:RequiresApi(Build.VERSION_CODES.O)// SettingsFragment.kt — hide the entry instead of calling into it
findPreference<Preference>(PREF_PHONE_NUMBER_VERIFICATION)!!.apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
onPreferenceClickListener = Preference.OnPreferenceClickListener {
findNavController().navigate(requireContext(), R.id.openPhoneNumberVerificationSettings)
true
}
} else {
isVisible = false
}
}...plus the same Happy to open a PR against |
|
Follow-up to the above, in case it saves time on the rest of that lint run. CI on 1.
|
|
I reproduced this PR's Android lint failure locally and prepared a focused repair on top of the current The patch preserves this PR's commit history and authorship. It fixes the 11 hard lint errors without introducing a baseline:
Verification on the exact patched branch:
GitHub does not allow my account to open a PR against this fork ( |
|
Follow-up integration result: I merged current Reproducible integration branch: https://github.com/nwinkelman2/GmsCore/tree/integration/rcs-current-upstream Current-master verification:
This does not claim locked-bootloader RCS send/receive validation; it specifically removes the stale-base/build-integration uncertainty while that device-level acceptance edge remains open. |
|
I also assembled the existing focused follow-ups into one reviewable branch on top of the current https://github.com/nwinkelman2/GmsCore/tree/integration/rcs-consolidated Commit stack:
Fresh verification of the combined stack:
No Android device is attached to this build host, so I have not rerun the instrumentation suite or claimed locked-bootloader send/receive proof. The point of this branch is to give the existing human implementation a consolidated, authorship-preserving path through its known CI and identity-state defects, not to create another competing RCS implementation. |
|
Final integration update for review: the current-upstream assistance branch is now finalized at 0266edd: https://github.com/nwinkelman2/GmsCore/tree/integration/rcs-current-upstream This supersedes my interim branch notes above. It preserves Opstic's RCS implementation and the external authorship of each follow-up; it is an integration/reliability aid, not a competing authorship or bounty claim. Included repairs:
Exact-head local gate passed:
Result: BUILD SUCCESSFUL, 571 actionable tasks. Hosted Debug and Release jobs are both green on the same exact head: I do not have an attached Android device here, so the instrumentation APK was built but the device suite was not executed. I am also not claiming locked-bootloader Google Messages send/receive proof; that remains a physical-device acceptance step for the primary implementation. |
Refactor RpcClient construction behind an internal factory without changing runtime timeout behavior, then add a regression that requires the stock-GMS 60-second timeout contract for connect/read/write/call. Baseline expectation at 276523b: - connect: OkHttp default 10s -> FAIL - read: 60s -> PASS - write: OkHttp default 10s -> FAIL - call: OkHttp default 0/unbounded -> FAIL Provenance: - Bug report / decompiled-GMS comparison: @unpluggederan, microg#3360 discussion - Prior implementation attempt: @chenlinxi890-spec, microg#3596 - Foundragon delta: adds a focused deterministic regression before restoring the fix This commit is intentionally the BEFORE_FAIL checkpoint; the next commit restores the previously proposed timeout parity fix.
Restore the complete timeout configuration reported from decompiled stock GMS: connect/read/write/call are all 60 seconds. The consolidated microg#3784 baseline retained only readTimeout(60s), leaving OkHttp defaults for connect/write and an unbounded call timeout. This can reproduce the earlier Sync/Proceed timeout failures during SMS verification flows whose server responses exceed OkHttp's 10-second defaults. Provenance: - Original bug discovery and real-device observation: @unpluggederan in microg#3360 - Prior implementation: @chenlinxi890-spec in microg#3596 - Foundragon delta: behavior-neutral client factory plus deterministic timeout regression in parent 687a236 Regression: - BEFORE at 276523b: [connect, read, write, call] = [10s, 60s, 10s, 0] - AFTER: [60s, 60s, 60s, 60s] Physical RCS E2E remains NOT YET PHYSICALLY VERIFIED.
Extract the existing Gaia-only consent mapping into a behavior-neutral helper, wire the Asterism JVM test source set, and add the focused resolver matrix. The baseline keeps matching-Gaia behavior, but fails the two cases where the server returns a valid RCS-specific consent without a matching Gaia entry. Provenance: - Original Constellation/Asterism implementation: @opstic (microg#3359/microg#3360) - Focused fallback tests/fix proposal: @keeltrace, naormeit#1 and #6 - Parallel follow-up: @Anusha0501, naormeit#4 - Foundragon delta: freeze only the minimal missing-field fallback; do not invent a new Gaia-vs-RCS precedence rule Expected BEFORE failures: - rcsConsentIsUsedWhenMatchingGaiaConsentIsAbsent - unrelatedGaiaConsentDoesNotMaskRcsConsent Physical RCS E2E remains NOT YET PHYSICALLY VERIFIED.
Implement play-services-asterism with AIDL surface and AsterismApiService for get/setAsterismConsent and getIsPnvrConstellationDevice, including fail-closed RCS consent semantics and Samsung composite-token helpers. Adapted from @opstic microg#3360 with hardening from microg#3808/microg#3784. Depends on the Constellation module for shared RPC/client pieces.
Document implemented RCS stack, gap vs microg#3360/microg#3808, build/test commands, logcat filters, and evidence Ayush must capture for BountyHub. Honest: still needs on-device E2E; no PR ready from this commit.
This is PR 2 of 2 towards RCS support.
Related PR: #3359
Related issue: #2994
Depends on #3359 (Note: Until it's merged, this PR will include its commits in the diff)
Description
This PR implements the Asterism service, including:
getAsterismConsentsetAsterismConsentgetIsPnvrConstellationDeviceThis PR uses gRPC proto definitions and client implementation introduced in
play-services-constellation(PR #3359)