diff --git a/src/com/android/settings/slices/SlicesIndexer.java b/src/com/android/settings/slices/SlicesIndexer.java
index ac30c6c..0160843 100644
--- a/src/com/android/settings/slices/SlicesIndexer.java
+++ b/src/com/android/settings/slices/SlicesIndexer.java
@@ -101,7 +101,7 @@
         for (SliceData dataRow : indexData) {
             values = new ContentValues();
             values.put(IndexColumns.KEY, dataRow.getKey());
-            values.put(IndexColumns.SLICE_URI, dataRow.getUri().toSafeString());
+            values.put(IndexColumns.SLICE_URI, dataRow.getUri().toString());
             values.put(IndexColumns.TITLE, dataRow.getTitle());
             values.put(IndexColumns.SUMMARY, dataRow.getSummary());
             final CharSequence screenTitle = dataRow.getScreenTitle();
@@ -122,4 +122,4 @@
                     values);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index 15a124d..f349600 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -120,7 +120,7 @@
         final Intent searchIntent = mProvider.buildSearchIntent(mActivity, SettingsEnums.TESTING);
         final Uri referrer = searchIntent.getParcelableExtra(Intent.EXTRA_REFERRER);
 
-        assertThat(referrer.toSafeString()).isEqualTo(
+        assertThat(referrer.toString()).isEqualTo(
                 "android-app://" + mActivity.getPackageName() + "/" + SettingsEnums.TESTING);
     }
 
diff --git a/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java
index f47c5f9..fa1fed5 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java
@@ -332,7 +332,7 @@
         values.put(SlicesDatabaseHelper.IndexColumns.ICON_RESOURCE, SliceTestUtils.FAKE_ICON);
         values.put(SlicesDatabaseHelper.IndexColumns.FRAGMENT, SliceTestUtils.FAKE_FRAGMENT_NAME);
         values.put(SlicesDatabaseHelper.IndexColumns.CONTROLLER, controllerClass);
-        values.put(SlicesDatabaseHelper.IndexColumns.SLICE_URI, buildUri(key).toSafeString());
+        values.put(SlicesDatabaseHelper.IndexColumns.SLICE_URI, buildUri(key).toString());
         values.put(SlicesDatabaseHelper.IndexColumns.HIGHLIGHT_MENU_RESOURCE,
                 SliceTestUtils.FAKE_HIGHLIGHT_MENU_RES);
         mDb.replaceOrThrow(SlicesDatabaseHelper.Tables.TABLE_SLICES_INDEX, null, values);
@@ -357,4 +357,4 @@
             return true;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
index 0c654a4..69f1886 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
@@ -121,7 +121,7 @@
         assertThat(fakeSlice.getScreenTitle()).isEqualTo(FAKE_SCREEN_TITLE);
         assertThat(fakeSlice.getKeywords()).isNull();
         assertThat(fakeSlice.getIconResource()).isNotNull();
-        assertThat(fakeSlice.getUri().toSafeString())
+        assertThat(fakeSlice.getUri().toString())
                 .isEqualTo("content://com.android.settings.slices/action/key");
         assertThat(fakeSlice.getFragmentClassName()).isEqualTo(FAKE_FRAGMENT_CLASSNAME);
         assertThat(fakeSlice.getPreferenceController()).isEqualTo(FAKE_CONTROLLER_NAME);
@@ -160,4 +160,4 @@
 
         return serviceInfoList;
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/slices/SliceTestUtils.java b/tests/robotests/src/com/android/settings/slices/SliceTestUtils.java
index 97beeb3..d6a0b5e 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceTestUtils.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceTestUtils.java
@@ -64,7 +64,7 @@
                                 : SettingsSliceProvider.SLICE_AUTHORITY)
                         .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
                         .appendPath(key)
-                        .build().toSafeString());
+                        .build().toString());
         values.put(SlicesDatabaseHelper.IndexColumns.TITLE, FAKE_TITLE);
         values.put(SlicesDatabaseHelper.IndexColumns.SUMMARY, FAKE_SUMMARY);
         values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, FAKE_SCREEN_TITLE);
diff --git a/tests/unit/src/com/android/settings/slices/SliceTestUtils.java b/tests/unit/src/com/android/settings/slices/SliceTestUtils.java
index 40a827a..020bde2 100644
--- a/tests/unit/src/com/android/settings/slices/SliceTestUtils.java
+++ b/tests/unit/src/com/android/settings/slices/SliceTestUtils.java
@@ -64,7 +64,7 @@
                                 : SettingsSliceProvider.SLICE_AUTHORITY)
                         .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION)
                         .appendPath(key)
-                        .build().toSafeString());
+                        .build().toString());
         values.put(SlicesDatabaseHelper.IndexColumns.TITLE, FAKE_TITLE);
         values.put(SlicesDatabaseHelper.IndexColumns.SUMMARY, FAKE_SUMMARY);
         values.put(SlicesDatabaseHelper.IndexColumns.SCREENTITLE, FAKE_SCREEN_TITLE);
