Merge "Stop using SystemApi.process per the latest spec"
diff --git a/api/system-current.txt b/api/system-current.txt
index ef3ce2a..25b1401 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -7198,6 +7198,7 @@
field public static final String CMAS_SEVERITY = "cmas_severity";
field public static final String CMAS_URGENCY = "cmas_urgency";
field @NonNull public static final android.net.Uri CONTENT_URI;
+ field public static final String DATA_CODING_SCHEME = "dcs";
field public static final String DEFAULT_SORT_ORDER = "date DESC";
field public static final String DELIVERY_TIME = "date";
field public static final String ETWS_WARNING_TYPE = "etws_warning_type";
@@ -7205,9 +7206,11 @@
field public static final String GEOMETRIES = "geometries";
field public static final String LAC = "lac";
field public static final String LANGUAGE_CODE = "language";
+ field public static final String LOCATION_CHECK_TIME = "location_check_time";
field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";
field public static final String MESSAGE_BODY = "body";
field public static final String MESSAGE_BROADCASTED = "message_broadcasted";
+ field public static final String MESSAGE_DISPLAYED = "message_displayed";
field public static final String MESSAGE_FORMAT = "format";
field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI;
field public static final String MESSAGE_PRIORITY = "priority";
@@ -9407,11 +9410,12 @@
}
public final class SmsCbMessage implements android.os.Parcelable {
- ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
+ ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, int, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
method @NonNull public static android.telephony.SmsCbMessage createFromCursor(@NonNull android.database.Cursor);
method public int describeContents();
method @Nullable public android.telephony.SmsCbCmasInfo getCmasWarningInfo();
method @NonNull public android.content.ContentValues getContentValues();
+ method public int getDataCodingScheme();
method @Nullable public android.telephony.SmsCbEtwsInfo getEtwsWarningInfo();
method public int getGeographicalScope();
method @NonNull public java.util.List<android.telephony.CbGeoUtils.Geometry> getGeometries();
diff --git a/api/test-current.txt b/api/test-current.txt
index 9a331a2..6b3b3a8 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -2558,6 +2558,7 @@
field public static final String CMAS_SEVERITY = "cmas_severity";
field public static final String CMAS_URGENCY = "cmas_urgency";
field @NonNull public static final android.net.Uri CONTENT_URI;
+ field public static final String DATA_CODING_SCHEME = "dcs";
field public static final String DEFAULT_SORT_ORDER = "date DESC";
field public static final String DELIVERY_TIME = "date";
field public static final String ETWS_WARNING_TYPE = "etws_warning_type";
@@ -2565,9 +2566,11 @@
field public static final String GEOMETRIES = "geometries";
field public static final String LAC = "lac";
field public static final String LANGUAGE_CODE = "language";
+ field public static final String LOCATION_CHECK_TIME = "location_check_time";
field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";
field public static final String MESSAGE_BODY = "body";
field public static final String MESSAGE_BROADCASTED = "message_broadcasted";
+ field public static final String MESSAGE_DISPLAYED = "message_displayed";
field public static final String MESSAGE_FORMAT = "format";
field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI;
field public static final String MESSAGE_PRIORITY = "priority";
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 6f4f30c..10b4e5d 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -99,6 +99,12 @@
public static final int KEYSTORE_UID = 1017;
/**
+ * Defines the UID/GID for credstore.
+ * @hide
+ */
+ public static final int CREDSTORE_UID = 1076;
+
+ /**
* Defines the UID/GID for the NFC service process.
* @hide
*/
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index 1611d28..c2b0ace 100644
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -4245,6 +4245,15 @@
public static final String LANGUAGE_CODE = "language";
/**
+ * Dats coding scheme of the message.
+ * <p>
+ * The data coding scheme (dcs) value defined in 3GPP TS 23.038 section 4
+ * </p>
+ * <P>Type: INTEGER</P>
+ */
+ public static final String DATA_CODING_SCHEME = "dcs";
+
+ /**
* Message body.
* <P>Type: TEXT</P>
*/
@@ -4332,18 +4341,32 @@
public static final String DEFAULT_SORT_ORDER = DELIVERY_TIME + " DESC";
/**
- * The timestamp in millisecond of when the device received the message.
+ * The timestamp in millisecond, reported by {@link System#currentTimeMillis()}, when the
+ * device received the message.
* <P>Type: BIGINT</P>
*/
public static final String RECEIVED_TIME = "received_time";
/**
+ * The timestamp in millisecond, reported by {@link System#currentTimeMillis()}, when
+ * location was checked last time. Note this is only applicable to geo-targeting message.
+ * For non geo-targeting message. the field will be set to -1.
+ * <P>Type: BIGINT</P>
+ */
+ public static final String LOCATION_CHECK_TIME = "location_check_time";
+ /**
* Indicates that whether the message has been broadcasted to the application.
* <P>Type: BOOLEAN</P>
*/
public static final String MESSAGE_BROADCASTED = "message_broadcasted";
/**
+ * Indicates that whether the message has been displayed to the user.
+ * <P>Type: BOOLEAN</P>
+ */
+ public static final String MESSAGE_DISPLAYED = "message_displayed";
+
+ /**
* The Warning Area Coordinates Elements. This element is used for geo-fencing purpose.
*
* The geometry and its coordinates are separated vertical bar, the first item is the
diff --git a/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java b/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
index a8c68c0..c908acd 100644
--- a/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
+++ b/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
@@ -24,16 +24,16 @@
import android.os.Binder;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.security.keymaster.KeyAttestationPackageInfo;
-import android.security.keymaster.KeyAttestationApplicationId;
import android.security.keymaster.IKeyAttestationApplicationIdProvider;
+import android.security.keymaster.KeyAttestationApplicationId;
+import android.security.keymaster.KeyAttestationPackageInfo;
/**
* @hide
* The KeyAttestationApplicationIdProviderService provides information describing the possible
* applications identified by a UID. Due to UID sharing, this KeyAttestationApplicationId can
- * comprise information about multiple packages. The Information is used by keystore to describe
- * the initiating application of a key attestation procedure.
+ * comprise information about multiple packages. The Information is used by keystore and credstore
+ * to describe the initiating application of a key attestation procedure.
*/
public class KeyAttestationApplicationIdProviderService
extends IKeyAttestationApplicationIdProvider.Stub {
@@ -46,8 +46,10 @@
public KeyAttestationApplicationId getKeyAttestationApplicationId(int uid)
throws RemoteException {
- if (Binder.getCallingUid() != android.os.Process.KEYSTORE_UID) {
- throw new SecurityException("This service can only be used by Keystore");
+ int callingUid = Binder.getCallingUid();
+ if (callingUid != android.os.Process.KEYSTORE_UID
+ && callingUid != android.os.Process.CREDSTORE_UID) {
+ throw new SecurityException("This service can only be used by Keystore or Credstore");
}
KeyAttestationPackageInfo[] keyAttestationPackageInfos = null;
final long token = Binder.clearCallingIdentity();
diff --git a/telephony/java/android/telephony/SmsCbMessage.java b/telephony/java/android/telephony/SmsCbMessage.java
index 045d1eb..09e87c0 100644
--- a/telephony/java/android/telephony/SmsCbMessage.java
+++ b/telephony/java/android/telephony/SmsCbMessage.java
@@ -177,6 +177,9 @@
@Nullable
private final String mLanguage;
+ /** The 8-bit data coding scheme defined in 3GPP TS 23.038 section 4. */
+ private final int mDataCodingScheme;
+
/** Message body, as a String. */
@Nullable
private final String mBody;
@@ -220,7 +223,7 @@
@Nullable SmsCbCmasInfo cmasWarningInfo, int slotIndex, int subId) {
this(messageFormat, geographicalScope, serialNumber, location, serviceCategory, language,
- body, priority, etwsWarningInfo, cmasWarningInfo, 0 /* maximumWaitingTime */,
+ 0, body, priority, etwsWarningInfo, cmasWarningInfo, 0 /* maximumWaitingTime */,
null /* geometries */, System.currentTimeMillis(), slotIndex, subId);
}
@@ -230,8 +233,8 @@
*/
public SmsCbMessage(int messageFormat, int geographicalScope, int serialNumber,
@NonNull SmsCbLocation location, int serviceCategory,
- @Nullable String language, @Nullable String body, int priority,
- @Nullable SmsCbEtwsInfo etwsWarningInfo,
+ @Nullable String language, int dataCodingScheme, @Nullable String body,
+ int priority, @Nullable SmsCbEtwsInfo etwsWarningInfo,
@Nullable SmsCbCmasInfo cmasWarningInfo, int maximumWaitTimeSec,
@Nullable List<Geometry> geometries, long receivedTimeMillis, int slotIndex,
int subId) {
@@ -241,6 +244,7 @@
mLocation = location;
mServiceCategory = serviceCategory;
mLanguage = language;
+ mDataCodingScheme = dataCodingScheme;
mBody = body;
mPriority = priority;
mEtwsWarningInfo = etwsWarningInfo;
@@ -263,6 +267,7 @@
mLocation = new SmsCbLocation(in);
mServiceCategory = in.readInt();
mLanguage = in.readString();
+ mDataCodingScheme = in.readInt();
mBody = in.readString();
mPriority = in.readInt();
int type = in.readInt();
@@ -305,6 +310,7 @@
mLocation.writeToParcel(dest, flags);
dest.writeInt(mServiceCategory);
dest.writeString(mLanguage);
+ dest.writeInt(mDataCodingScheme);
dest.writeString(mBody);
dest.writeInt(mPriority);
if (mEtwsWarningInfo != null) {
@@ -398,6 +404,15 @@
}
/**
+ * Get data coding scheme of the message
+ *
+ * @return The 8-bit data coding scheme defined in 3GPP TS 23.038 section 4.
+ */
+ public int getDataCodingScheme() {
+ return mDataCodingScheme;
+ }
+
+ /**
* Get the body of this message, or null if no body available
*
* @return Body, or null
@@ -718,7 +733,7 @@
cursor.getColumnIndexOrThrow(CellBroadcasts.MAXIMUM_WAIT_TIME));
return new SmsCbMessage(format, geoScope, serialNum, location, category,
- language, body, priority, etwsInfo, cmasInfo, maximumWaitTimeSec, geometries,
+ language, 0, body, priority, etwsInfo, cmasInfo, maximumWaitTimeSec, geometries,
receivedTimeMillis, slotIndex, subId);
}