From 318f7cc5124873abba9e673ab62f41c4f42cd166 Mon Sep 17 00:00:00 2001 From: Ahaan Ugale Date: Wed, 24 Mar 2021 17:13:07 -0700 Subject: [PATCH] Fix passwords settings crash due to null lifecycle owner. A change related to lifecycles was reverted some time ago (I7e6d2e9e6fd363a3afdd3dbab24e7c3b36e9ed29), which caused this to break. The crash is only seen if an autofill service sets the new Passwords Activity attr; currently no services do. Fix: 184077486 Test: manual - check settings page and see no crash Test: manual - same with work profile added Test: make RunSettingsRoboTests Change-Id: Ie439f37c9e884f9de2b112b348e1bef03adcd077 --- .../settings/accounts/AccountDashboardFragment.java | 7 +++++++ .../accounts/AccountPersonalDashboardFragment.java | 7 +++++++ .../accounts/AccountWorkProfileDashboardFragment.java | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/src/com/android/settings/accounts/AccountDashboardFragment.java b/src/com/android/settings/accounts/AccountDashboardFragment.java index 9e232f4abed..f57b124919d 100644 --- a/src/com/android/settings/accounts/AccountDashboardFragment.java +++ b/src/com/android/settings/accounts/AccountDashboardFragment.java @@ -27,6 +27,7 @@ import android.os.UserManager; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.applications.autofill.PasswordsPreferenceController; import com.android.settings.applications.defaultapps.DefaultAutofillPreferenceController; import com.android.settings.applications.defaultapps.DefaultWorkAutofillPreferenceController; import com.android.settings.dashboard.DashboardFragment; @@ -68,6 +69,12 @@ public class AccountDashboardFragment extends DashboardFragment { return R.string.help_url_user_and_account_dashboard; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + getSettingsLifecycle().addObserver(use(PasswordsPreferenceController.class)); + } + @Override protected List createPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); diff --git a/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java b/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java index c97c8862430..9ad12067233 100644 --- a/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java +++ b/src/com/android/settings/accounts/AccountPersonalDashboardFragment.java @@ -25,6 +25,7 @@ import android.content.Context; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.applications.autofill.PasswordsPreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.profileselector.ProfileSelectFragment; import com.android.settings.users.AutoSyncDataPreferenceController; @@ -61,6 +62,12 @@ public class AccountPersonalDashboardFragment extends DashboardFragment { return R.string.help_url_user_and_account_dashboard; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + getSettingsLifecycle().addObserver(use(PasswordsPreferenceController.class)); + } + @Override protected List createPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); diff --git a/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java b/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java index 4e6515b4459..1fdd3f6c428 100644 --- a/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java +++ b/src/com/android/settings/accounts/AccountWorkProfileDashboardFragment.java @@ -25,6 +25,7 @@ import android.content.Context; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.applications.autofill.PasswordsPreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.profileselector.ProfileSelectFragment; import com.android.settings.users.AutoSyncDataPreferenceController; @@ -61,6 +62,12 @@ public class AccountWorkProfileDashboardFragment extends DashboardFragment { return R.string.help_url_user_and_account_dashboard; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + getSettingsLifecycle().addObserver(use(PasswordsPreferenceController.class)); + } + @Override protected List createPreferenceControllers(Context context) { final List controllers = new ArrayList<>();