Merge "Move xmlParserUtils to core"
diff --git a/src/com/android/settings/search/XmlParserUtils.java b/src/com/android/settings/core/PreferenceXmlParserUtils.java
similarity index 97%
rename from src/com/android/settings/search/XmlParserUtils.java
rename to src/com/android/settings/core/PreferenceXmlParserUtils.java
index 27c5cd3..4d6e840 100644
--- a/src/com/android/settings/search/XmlParserUtils.java
+++ b/src/com/android/settings/core/PreferenceXmlParserUtils.java
@@ -12,10 +12,9 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- *
  */
 
-package com.android.settings.search;
+package com.android.settings.core;
 
 import android.annotation.Nullable;
 import android.content.Context;
@@ -27,7 +26,7 @@
 /**
  * Utility class to parse elements of XML preferences
  */
-public class XmlParserUtils {
+public class PreferenceXmlParserUtils {
 
     private static final String ENTRIES_SEPARATOR = "|";
 
diff --git a/src/com/android/settings/search/BaseSearchIndexProvider.java b/src/com/android/settings/search/BaseSearchIndexProvider.java
index 5723300..f75aa85 100644
--- a/src/com/android/settings/search/BaseSearchIndexProvider.java
+++ b/src/com/android/settings/search/BaseSearchIndexProvider.java
@@ -29,6 +29,7 @@
 
 import com.android.settings.core.BasePreferenceController;
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.PreferenceXmlParserUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -119,7 +120,7 @@
         final AttributeSet attrs = Xml.asAttributeSet(parser);
         try {
             while (parser.next() != XmlPullParser.END_DOCUMENT) {
-                final String key = XmlParserUtils.getDataKey(context, attrs);
+                final String key = PreferenceXmlParserUtils.getDataKey(context, attrs);
                 if (!TextUtils.isEmpty(key)) {
                     nonIndexableKeys.add(key);
                 }
diff --git a/src/com/android/settings/search/indexing/IndexDataConverter.java b/src/com/android/settings/search/indexing/IndexDataConverter.java
index c40a466..5d20704 100644
--- a/src/com/android/settings/search/indexing/IndexDataConverter.java
+++ b/src/com/android/settings/search/indexing/IndexDataConverter.java
@@ -29,11 +29,10 @@
 import android.util.Log;
 import android.util.Xml;
 
-import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.search.DatabaseIndexingUtils;
+import com.android.settings.core.PreferenceXmlParserUtils;
 import com.android.settings.search.ResultPayload;
 import com.android.settings.search.SearchIndexableRaw;
-import com.android.settings.search.XmlParserUtils;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -161,8 +160,8 @@
             final int outerDepth = parser.getDepth();
             final AttributeSet attrs = Xml.asAttributeSet(parser);
 
-            final String screenTitle = XmlParserUtils.getDataTitle(context, attrs);
-            String key = XmlParserUtils.getDataKey(context, attrs);
+            final String screenTitle = PreferenceXmlParserUtils.getDataTitle(context, attrs);
+            String key = PreferenceXmlParserUtils.getDataKey(context, attrs);
 
             String title;
             String headerTitle;
@@ -186,9 +185,9 @@
                         .getPayloadKeyMap(fragmentName, context);
             }
 
-            headerTitle = XmlParserUtils.getDataTitle(context, attrs);
-            headerSummary = XmlParserUtils.getDataSummary(context, attrs);
-            headerKeywords = XmlParserUtils.getDataKeywords(context, attrs);
+            headerTitle = PreferenceXmlParserUtils.getDataTitle(context, attrs);
+            headerSummary = PreferenceXmlParserUtils.getDataSummary(context, attrs);
+            headerKeywords = PreferenceXmlParserUtils.getDataKeywords(context, attrs);
             enabled = !nonIndexableKeys.contains(key);
 
             // TODO: Set payload type for header results
@@ -217,11 +216,11 @@
 
                 nodeName = parser.getName();
 
-                title = XmlParserUtils.getDataTitle(context, attrs);
-                key = XmlParserUtils.getDataKey(context, attrs);
+                title = PreferenceXmlParserUtils.getDataTitle(context, attrs);
+                key = PreferenceXmlParserUtils.getDataKey(context, attrs);
                 enabled = !nonIndexableKeys.contains(key);
-                keywords = XmlParserUtils.getDataKeywords(context, attrs);
-                iconResId = XmlParserUtils.getDataIcon(context, attrs);
+                keywords = PreferenceXmlParserUtils.getDataKeywords(context, attrs);
+                iconResId = PreferenceXmlParserUtils.getDataIcon(context, attrs);
 
                 if (isHeaderUnique && TextUtils.equals(headerTitle, title)) {
                     isHeaderUnique = false;
@@ -241,17 +240,17 @@
                         .setUserId(-1 /* default user id */);
 
                 if (!nodeName.equals(NODE_NAME_CHECK_BOX_PREFERENCE)) {
-                    summary = XmlParserUtils.getDataSummary(context, attrs);
+                    summary = PreferenceXmlParserUtils.getDataSummary(context, attrs);
 
                     String entries = null;
 
                     if (nodeName.endsWith(NODE_NAME_LIST_PREFERENCE)) {
-                        entries = XmlParserUtils.getDataEntries(context, attrs);
+                        entries = PreferenceXmlParserUtils.getDataEntries(context, attrs);
                     }
 
                     // TODO (b/62254931) index primitives instead of payload
                     payload = controllerUriMap.get(key);
-                    childFragment = XmlParserUtils.getDataChildFragment(context, attrs);
+                    childFragment = PreferenceXmlParserUtils.getDataChildFragment(context, attrs);
 
                     builder.setSummaryOn(summary)
                             .setEntries(entries)
@@ -263,11 +262,11 @@
                     // TODO (b/33577327) We removed summary off here. We should check if we can
                     // merge this 'else' section with the one above. Put a break point to
                     // investigate.
-                    String summaryOn = XmlParserUtils.getDataSummaryOn(context, attrs);
-                    String summaryOff = XmlParserUtils.getDataSummaryOff(context, attrs);
+                    String summaryOn = PreferenceXmlParserUtils.getDataSummaryOn(context, attrs);
+                    String summaryOff = PreferenceXmlParserUtils.getDataSummaryOff(context, attrs);
 
                     if (TextUtils.isEmpty(summaryOn) && TextUtils.isEmpty(summaryOff)) {
-                        summaryOn = XmlParserUtils.getDataSummary(context, attrs);
+                        summaryOn = PreferenceXmlParserUtils.getDataSummary(context, attrs);
                     }
 
                     builder.setSummaryOn(summaryOn);
diff --git a/src/com/android/settings/slices/SliceDataConverter.java b/src/com/android/settings/slices/SliceDataConverter.java
index e5a21e4..a023b16 100644
--- a/src/com/android/settings/slices/SliceDataConverter.java
+++ b/src/com/android/settings/slices/SliceDataConverter.java
@@ -30,7 +30,7 @@
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settings.search.Indexable.SearchIndexProvider;
-import com.android.settings.search.XmlParserUtils;
+import com.android.settings.core.PreferenceXmlParserUtils;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -151,7 +151,7 @@
 
             final int outerDepth = parser.getDepth();
             final AttributeSet attrs = Xml.asAttributeSet(parser);
-            final String screenTitle = XmlParserUtils.getDataTitle(mContext, attrs);
+            final String screenTitle = PreferenceXmlParserUtils.getDataTitle(mContext, attrs);
 
             // TODO (b/67996923) Investigate if we need headers for Slices, since they never
             // correspond to an actual setting.
@@ -168,15 +168,15 @@
                 // TODO (b/67996923) This will not work if preferences have nested intents:
                 // <pref ....>
                 //      <intent action="blab"/> </pref>
-                controllerClassName = XmlParserUtils.getController(mContext, attrs);
+                controllerClassName = PreferenceXmlParserUtils.getController(mContext, attrs);
                 if (TextUtils.isEmpty(controllerClassName)) {
                     continue;
                 }
 
-                title = XmlParserUtils.getDataTitle(mContext, attrs);
-                key = XmlParserUtils.getDataKey(mContext, attrs);
-                iconResId = XmlParserUtils.getDataIcon(mContext, attrs);
-                summary = XmlParserUtils.getDataSummary(mContext, attrs);
+                title = PreferenceXmlParserUtils.getDataTitle(mContext, attrs);
+                key = PreferenceXmlParserUtils.getDataKey(mContext, attrs);
+                iconResId = PreferenceXmlParserUtils.getDataIcon(mContext, attrs);
+                summary = PreferenceXmlParserUtils.getDataSummary(mContext, attrs);
 
                 xmlSlice = new SliceData.Builder()
                         .setKey(key)
diff --git a/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java b/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
index e69b97e..4939cca 100644
--- a/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
+++ b/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
@@ -17,7 +17,6 @@
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchFeatureProvider;
 import com.android.settings.search.SearchFeatureProviderImpl;
-import com.android.settings.search.XmlParserUtils;
 import com.android.settings.security.SecuritySettings;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -183,7 +182,7 @@
                     continue;
                 }
 
-                controllerClassName = XmlParserUtils.getController(mContext, attrs);
+                controllerClassName = PreferenceXmlParserUtils.getController(mContext, attrs);
                 // If controller is not indexed, then it is not compatible with
                 if (!TextUtils.isEmpty(controllerClassName)) {
                     xmlControllers.add(controllerClassName);
diff --git a/tests/robotests/src/com/android/settings/search/XmlParserUtilTest.java b/tests/robotests/src/com/android/settings/search/XmlParserUtilTest.java
index af7a462..2d1a232 100644
--- a/tests/robotests/src/com/android/settings/search/XmlParserUtilTest.java
+++ b/tests/robotests/src/com/android/settings/search/XmlParserUtilTest.java
@@ -26,6 +26,7 @@
 
 import com.android.settings.R;
 import com.android.settings.TestConfig;
+import com.android.settings.core.PreferenceXmlParserUtils;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
 import org.junit.Before;
@@ -58,7 +59,7 @@
         XmlResourceParser parser = getChildByType(R.xml.display_settings,
                 "com.android.settings.TimeoutListPreference");
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String title = XmlParserUtils.getDataTitle(mContext, attrs);
+        String title = PreferenceXmlParserUtils.getDataTitle(mContext, attrs);
         String expTitle = mContext.getString(R.string.screen_timeout);
         assertThat(title).isEqualTo(expTitle);
     }
@@ -67,7 +68,7 @@
     public void testDataKeywordsValid_ReturnsPreferenceKeywords() {
         XmlResourceParser parser = getParentPrimedParser(R.xml.display_settings);
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String keywords = XmlParserUtils.getDataKeywords(mContext, attrs);
+        String keywords = PreferenceXmlParserUtils.getDataKeywords(mContext, attrs);
         String expKeywords = mContext.getString(R.string.keywords_display);
         assertThat(keywords).isEqualTo(expKeywords);
     }
@@ -77,7 +78,7 @@
         XmlResourceParser parser = getChildByType(R.xml.display_settings,
                 "com.android.settings.TimeoutListPreference");
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String key = XmlParserUtils.getDataKey(mContext, attrs);
+        String key = PreferenceXmlParserUtils.getDataKey(mContext, attrs);
         String expKey = "screen_timeout";
         assertThat(key).isEqualTo(expKey);
     }
@@ -87,7 +88,7 @@
         XmlResourceParser parser = getChildByType(R.xml.display_settings,
                 "com.android.settings.TimeoutListPreference");
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String summary = XmlParserUtils.getDataSummary(mContext, attrs);
+        String summary = PreferenceXmlParserUtils.getDataSummary(mContext, attrs);
         String expSummary = mContext.getString(R.string.summary_placeholder);
         assertThat(summary).isEqualTo(expSummary);
 
@@ -99,9 +100,9 @@
         XmlResourceParser parser = getChildByType(R.xml.display_settings, "CheckBoxPreference");
         final AttributeSet attrs = Xml.asAttributeSet(parser);
 
-        assertThat(XmlParserUtils.getDataSummaryOn(mContext, attrs))
+        assertThat(PreferenceXmlParserUtils.getDataSummaryOn(mContext, attrs))
                 .isEqualTo("summary_on");
-        assertThat(XmlParserUtils.getDataSummaryOff(mContext, attrs))
+        assertThat(PreferenceXmlParserUtils.getDataSummaryOff(mContext, attrs))
                 .isEqualTo("summary_off");
     }
 
@@ -110,7 +111,7 @@
     public void testDataEntriesValid_ReturnsPreferenceEntries() {
         XmlResourceParser parser = getChildByType(R.xml.display_settings, "ListPreference");
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String entries = XmlParserUtils.getDataEntries(mContext, attrs);
+        String entries = PreferenceXmlParserUtils.getDataEntries(mContext, attrs);
         String[] expEntries = mContext.getResources()
                 .getStringArray(R.array.app_install_location_entries);
         for (int i = 0; i < expEntries.length; i++) {
@@ -124,7 +125,7 @@
     public void testDataKeyInvalid_ReturnsNull() {
         XmlResourceParser parser = getParentPrimedParser(R.xml.display_settings);
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String key = XmlParserUtils.getDataKey(mContext, attrs);
+        String key = PreferenceXmlParserUtils.getDataKey(mContext, attrs);
         assertThat(key).isNull();
     }
 
@@ -134,7 +135,7 @@
         XmlResourceParser parser = getChildByType(R.xml.about_legal, "Preference");
         final AttributeSet attrs = Xml.asAttributeSet(parser);
 
-        String controller = XmlParserUtils.getController(mContext, attrs);
+        String controller = PreferenceXmlParserUtils.getController(mContext, attrs);
         assertThat(controller).isEqualTo("mind_flayer");
     }
 
@@ -142,7 +143,7 @@
     public void testDataSummaryInvalid_ReturnsNull() {
         XmlResourceParser parser = getParentPrimedParser(R.xml.display_settings);
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String summary = XmlParserUtils.getDataSummary(mContext, attrs);
+        String summary = PreferenceXmlParserUtils.getDataSummary(mContext, attrs);
         assertThat(summary).isNull();
     }
 
@@ -150,7 +151,7 @@
     public void testDataSummaryOffInvalid_ReturnsNull() {
         XmlResourceParser parser = getParentPrimedParser(R.xml.display_settings);
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String summaryOff = XmlParserUtils.getDataSummaryOff(mContext, attrs);
+        String summaryOff = PreferenceXmlParserUtils.getDataSummaryOff(mContext, attrs);
         assertThat(summaryOff).isNull();
     }
 
@@ -158,7 +159,7 @@
     public void testDataEntriesInvalid_ReturnsNull() {
         XmlResourceParser parser = getParentPrimedParser(R.xml.display_settings);
         final AttributeSet attrs = Xml.asAttributeSet(parser);
-        String entries = XmlParserUtils.getDataEntries(mContext, attrs);
+        String entries = PreferenceXmlParserUtils.getDataEntries(mContext, attrs);
         assertThat(entries).isNull();
     }
 
diff --git a/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlTest.java b/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlTest.java
index 66ed459..9c079a7 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlTest.java
@@ -38,7 +38,7 @@
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchFeatureProvider;
 import com.android.settings.search.SearchFeatureProviderImpl;
-import com.android.settings.search.XmlParserUtils;
+import com.android.settings.core.PreferenceXmlParserUtils;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 
@@ -111,7 +111,7 @@
                     if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
                         continue;
                     }
-                    controllerClassName = XmlParserUtils.getController(mContext, attrs);
+                    controllerClassName = PreferenceXmlParserUtils.getController(mContext, attrs);
 
                     if (!TextUtils.isEmpty(controllerClassName)) {
                         mXmlDeclaredControllers.add(controllerClassName);
diff --git a/tests/robotests/src/com/android/settings/testutils/XmlTestUtils.java b/tests/robotests/src/com/android/settings/testutils/XmlTestUtils.java
index 4f560022..2b27649 100644
--- a/tests/robotests/src/com/android/settings/testutils/XmlTestUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/XmlTestUtils.java
@@ -7,7 +7,7 @@
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Xml;
-import com.android.settings.search.XmlParserUtils;
+import com.android.settings.core.PreferenceXmlParserUtils;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -35,7 +35,7 @@
         try {
             while (parser.next() != XmlPullParser.END_DOCUMENT) {
                 try {
-                    key = XmlParserUtils.getDataKey(context, attrs);
+                    key = PreferenceXmlParserUtils.getDataKey(context, attrs);
                     if (!TextUtils.isEmpty(key)) {
                         keys.add(key);
                     }
diff --git a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
index dd27591..e208709 100644
--- a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
+++ b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
@@ -36,7 +36,6 @@
 import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
 import com.android.settings.search.SearchIndexableResources;
-import com.android.settings.search.XmlParserUtils;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -203,7 +202,7 @@
                     continue;
                 }
                 final AttributeSet attrs = Xml.asAttributeSet(parser);
-                final String key = XmlParserUtils.getDataKey(mContext, attrs);
+                final String key = PreferenceXmlParserUtils.getDataKey(mContext, attrs);
                 if (TextUtils.isEmpty(key)) {
                     Log.e(TAG, "Every preference must have an key; found null key"
                             + " in " + className