11c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio/* 21c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * Copyright (C) 2015 The Android Open Source Project 31c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * 41c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 51c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * you may not use this file except in compliance with the License. 61c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * You may obtain a copy of the License at 71c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * 81c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 91c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * 101c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 111c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 121c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * See the License for the specific language governing permissions and 141c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * limitations under the License. 151c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio */ 161c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 171c1b47125da018b44240739db75f8898e064a948Fabrice Di Megliopackage android.content.pm; 181c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 191c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; 201c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK; 211c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS; 2256f0ff3c48c88b969d9bf5e62eb1ee590e03e461Christopher Tateimport static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK; 231c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; 241c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 256fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacherimport android.annotation.SystemApi; 261c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport android.os.Parcel; 271c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport android.os.Parcelable; 281c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport android.text.TextUtils; 290788595e0c9bc5e8c1907c63db595010006ef5b4Fabrice Di Meglioimport android.util.ArraySet; 301c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport android.util.Log; 31f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate 321c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport com.android.internal.util.XmlUtils; 33f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate 341c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport org.xmlpull.v1.XmlPullParser; 351c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport org.xmlpull.v1.XmlPullParserException; 361c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport org.xmlpull.v1.XmlSerializer; 371c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 381c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport java.io.IOException; 391c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglioimport java.util.ArrayList; 406fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacherimport java.util.Set; 411c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 421c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio/** 431c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * The {@link com.android.server.pm.PackageManagerService} maintains some 447d014cec63939f7aca2a8014f45cd4c9a3e1aa0cFabrice Di Meglio * {@link IntentFilterVerificationInfo}s for each domain / package name. 451c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * 461c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio * @hide 471c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio */ 486fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher@SystemApi 491c1b47125da018b44240739db75f8898e064a948Fabrice Di Megliopublic final class IntentFilterVerificationInfo implements Parcelable { 501c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private static final String TAG = IntentFilterVerificationInfo.class.getName(); 511c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 521c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private static final String TAG_DOMAIN = "domain"; 531c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private static final String ATTR_DOMAIN_NAME = "name"; 541c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private static final String ATTR_PACKAGE_NAME = "packageName"; 551c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private static final String ATTR_STATUS = "status"; 561c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 571de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio private ArraySet<String> mDomains = new ArraySet<>(); 581c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private String mPackageName; 591c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private int mMainStatus; 601c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 616fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 621c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public IntentFilterVerificationInfo() { 631c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mPackageName = null; 641c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mMainStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; 651c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 661c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 676fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 68788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy public IntentFilterVerificationInfo(String packageName, ArraySet<String> domains) { 691c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mPackageName = packageName; 70788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy mDomains = domains; 711c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mMainStatus = INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; 721c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 731c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 746fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 751c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public IntentFilterVerificationInfo(XmlPullParser parser) 761c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio throws IOException, XmlPullParserException { 771c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio readFromXml(parser); 781c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 791c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 806fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 811c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public IntentFilterVerificationInfo(Parcel source) { 821c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio readFromParcel(source); 831c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 841c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 851c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public String getPackageName() { 861c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return mPackageName; 871c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 881c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 891c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public int getStatus() { 901c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return mMainStatus; 911c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 921c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 936fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 941c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public void setStatus(int s) { 951c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (s >= INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED && 961c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio s <= INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) { 971c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mMainStatus = s; 981c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } else { 991c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio Log.w(TAG, "Trying to set a non supported status: " + s); 1001c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1011c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1021c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1036fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher public Set<String> getDomains() { 1041de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio return mDomains; 1051de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio } 1061de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio 1076fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 108788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy public void setDomains(ArraySet<String> list) { 109788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy mDomains = list; 1101de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio } 1111de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio 1126fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 1131c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public String getDomainsString() { 1141c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio StringBuilder sb = new StringBuilder(); 1151c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio for (String str : mDomains) { 1161c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (sb.length() > 0) { 1171c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio sb.append(" "); 1181c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1191c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio sb.append(str); 1201c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1211c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return sb.toString(); 1221c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1231c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1241c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String getStringFromXml(XmlPullParser parser, String attribute, String defaultValue) { 1251c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String value = parser.getAttributeValue(null, attribute); 1261c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (value == null) { 1271c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String msg = "Missing element under " + TAG +": " + attribute + " at " + 1281c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio parser.getPositionDescription(); 1291c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio Log.w(TAG, msg); 1301c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return defaultValue; 1311c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } else { 1321c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return value; 1331c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1341c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1351c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1361c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio int getIntFromXml(XmlPullParser parser, String attribute, int defaultValue) { 1371c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String value = parser.getAttributeValue(null, attribute); 1381c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (TextUtils.isEmpty(value)) { 1391c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String msg = "Missing element under " + TAG +": " + attribute + " at " + 1401c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio parser.getPositionDescription(); 1411c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio Log.w(TAG, msg); 1421c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return defaultValue; 1431c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } else { 1441c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return Integer.parseInt(value); 1451c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1461c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1471c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1486fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 1491c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public void readFromXml(XmlPullParser parser) throws XmlPullParserException, 1501c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio IOException { 1511c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mPackageName = getStringFromXml(parser, ATTR_PACKAGE_NAME, null); 1521c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (mPackageName == null) { 1531c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio Log.e(TAG, "Package name cannot be null!"); 1541c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1551c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio int status = getIntFromXml(parser, ATTR_STATUS, -1); 1561c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (status == -1) { 1571c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio Log.e(TAG, "Unknown status value: " + status); 1581c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1591c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mMainStatus = status; 1601c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1611c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio int outerDepth = parser.getDepth(); 1621c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio int type; 1631c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio while ((type=parser.next()) != XmlPullParser.END_DOCUMENT 1641c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio && (type != XmlPullParser.END_TAG 1651c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio || parser.getDepth() > outerDepth)) { 1661c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (type == XmlPullParser.END_TAG 1671c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio || type == XmlPullParser.TEXT) { 1681c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio continue; 1691c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1701c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1711c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String tagName = parser.getName(); 1721c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (tagName.equals(TAG_DOMAIN)) { 1731c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio String name = getStringFromXml(parser, ATTR_DOMAIN_NAME, null); 1741c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio if (!TextUtils.isEmpty(name)) { 1750788595e0c9bc5e8c1907c63db595010006ef5b4Fabrice Di Meglio mDomains.add(name); 1761c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1771c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } else { 1781c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio Log.w(TAG, "Unknown tag parsing IntentFilter: " + tagName); 1791c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1801c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio XmlUtils.skipCurrentTag(parser); 1811c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1821c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1831c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1846fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 1851c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public void writeToXml(XmlSerializer serializer) throws IOException { 1861c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio serializer.attribute(null, ATTR_PACKAGE_NAME, mPackageName); 1871c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio serializer.attribute(null, ATTR_STATUS, String.valueOf(mMainStatus)); 1881c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio for (String str : mDomains) { 1891c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio serializer.startTag(null, TAG_DOMAIN); 1901c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio serializer.attribute(null, ATTR_DOMAIN_NAME, str); 1911c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio serializer.endTag(null, TAG_DOMAIN); 1921c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1931c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1941c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 1956fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 1961c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public String getStatusString() { 1973decab60ac992093dbb731eb71588737e7d835daChristopher Tate return getStatusStringFromValue(((long)mMainStatus) << 32); 1981c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 1991c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 2006fd90ed96190c0e8668cc001c8d79753065498b4Jeff Schumacher /** @hide */ 201f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate public static String getStatusStringFromValue(long val) { 202f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate StringBuilder sb = new StringBuilder(); 203f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate switch ((int)(val >> 32)) { 204f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS: 205f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate sb.append("always : "); 206f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate sb.append(Long.toHexString(val & 0x00000000FFFFFFFF)); 207f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate break; 208f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate 209f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK: 210f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate sb.append("ask"); 211f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate break; 212f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate 213f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER: 214f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate sb.append("never"); 215f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate break; 216f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate 21756f0ff3c48c88b969d9bf5e62eb1ee590e03e461Christopher Tate case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK: 21856f0ff3c48c88b969d9bf5e62eb1ee590e03e461Christopher Tate sb.append("always-ask"); 21956f0ff3c48c88b969d9bf5e62eb1ee590e03e461Christopher Tate break; 22056f0ff3c48c88b969d9bf5e62eb1ee590e03e461Christopher Tate 221f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED: 2221c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio default: 223f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate sb.append("undefined"); 224f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate break; 2251c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 226f0d6cb38c47ee37583034dc3a68238ed13c91742Christopher Tate return sb.toString(); 2271c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 2281c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 2291c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio @Override 2301c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public int describeContents() { 2311c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return 0; 2321c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 2331c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 2341c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio private void readFromParcel(Parcel source) { 2351c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mPackageName = source.readString(); 2361c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio mMainStatus = source.readInt(); 2371de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio ArrayList<String> list = new ArrayList<>(); 2381de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio source.readStringList(list); 2391de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio mDomains.addAll(list); 2401c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 2411c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 2421c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio @Override 2431c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public void writeToParcel(Parcel dest, int flags) { 2441c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio dest.writeString(mPackageName); 2451c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio dest.writeInt(mMainStatus); 2461de3f0dcafb0c5ceb3d9bec96a5c630bb8d4a515Fabrice Di Meglio dest.writeStringList(new ArrayList<>(mDomains)); 2471c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 2481c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio 2491c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public static final Creator<IntentFilterVerificationInfo> CREATOR = 2501c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio new Creator<IntentFilterVerificationInfo>() { 2511c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public IntentFilterVerificationInfo createFromParcel(Parcel source) { 2521c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return new IntentFilterVerificationInfo(source); 2531c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 2541c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio public IntentFilterVerificationInfo[] newArray(int size) { 2551c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio return new IntentFilterVerificationInfo[size]; 2561c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio } 2571c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio }; 2581c1b47125da018b44240739db75f8898e064a948Fabrice Di Meglio} 259