From 17edf20fa5105d690da4bb74cd964efb2e1bf757 Mon Sep 17 00:00:00 2001 From: jeffreyhuang Date: Mon, 16 Oct 2017 16:56:26 -0700 Subject: [PATCH] Lazy load SettingsObserver - Lazy load the SettingsObserver in StayAwakePreferenceController so that search indexing works properly Bug: 34203528 Test: make RunSettingsRoboTests -j40 Change-Id: I1e2afb106ce293f616143da3f37fbde3829f414f --- .../development/StayAwakePreferenceController.java | 14 +++++++++----- .../StayAwakePreferenceControllerTest.java | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/development/StayAwakePreferenceController.java b/src/com/android/settings/development/StayAwakePreferenceController.java index 1296770e7b1..c2e8a176227 100644 --- a/src/com/android/settings/development/StayAwakePreferenceController.java +++ b/src/com/android/settings/development/StayAwakePreferenceController.java @@ -56,7 +56,6 @@ public class StayAwakePreferenceController extends DeveloperOptionsPreferenceCon public StayAwakePreferenceController(Context context, Lifecycle lifecycle) { super(context); - mSettingsObserver = new SettingsObserver(); if (lifecycle != null) { lifecycle.addObserver(this); @@ -99,16 +98,21 @@ public class StayAwakePreferenceController extends DeveloperOptionsPreferenceCon @Override public void onResume() { - if (mPreference != null) { - mSettingsObserver.register(true /* register */); + if (mPreference == null) { + return; } + if (mSettingsObserver == null) { + mSettingsObserver = new SettingsObserver(); + } + mSettingsObserver.register(true /* register */); } @Override public void onPause() { - if (mPreference != null) { - mSettingsObserver.register(false /* unregister */); + if (mPreference == null || mSettingsObserver == null) { + return; } + mSettingsObserver.register(false /* unregister */); } @Override diff --git a/tests/robotests/src/com/android/settings/development/StayAwakePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/StayAwakePreferenceControllerTest.java index daffd2e58dc..41b9fde2a36 100644 --- a/tests/robotests/src/com/android/settings/development/StayAwakePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/StayAwakePreferenceControllerTest.java @@ -123,6 +123,7 @@ public class StayAwakePreferenceControllerTest { public void observerOnChangeCalledWithSameUri_preferenceShouldBeUpdated() { Settings.System.putInt(mContentResolver, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, StayAwakePreferenceController.SETTING_VALUE_ON); + mController.onResume(); mController.mSettingsObserver.onChange(false, Settings.Global.getUriFor(Settings.Global.STAY_ON_WHILE_PLUGGED_IN)); @@ -133,6 +134,7 @@ public class StayAwakePreferenceControllerTest { public void observerOnChangeCalledWithDifferentUri_preferenceShouldNotBeUpdated() { Settings.System.putInt(mContentResolver, Settings.Global.STAY_ON_WHILE_PLUGGED_IN, StayAwakePreferenceController.SETTING_VALUE_ON); + mController.onResume(); mController.mSettingsObserver.onChange(false, null); verify(mPreference, never()).setChecked(true);