Conversation
Generated by 🚫 Danger |
bb475b9 to
7c4bb28
Compare
|
|
|
|
WordPress/src/main/java/org/wordpress/android/ui/accounts/LoginActivity.java
Fixed
Show fixed
Hide fixed
1e18626 to
5813d53
Compare
Project manifest changes for WordPressThe following changes in the --- ./build/reports/diff_manifest/WordPress/jetpackVanillaRelease/base_manifest.txt 2026-03-05 05:11:16.405815540 +0000
+++ ./build/reports/diff_manifest/WordPress/jetpackVanillaRelease/head_manifest.txt 2026-03-05 05:11:50.715960295 +0000
@@ -405,7 +405,8 @@
<activity
android:name="org.wordpress.android.ui.accounts.LoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:launchMode="singleTop"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -421,7 +422,7 @@
<activity
android:name="org.wordpress.android.ui.accounts.applicationpassword.ApplicationPasswordLoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -462,14 +463,6 @@
</intent-filter>
</activity>
<activity
- android:name="org.wordpress.android.ui.accounts.SignupEpilogueActivity"
- android:label="@string/signup_epilogue_screen_title"
- android:theme="@style/LoginTheme" />
- <activity
- android:name="org.wordpress.android.ui.accounts.PostSignupInterstitialActivity"
- android:label="@string/post_signup_interstitial_title"
- android:theme="@style/LoginTheme" />
- <activity
android:name="org.wordpress.android.ui.sitecreation.SiteCreationActivity"
android:theme="@style/WordPress.NoActionBar"
android:windowSoftInputMode="adjustResize" />
@@ -1129,11 +1122,6 @@
android:label="Installation Referrer Service"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
- android:name="org.wordpress.android.login.LoginWpcomService"
- android:exported="false"
- android:foregroundServiceType="shortService"
- android:label="Login to WPCOM Service" />
- <service
android:name="org.wordpress.android.ui.sitecreation.services.SiteCreationService"
android:exported="false"
android:foregroundServiceType="dataSync"
@@ -1548,37 +1536,6 @@
android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
- <service
- android:name="androidx.credentials.playservices.CredentialProviderMetadataHolder"
- android:enabled="true"
- android:exported="false" >
- <meta-data
- android:name="androidx.credentials.CREDENTIAL_PROVIDER_KEY"
- android:value="androidx.credentials.playservices.CredentialProviderPlayServicesImpl" />
- </service>
-
- <activity
- android:name="androidx.credentials.playservices.HiddenActivity"
- android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
- android:enabled="true"
- android:exported="false"
- android:fitsSystemWindows="true"
- android:theme="@style/Theme.Hidden" >
- </activity>
- <activity
- android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"
- android:excludeFromRecents="true"
- android:exported="false"
- android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- <!--
- Service handling Google Sign-In user revocation. For apps that do not integrate with
- Google Sign-In, this service will never be started.
- -->
- <service
- android:name="com.google.android.gms.auth.api.signin.RevocationBoundService"
- android:exported="true"
- android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION"
- android:visibleToInstantApps="true" />
<activity
android:name="com.google.android.gms.common.api.GoogleApiActivity"Go to https://buildkite.com/automattic/wordpress-android/builds/25311/canvas?sid=019cbc63-3c18-4d4a-a284-72338632f9f6, click on the |
Project manifest changes for WordPressThe following changes in the --- ./build/reports/diff_manifest/WordPress/wordpressVanillaRelease/base_manifest.txt 2026-03-05 05:11:16.109969985 +0000
+++ ./build/reports/diff_manifest/WordPress/wordpressVanillaRelease/head_manifest.txt 2026-03-05 05:11:51.040226003 +0000
@@ -211,7 +211,8 @@
<activity
android:name="org.wordpress.android.ui.accounts.LoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:launchMode="singleTop"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -227,7 +228,7 @@
<activity
android:name="org.wordpress.android.ui.accounts.applicationpassword.ApplicationPasswordLoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -268,14 +269,6 @@
</intent-filter>
</activity>
<activity
- android:name="org.wordpress.android.ui.accounts.SignupEpilogueActivity"
- android:label="@string/signup_epilogue_screen_title"
- android:theme="@style/LoginTheme" />
- <activity
- android:name="org.wordpress.android.ui.accounts.PostSignupInterstitialActivity"
- android:label="@string/post_signup_interstitial_title"
- android:theme="@style/LoginTheme" />
- <activity
android:name="org.wordpress.android.ui.sitecreation.SiteCreationActivity"
android:theme="@style/WordPress.NoActionBar"
android:windowSoftInputMode="adjustResize" />
@@ -1102,11 +1095,6 @@
android:label="Installation Referrer Service"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
- android:name="org.wordpress.android.login.LoginWpcomService"
- android:exported="false"
- android:foregroundServiceType="shortService"
- android:label="Login to WPCOM Service" />
- <service
android:name="org.wordpress.android.ui.sitecreation.services.SiteCreationService"
android:exported="false"
android:foregroundServiceType="dataSync"
@@ -1521,37 +1509,6 @@
android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
- <service
- android:name="androidx.credentials.playservices.CredentialProviderMetadataHolder"
- android:enabled="true"
- android:exported="false" >
- <meta-data
- android:name="androidx.credentials.CREDENTIAL_PROVIDER_KEY"
- android:value="androidx.credentials.playservices.CredentialProviderPlayServicesImpl" />
- </service>
-
- <activity
- android:name="androidx.credentials.playservices.HiddenActivity"
- android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
- android:enabled="true"
- android:exported="false"
- android:fitsSystemWindows="true"
- android:theme="@style/Theme.Hidden" >
- </activity>
- <activity
- android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"
- android:excludeFromRecents="true"
- android:exported="false"
- android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- <!--
- Service handling Google Sign-In user revocation. For apps that do not integrate with
- Google Sign-In, this service will never be started.
- -->
- <service
- android:name="com.google.android.gms.auth.api.signin.RevocationBoundService"
- android:exported="true"
- android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION"
- android:visibleToInstantApps="true" />
<activity
android:name="com.google.android.gms.common.api.GoogleApiActivity"Go to https://buildkite.com/automattic/wordpress-android/builds/25311/canvas?sid=019cbc63-3c16-44e7-90f9-b170cbfc3f3f, click on the |
Project dependencies changeslist- Removed Dependencies
androidx.credentials:credentials:1.2.0
androidx.credentials:credentials-play-services-auth:1.2.0
com.google.android.gms:play-services-auth:20.7.0
com.google.android.gms:play-services-auth-api-phone:18.0.1
com.google.android.gms:play-services-auth-base:18.0.4
com.google.android.gms:play-services-fido:20.1.0
com.google.android.libraries.identity.googleid:googleid:1.1.0tree++--- com.gravatar:gravatar:2.5.0
+| +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 -> 2.3.10 (*)
+| +--- com.squareup.moshi:moshi:1.15.1
+| | +--- com.squareup.okio:okio:3.7.0 -> 3.16.4 (*)
+| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.24 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*)
+| +--- com.squareup.okhttp3:okhttp:4.12.0 -> 5.3.2 (*)
+| \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.10 (*)
++--- com.google.android.play:app-update:2.1.0
+| +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.8.0
+| | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*)
+| | +--- androidx.core:core:1.2.0 -> 1.16.0 (*)
+| | \--- androidx.fragment:fragment:1.1.0 -> 1.8.9 (*)
+| \--- com.google.android.gms:play-services-tasks:18.0.2 -> 18.4.0
+| \--- com.google.android.gms:play-services-basement:18.8.0 (*)
++--- com.google.mlkit:barcode-scanning-common:17.0.0
+| \--- com.google.mlkit:vision-common:17.0.0 -> 17.3.0
+| \--- com.google.android.gms:play-services-base:18.1.0 -> 18.5.0
+| +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*)
+| +--- androidx.core:core:1.2.0 -> 1.16.0 (*)
+| +--- androidx.fragment:fragment:1.0.0 -> 1.8.9 (*)
+| +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.8.0 (*)
+| \--- com.google.android.gms:play-services-tasks:18.2.0 -> 18.4.0 (*)
++--- com.zendesk:support:5.5.3
+| \--- com.google.dagger:dagger-android:2.48.1 -> 2.58
+| +--- com.google.dagger:dagger:2.58 (*)
+| +--- com.google.dagger:dagger-lint-aar:2.58
+| +--- androidx.annotation:annotation:1.7.1 -> 1.9.1 (*)
+| \--- javax.inject:javax.inject:1
+\--- com.google.dagger:dagger-android-support:2.58
+ +--- com.google.dagger:dagger:2.58 (*)
+ +--- com.google.dagger:dagger-android:2.58 (*)
+ +--- com.google.dagger:dagger-lint-aar:2.58
+ +--- androidx.activity:activity:1.5.1 -> 1.10.1 (*)
+ +--- androidx.annotation:annotation:1.7.1 -> 1.9.1 (*)
+ +--- androidx.appcompat:appcompat:1.3.1 -> 1.7.1 (*)
+ +--- androidx.fragment:fragment:1.5.1 -> 1.8.9 (*)
+ +--- androidx.lifecycle:lifecycle-common:2.5.1 -> 2.10.0 (*)
+ +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.10.0 (*)
+ +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1 -> 2.10.0 (*)
+ \--- javax.inject:javax.inject:1
-+--- project :libs:login
-| +--- com.google.android.gms:play-services-auth:20.4.1 -> 20.7.0
-| | +--- androidx.fragment:fragment:1.0.0 -> 1.8.9 (*)
-| | +--- androidx.loader:loader:1.0.0 (*)
-| | +--- com.google.android.gms:play-services-auth-api-phone:18.0.1
-| | | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0
-| | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*)
-| | | | +--- androidx.core:core:1.2.0 -> 1.16.0 (*)
-| | | | +--- androidx.fragment:fragment:1.0.0 -> 1.8.9 (*)
-| | | | +--- com.google.android.gms:play-services-basement:18.4.0 -> 18.8.0
-| | | | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*)
-| | | | | +--- androidx.core:core:1.2.0 -> 1.16.0 (*)
-| | | | | \--- androidx.fragment:fragment:1.1.0 -> 1.8.9 (*)
-| | | | \--- com.google.android.gms:play-services-tasks:18.2.0 -> 18.4.0
-| | | | \--- com.google.android.gms:play-services-basement:18.8.0 (*)
-| | | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.8.0 (*)
-| | | \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.4.0 (*)
-| | +--- com.google.android.gms:play-services-auth-base:18.0.4
-| | | +--- androidx.collection:collection:1.0.0 -> 1.5.0 (*)
-| | | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0 (*)
-| | | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.8.0 (*)
-| | | \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.4.0 (*)
-| | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0 (*)
-| | +--- com.google.android.gms:play-services-basement:18.2.0 -> 18.8.0 (*)
-| | +--- com.google.android.gms:play-services-fido:20.0.1 -> 20.1.0
-| | | +--- com.google.android.gms:play-services-base:18.0.1 -> 18.5.0 (*)
-| | | +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.8.0 (*)
-| | | \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.4.0 (*)
-| | \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.4.0 (*)
-| +--- org.jetbrains.kotlin:kotlin-stdlib:2.3.10 (*)
-| +--- org.wordpress:utils:3.14.0 (*)
-| +--- com.gravatar:gravatar:2.5.0
-| | +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:2.0.21 -> 2.3.10 (*)
-| | +--- com.squareup.moshi:moshi:1.15.1
-| | | +--- com.squareup.okio:okio:3.7.0 -> 3.16.4 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.21 -> 1.9.24 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.10.2 (*)
-| | +--- com.squareup.okhttp3:okhttp:4.12.0 -> 5.3.2 (*)
-| | \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.21 -> 2.3.10 (*)
-| +--- androidx.appcompat:appcompat:1.7.1 (*)
-| +--- androidx.constraintlayout:constraintlayout:2.2.1 (*)
-| +--- com.google.android.material:material:1.12.0 (*)
-| +--- androidx.core:core:1.16.0 (*)
-| +--- project :libs:fluxc (*)
-| +--- com.github.bumptech.glide:glide:5.0.5 (*)
-| +--- androidx.credentials:credentials:1.2.0
-| | +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.10 (*)
-| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 -> 1.10.2 (*)
-| | \--- androidx.credentials:credentials-play-services-auth:1.2.0 (c)
-| +--- androidx.credentials:credentials-play-services-auth:1.2.0
-| | +--- androidx.credentials:credentials:1.2.0 (*)
-| | +--- com.google.android.gms:play-services-auth:20.7.0 (*)
-| | +--- com.google.android.gms:play-services-fido:20.1.0 (*)
-| | +--- com.google.android.libraries.identity.googleid:googleid:1.1.0
-| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.0 -> 2.3.10 (*)
-| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.24 (*)
-| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.3.10 (*)
-| | \--- androidx.credentials:credentials:1.2.0 (c)
-| +--- com.google.dagger:dagger:2.58 (*)
-| \--- com.google.dagger:dagger-android-support:2.58
-| +--- com.google.dagger:dagger:2.58 (*)
-| +--- com.google.dagger:dagger-android:2.58
-| | +--- com.google.dagger:dagger:2.58 (*)
-| | +--- com.google.dagger:dagger-lint-aar:2.58
-| | +--- androidx.annotation:annotation:1.7.1 -> 1.9.1 (*)
-| | \--- javax.inject:javax.inject:1
-| +--- com.google.dagger:dagger-lint-aar:2.58
-| +--- androidx.activity:activity:1.5.1 -> 1.10.1 (*)
-| +--- androidx.annotation:annotation:1.7.1 -> 1.9.1 (*)
-| +--- androidx.appcompat:appcompat:1.3.1 -> 1.7.1 (*)
-| +--- androidx.fragment:fragment:1.5.1 -> 1.8.9 (*)
-| +--- androidx.lifecycle:lifecycle-common:2.5.1 -> 2.10.0 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.10.0 (*)
-| +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1 -> 2.10.0 (*)
-| \--- javax.inject:javax.inject:1
-+--- com.gravatar:gravatar:2.5.0 (*)
-+--- com.google.android.play:app-update:2.1.0
-| +--- com.google.android.gms:play-services-basement:18.1.0 -> 18.8.0 (*)
-| \--- com.google.android.gms:play-services-tasks:18.0.2 -> 18.4.0 (*)
-+--- com.google.android.gms:play-services-auth:20.4.1 -> 20.7.0 (*)
-+--- com.google.mlkit:barcode-scanning-common:17.0.0
-| \--- com.google.mlkit:vision-common:17.0.0 -> 17.3.0
-| \--- com.google.android.gms:play-services-base:18.1.0 -> 18.5.0 (*)
-+--- com.zendesk:support:5.5.3
-| \--- com.google.dagger:dagger-android:2.48.1 -> 2.58 (*)
-\--- com.google.dagger:dagger-android-support:2.58 (*) |
011be66 to
014a615
Compare
| // JETPACK_LOGIN_ONLY = JPAndroid | ||
| LoginMode loginMode = getLoginMode(); | ||
| if ((mLoginHelper.isLoggedIn()) && (loginMode == LoginMode.FULL || loginMode == LoginMode.JETPACK_LOGIN_ONLY)) { | ||
| LoginFlow loginFlow = getLoginFlow(); |
Check notice
Code scanning / Android Lint
Nullable/NonNull annotation missing on field Note
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## trunk #22564 +/- ##
==========================================
- Coverage 37.50% 37.49% -0.02%
==========================================
Files 2298 2286 -12
Lines 120741 120484 -257
Branches 16531 16501 -30
==========================================
- Hits 45288 45173 -115
+ Misses 71781 71637 -144
- Partials 3672 3674 +2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
51907de to
37c3965
Compare
|
@jkmassel This isn't a new issue but it's worth mentioning. If I login using my wp.com site address and approve the connection, the Me tab still shows "Log in to WordPress.com" and there's no username or Gravatar. |
|
@jkmassel I asked Claude to look for and document any problems with this branch. I doubt any of these are new, but it might be worth a look. |
IINM, this is a server security feature for requests flagged as suspicious. |
|
Testing went well overall for me. I successfully performed the PRs testing instructions. I did not encounter layout regressions. I noted a few oddities related to when triggering the re-authentication flow via opening the editor that I'll detail below. From the editor, approving the authentication appears to not succeed. Additional requests are displayed as you continue to tap Approve. I imagine the authentication does succeed, but the structure of the editor initialization results in repeated requests from concurrent logic. This occurs for both Gutenberg Mobile and GutenbergKit; Aztec does not trigger re-authorization at all. After approving the authorization, exiting and re-opening the editor results in success. Editor repeated auth approve
editor-repeat-auth-approve.mp4Similarly, from the editor, tapping Deny results in continued requests. Navigating backwards can lead to an empty white screen. Further backwards navigation can arrive to the top-level app, where one can navigate to views that are inoperable due to lack of authorization. There is no prompt to re-authenticate, but closing and re-opening the app will correctly prompt for login. Editor repeat auth deny
editor-repeat-auth-deny.mp4Editor repeat auth deny continuededitor-repeat-auth-deny-impact.mp4Neither of these feel significant. The latter feels more like an edge case. Addressing the former would be nice, but I'm unsure how complex the logic leading to this outcome may be. |
Static fields don't survive process death and can cause issues in multi-window mode. Move sPendingLoginFlow and sIsShareFlowPending to AppPrefs with dedicated getter/setter methods. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The light theme had transparent status/navigation bars but the night theme was missing these attributes, causing opaque system bars in dark mode. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The class had @singleton but the Dagger provider didn't, so a new instance was created on every injection. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
startPostLoginServices was defined but never called, so Reader tags and notification services weren't started after login. Also removes unused startOver and gotConnectedSiteInfo methods. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The hasApiRestUsername boolean check is sufficient for debugging without exposing the actual credential value. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move activity title setup into onViewCreated, removing the suppressed deprecation warning. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The service was bound but never unbound, causing a minor resource leak. Now unbinds when the helper is disposed in onDestroy. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Channel guarantees the event is buffered and consumed exactly once, even if the collector starts slightly after emission. Safer than SharedFlow(replay=0) for one-shot navigation events. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The window background from LoginTheme triggers a false positive overdraw warning since the ConstraintLayout itself has no explicit background. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Android Lint can't trace cross-flavor resource usage, so it flags these colors as unused. They're referenced by Compose code in the wordpress flavor. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When a user enters a WordPress.com site address in the site address field, redirect them to the WP.com OAuth flow instead of proceeding with application password authorization. This ensures WP.com account state is properly established so the Me tab shows the user's profile. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The LoginFlow e2e helper imported resources from the deleted login library and referenced views (login_username_row, login_password_row) that no longer exist. Remove the dead enterUsernameAndPassword and enterSiteAddress methods since login forms are now Compose-based and WP.com login uses OAuth via Custom Tabs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously tryLoginWithDataString silently returned if the code query parameter was absent, leaving the caller on a loading screen indefinitely. Now reports the error via the onFailure callback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29158a0 to
c9a5cf3
Compare
Project manifest changes for WordPressThe following changes in the --- ./build/reports/diff_manifest/WordPress/jetpackRelease/base_manifest.txt 2026-03-17 16:04:36.023970806 +0000
+++ ./build/reports/diff_manifest/WordPress/jetpackRelease/head_manifest.txt 2026-03-17 16:05:14.144178972 +0000
@@ -411,7 +411,8 @@
<activity
android:name="org.wordpress.android.ui.accounts.LoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:launchMode="singleTop"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -427,7 +428,7 @@
<activity
android:name="org.wordpress.android.ui.accounts.applicationpassword.ApplicationPasswordLoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -468,14 +469,6 @@
</intent-filter>
</activity>
<activity
- android:name="org.wordpress.android.ui.accounts.SignupEpilogueActivity"
- android:label="@string/signup_epilogue_screen_title"
- android:theme="@style/LoginTheme" />
- <activity
- android:name="org.wordpress.android.ui.accounts.PostSignupInterstitialActivity"
- android:label="@string/post_signup_interstitial_title"
- android:theme="@style/LoginTheme" />
- <activity
android:name="org.wordpress.android.ui.sitecreation.SiteCreationActivity"
android:theme="@style/WordPress.NoActionBar"
android:windowSoftInputMode="adjustResize" />
@@ -1143,11 +1136,6 @@
android:label="Installation Referrer Service"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
- android:name="org.wordpress.android.login.LoginWpcomService"
- android:exported="false"
- android:foregroundServiceType="shortService"
- android:label="Login to WPCOM Service" />
- <service
android:name="org.wordpress.android.ui.sitecreation.services.SiteCreationService"
android:exported="false"
android:foregroundServiceType="dataSync"
@@ -1562,37 +1550,6 @@
android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
- <service
- android:name="androidx.credentials.playservices.CredentialProviderMetadataHolder"
- android:enabled="true"
- android:exported="false" >
- <meta-data
- android:name="androidx.credentials.CREDENTIAL_PROVIDER_KEY"
- android:value="androidx.credentials.playservices.CredentialProviderPlayServicesImpl" />
- </service>
-
- <activity
- android:name="androidx.credentials.playservices.HiddenActivity"
- android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
- android:enabled="true"
- android:exported="false"
- android:fitsSystemWindows="true"
- android:theme="@style/Theme.Hidden" >
- </activity>
- <activity
- android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"
- android:excludeFromRecents="true"
- android:exported="false"
- android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- <!--
- Service handling Google Sign-In user revocation. For apps that do not integrate with
- Google Sign-In, this service will never be started.
- -->
- <service
- android:name="com.google.android.gms.auth.api.signin.RevocationBoundService"
- android:exported="true"
- android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION"
- android:visibleToInstantApps="true" />
<activity
android:name="com.google.android.gms.common.api.GoogleApiActivity"Go to https://buildkite.com/automattic/wordpress-android/builds/25528/canvas?sid=019cfc82-cd1e-4753-9ce5-cd9814080494, click on the |
Project manifest changes for WordPressThe following changes in the --- ./build/reports/diff_manifest/WordPress/wordpressRelease/base_manifest.txt 2026-03-17 16:04:11.068170327 +0000
+++ ./build/reports/diff_manifest/WordPress/wordpressRelease/head_manifest.txt 2026-03-17 16:04:43.228337239 +0000
@@ -219,7 +219,8 @@
<activity
android:name="org.wordpress.android.ui.accounts.LoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:launchMode="singleTop"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -235,7 +236,7 @@
<activity
android:name="org.wordpress.android.ui.accounts.applicationpassword.ApplicationPasswordLoginActivity"
android:exported="true"
- android:theme="@style/LoginTheme.TransparentSystemBars"
+ android:theme="@style/LoginTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -276,14 +277,6 @@
</intent-filter>
</activity>
<activity
- android:name="org.wordpress.android.ui.accounts.SignupEpilogueActivity"
- android:label="@string/signup_epilogue_screen_title"
- android:theme="@style/LoginTheme" />
- <activity
- android:name="org.wordpress.android.ui.accounts.PostSignupInterstitialActivity"
- android:label="@string/post_signup_interstitial_title"
- android:theme="@style/LoginTheme" />
- <activity
android:name="org.wordpress.android.ui.sitecreation.SiteCreationActivity"
android:theme="@style/WordPress.NoActionBar"
android:windowSoftInputMode="adjustResize" />
@@ -1118,11 +1111,6 @@
android:label="Installation Referrer Service"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
- android:name="org.wordpress.android.login.LoginWpcomService"
- android:exported="false"
- android:foregroundServiceType="shortService"
- android:label="Login to WPCOM Service" />
- <service
android:name="org.wordpress.android.ui.sitecreation.services.SiteCreationService"
android:exported="false"
android:foregroundServiceType="dataSync"
@@ -1537,37 +1525,6 @@
android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
- <service
- android:name="androidx.credentials.playservices.CredentialProviderMetadataHolder"
- android:enabled="true"
- android:exported="false" >
- <meta-data
- android:name="androidx.credentials.CREDENTIAL_PROVIDER_KEY"
- android:value="androidx.credentials.playservices.CredentialProviderPlayServicesImpl" />
- </service>
-
- <activity
- android:name="androidx.credentials.playservices.HiddenActivity"
- android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
- android:enabled="true"
- android:exported="false"
- android:fitsSystemWindows="true"
- android:theme="@style/Theme.Hidden" >
- </activity>
- <activity
- android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity"
- android:excludeFromRecents="true"
- android:exported="false"
- android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- <!--
- Service handling Google Sign-In user revocation. For apps that do not integrate with
- Google Sign-In, this service will never be started.
- -->
- <service
- android:name="com.google.android.gms.auth.api.signin.RevocationBoundService"
- android:exported="true"
- android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION"
- android:visibleToInstantApps="true" />
<activity
android:name="com.google.android.gms.common.api.GoogleApiActivity"Go to https://buildkite.com/automattic/wordpress-android/builds/25528/canvas?sid=019cfc82-cd1d-4afb-a25a-5fe602648f61, click on the |
- Remove unused AppLog imports from WPcomLoginHelper - Replace generic Exception catch with Result.fold to satisfy detekt - Fix kover task name to match trunk's flavor rename (no more Wasabi) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts: # WordPress/src/main/java/org/wordpress/android/ui/accounts/login/applicationpassword/ApplicationPasswordAutoAuthDialogViewModel.kt # WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java
|
@jkmassel This is looking pretty solid, but Claude flagged one issue that's worth resolving:
|
mIsWaitingForSitesToLoad and mOldSitesIdsForLoginUpdate were not saved in onSaveInstanceState, so a device rotation during the post-OAuth account/sites fetch would reset the flags and leave the user stuck on the loading screen. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gate the onResume completion check on a new mShareFlowLoginLaunched flag so LoginActivity doesn't immediately finish with RESULT_OK when the user already has sites but hasn't completed the share-flow login. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
@adalpari Just an FYI that Claude reports some further issues with this PR, but I didn't see anything too problematic. If you spot anything serious please let me know, but otherwise it might be best to merge as-is and resolve the lesser issues separately. |
adalpari
left a comment
There was a problem hiding this comment.
Thank you for all the work around this PR!!
![]()






Description
This PR removes the legacy login library and fixes some login flow weirdness by:
Removed legacy login components:
LoginMode.JETPACK_SELFHOSTEDandWOO_LOGIN_MODEModernized login UI:
LoginSiteApplicationPasswordFragmentto Jetpack ComposeLoginPrologueRevampedFragmentwith edge-to-edge support for Android 15+LoginActivityandApplicationPasswordLoginActivityImproved user experience:
Code cleanup:
Screenshots:
Testing instructions
WP.com Login:
Self-hosted Login:
Edge-to-edge (Android 15+):
Notifications reload:
Reauthentication (self-hosted):
Reauthentication (WP.com):