Make summary text update after settings changes
The uri's being pinged when changes happened were incorrect, because
of a hard coded '/'.
Change-Id: I4d04642bc80b97c5191bf0e1e7a5e15a2c58d6c9
Merged-In: I6735c5a60dc7df6894bd17e67d7702a7ec6c07d4
Fixes: 79779837
Test: robotest
diff --git a/src/com/android/settings/slices/SliceBroadcastReceiver.java b/src/com/android/settings/slices/SliceBroadcastReceiver.java
index 80e3e3c..1e41393 100644
--- a/src/com/android/settings/slices/SliceBroadcastReceiver.java
+++ b/src/com/android/settings/slices/SliceBroadcastReceiver.java
@@ -27,6 +27,7 @@
import android.app.slice.Slice;
import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
@@ -151,6 +152,7 @@
sliderController.setSliderPosition(newPosition);
logSliceValueChange(context, key, newPosition);
+ updateUri(context, key, isPlatformSlice);
}
/**
@@ -173,8 +175,15 @@
}
private void updateUri(Context context, String key, boolean isPlatformDefined) {
- final String path = SettingsSlicesContract.PATH_SETTING_ACTION + "/" + key;
- final Uri uri = SliceBuilderUtils.getUri(path, isPlatformDefined);
+ final String authority = isPlatformDefined
+ ? SettingsSlicesContract.AUTHORITY
+ : SettingsSliceProvider.SLICE_AUTHORITY;
+ final Uri uri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(authority)
+ .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+ .appendPath(key)
+ .build();
context.getContentResolver().notifyChange(uri, null /* observer */);
}
}
diff --git a/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java
index f03f88e..21a0206 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java
@@ -95,8 +95,16 @@
@Test
public void onReceive_toggleChanged() {
final String key = "key";
+ final Uri uri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(SettingsSliceProvider.SLICE_AUTHORITY)
+ .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+ .appendPath(key)
+ .build();
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
insertSpecialCase(key);
+ final ContentResolver resolver = mock(ContentResolver.class);
+ doReturn(resolver).when(mContext).getContentResolver();
// Turn on toggle setting
FakeToggleController fakeToggleController = new FakeToggleController(mContext, key);
fakeToggleController.setChecked(true);
@@ -120,6 +128,7 @@
assertThat(namePair.first).isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME);
assertThat(namePair.second).isEqualTo(fakeToggleController.getPreferenceKey());
+ verify(resolver).notifyChange(uri, null);
assertThat(valuePair.first)
.isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE);
assertThat(valuePair.second).isEqualTo(0);
@@ -128,6 +137,14 @@
@Test
public void onReceive_sliderChanged() {
final String key = "key";
+ final Uri uri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(SettingsSliceProvider.SLICE_AUTHORITY)
+ .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+ .appendPath(key)
+ .build();
+ final ContentResolver resolver = mock(ContentResolver.class);
+ doReturn(resolver).when(mContext).getContentResolver();
final int position = FakeSliderController.MAX_STEPS - 1;
final int oldPosition = FakeSliderController.MAX_STEPS;
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
@@ -158,6 +175,7 @@
assertThat(namePair.first).isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME);
assertThat(namePair.second).isEqualTo(key);
+ verify(resolver).notifyChange(uri, null);
assertThat(valuePair.first)
.isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE);
assertThat(valuePair.second).isEqualTo(position);
@@ -231,8 +249,12 @@
// Check the value is the same and the Uri has been notified.
assertThat(fakeToggleController.isChecked()).isTrue();
- final Uri expectedUri = SliceBuilderUtils.getUri(
- SettingsSlicesContract.PATH_SETTING_ACTION + "/" + key, false);
+ final Uri expectedUri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(SettingsSliceProvider.SLICE_AUTHORITY)
+ .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+ .appendPath(key)
+ .build();
verify(resolver).notifyChange(eq(expectedUri), eq(null));
}
@@ -268,8 +290,12 @@
// Check position is the same and the Uri has been notified.
assertThat(fakeSliderController.getSliderPosition()).isEqualTo(oldPosition);
- final Uri expectedUri = SliceBuilderUtils.getUri(
- SettingsSlicesContract.PATH_SETTING_ACTION + "/" + key, false);
+ final Uri expectedUri = new Uri.Builder()
+ .scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(SettingsSliceProvider.SLICE_AUTHORITY)
+ .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
+ .appendPath(key)
+ .build();
verify(resolver).notifyChange(eq(expectedUri), eq(null));
}