Merge "Use context user for canNotifyAsPackage"
diff --git a/api/system-current.txt b/api/system-current.txt
index 61a7f58..2724133 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -924,8 +924,10 @@
method public int restoreAll(long, android.app.backup.RestoreObserver);
method public int restorePackage(String, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor);
method public int restorePackage(String, android.app.backup.RestoreObserver);
- method public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, String[]);
- method public int restoreSome(long, android.app.backup.RestoreObserver, String[]);
+ method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>, @Nullable android.app.backup.BackupManagerMonitor);
+ method public int restorePackages(long, @Nullable android.app.backup.RestoreObserver, @NonNull java.util.Set<java.lang.String>);
+ method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, android.app.backup.BackupManagerMonitor, String[]);
+ method @Deprecated public int restoreSome(long, android.app.backup.RestoreObserver, String[]);
}
public class RestoreSet implements android.os.Parcelable {
@@ -5603,7 +5605,7 @@
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.PersistableBundle getSeedAccountOptions();
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public String getSeedAccountType();
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public long[] getSerialNumbersOfUsers(boolean);
- method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.graphics.Bitmap getUserIcon();
+ method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public android.graphics.Bitmap getUserIcon();
method @Deprecated @android.os.UserManager.UserRestrictionSource @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public int getUserRestrictionSource(String, android.os.UserHandle);
method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public java.util.List<android.os.UserManager.EnforcingUser> getUserRestrictionSources(String, android.os.UserHandle);
method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public int getUserSwitchability();
@@ -7679,8 +7681,8 @@
field public static final String MBMS_STREAMING_SERVICE_ACTION = "android.telephony.action.EmbmsStreaming";
}
- public class NetworkRegistrationState implements android.os.Parcelable {
- ctor public NetworkRegistrationState(int, int, int, int, int, boolean, @NonNull int[], @Nullable android.telephony.CellIdentity);
+ public class NetworkRegistrationInfo implements android.os.Parcelable {
+ ctor public NetworkRegistrationInfo(int, int, int, int, int, boolean, @NonNull int[], @Nullable android.telephony.CellIdentity);
method public int describeContents();
method public int getAccessNetworkTechnology();
method @NonNull public int[] getAvailableServices();
@@ -7694,7 +7696,7 @@
method public boolean isEmergencyEnabled();
method public boolean isRoaming();
method public void writeToParcel(android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkRegistrationState> CREATOR;
+ field @NonNull public static final android.os.Parcelable.Creator<android.telephony.NetworkRegistrationInfo> CREATOR;
field public static final int DOMAIN_CS = 1; // 0x1
field public static final int DOMAIN_PS = 2; // 0x2
field public static final int REG_STATE_DENIED = 3; // 0x3
@@ -7710,19 +7712,19 @@
field public static final int SERVICE_TYPE_VOICE = 1; // 0x1
}
- public static class NetworkRegistrationState.Builder {
- ctor public NetworkRegistrationState.Builder();
- method @NonNull public android.telephony.NetworkRegistrationState build();
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setAccessNetworkTechnology(int);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setAvailableServices(@NonNull int[]);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setDomain(int);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setEmergencyOnly(boolean);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setNrStatus(int);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setRegState(int);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setRejectCause(int);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setRoamingType(int);
- method @NonNull public android.telephony.NetworkRegistrationState.Builder setTransportType(int);
+ public static class NetworkRegistrationInfo.Builder {
+ ctor public NetworkRegistrationInfo.Builder();
+ method @NonNull public android.telephony.NetworkRegistrationInfo build();
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAccessNetworkTechnology(int);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setAvailableServices(@NonNull int[]);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setCellIdentity(@Nullable android.telephony.CellIdentity);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setDomain(int);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setEmergencyOnly(boolean);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setNrStatus(int);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRegState(int);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRejectCause(int);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setRoamingType(int);
+ method @NonNull public android.telephony.NetworkRegistrationInfo.Builder setTransportType(int);
}
public abstract class NetworkService extends android.app.Service {
@@ -7735,13 +7737,13 @@
public abstract class NetworkService.NetworkServiceProvider implements java.lang.AutoCloseable {
ctor public NetworkService.NetworkServiceProvider(int);
method public abstract void close();
- method public void getNetworkRegistrationState(int, @NonNull android.telephony.NetworkServiceCallback);
+ method public void getNetworkRegistrationInfo(int, @NonNull android.telephony.NetworkServiceCallback);
method public final int getSlotIndex();
- method public final void notifyNetworkRegistrationStateChanged();
+ method public final void notifyNetworkRegistrationInfoChanged();
}
public class NetworkServiceCallback {
- method public void onGetNetworkRegistrationStateComplete(int, @Nullable android.telephony.NetworkRegistrationState);
+ method public void onGetNetworkRegistrationInfoComplete(int, @Nullable android.telephony.NetworkRegistrationInfo);
field public static final int RESULT_ERROR_BUSY = 3; // 0x3
field public static final int RESULT_ERROR_FAILED = 5; // 0x5
field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
@@ -7916,12 +7918,10 @@
}
public class ServiceState implements android.os.Parcelable {
- method @Nullable public android.telephony.NetworkRegistrationState getNetworkRegistrationState(int, int);
- method @NonNull public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStates();
- method @Deprecated @NonNull public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStates(int);
- method @Deprecated @Nullable public android.telephony.NetworkRegistrationState getNetworkRegistrationStates(int, int);
- method @NonNull public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStatesForDomain(int);
- method @NonNull public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStatesForTransportType(int);
+ method @Nullable public android.telephony.NetworkRegistrationInfo getNetworkRegistrationInfo(int, int);
+ method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList();
+ method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(int);
+ method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForTransportType(int);
field public static final int ROAMING_TYPE_DOMESTIC = 2; // 0x2
field public static final int ROAMING_TYPE_INTERNATIONAL = 3; // 0x3
field public static final int ROAMING_TYPE_NOT_ROAMING = 0; // 0x0
diff --git a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
index 062ba65..98ab666 100644
--- a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
+++ b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java
@@ -803,8 +803,8 @@
} else {
String[] names = new String[filter.size()];
filter.toArray(names);
- didRestore = (mRestore.restoreSome(token, observer,
- null, names) == 0);
+ didRestore = (mRestore.restorePackages(token, observer, names,
+ null) == 0);
}
break;
}
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index a8a34d2..23f64b8 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -1203,7 +1203,7 @@
/**
* {@link #extras} key: whether the notification should be colorized as
- * supplied to {@link Builder#setColorized(boolean)}}.
+ * supplied to {@link Builder#setColorized(boolean)}.
*/
public static final String EXTRA_COLORIZED = "android.colorized";
@@ -1358,7 +1358,7 @@
*
* This is intended for {@link RemoteInput}s that only accept data, meaning
* {@link RemoteInput#getAllowFreeFormInput} is false, {@link RemoteInput#getChoices}
- * is null or empty, and {@link RemoteInput#getAllowedDataTypes is non-null and not
+ * is null or empty, and {@link RemoteInput#getAllowedDataTypes} is non-null and not
* empty. These {@link RemoteInput}s will be ignored by devices that do not
* support non-text-based {@link RemoteInput}s. See {@link Builder#build}.
*
diff --git a/core/java/android/app/backup/IRestoreSession.aidl b/core/java/android/app/backup/IRestoreSession.aidl
index b9e9485..c3a298b 100644
--- a/core/java/android/app/backup/IRestoreSession.aidl
+++ b/core/java/android/app/backup/IRestoreSession.aidl
@@ -71,8 +71,8 @@
* applications mentioned in this list will have their data restored.
* @param monitor If non null the binder will send important events to this monitor.
*/
- int restoreSome(long token, IRestoreObserver observer, IBackupManagerMonitor monitor,
- in String[] packages);
+ int restorePackages(long token, IRestoreObserver observer, in String[] packages,
+ IBackupManagerMonitor monitor);
/**
* Restore a single application from backup. The data will be restored from the
diff --git a/core/java/android/app/backup/RestoreSession.java b/core/java/android/app/backup/RestoreSession.java
index 79925ec..084b13b 100644
--- a/core/java/android/app/backup/RestoreSession.java
+++ b/core/java/android/app/backup/RestoreSession.java
@@ -16,6 +16,8 @@
package android.app.backup;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.content.Context;
import android.os.Bundle;
@@ -24,6 +26,10 @@
import android.os.RemoteException;
import android.util.Log;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
/**
* Interface for managing a restore session.
* @hide
@@ -138,14 +144,15 @@
* the restore set that should be used.
* @param observer If non-null, this binder points to an object that will receive
* progress callbacks during the restore operation.
- * @param monitor If non-null, this binder points to an object that will receive
- * progress callbacks during the restore operation.
* @param packages The set of packages for which to attempt a restore. Regardless of
* the contents of the actual back-end dataset named by {@code token}, only
* applications mentioned in this list will have their data restored.
+ * @param monitor If non-null, this binder points to an object that will receive
+ * progress callbacks during the restore operation containing detailed information on any
+ * failures or important decisions made by {@link BackupManager}.
*/
- public int restoreSome(long token, RestoreObserver observer, BackupManagerMonitor monitor,
- String[] packages) {
+ public int restorePackages(long token, @Nullable RestoreObserver observer,
+ @NonNull Set<String> packages, @Nullable BackupManagerMonitor monitor) {
int err = -1;
if (mObserver != null) {
Log.d(TAG, "restoreAll() called during active restore");
@@ -156,7 +163,8 @@
? null
: new BackupManagerMonitorWrapper(monitor);
try {
- err = mBinder.restoreSome(token, mObserver, monitorWrapper, packages);
+ err = mBinder.restorePackages(token, mObserver, packages.toArray(new String[] {}),
+ monitorWrapper);
} catch (RemoteException e) {
Log.d(TAG, "Can't contact server to restore packages");
}
@@ -180,6 +188,60 @@
* the contents of the actual back-end dataset named by {@code token}, only
* applications mentioned in this list will have their data restored.
*/
+ public int restorePackages(long token, @Nullable RestoreObserver observer,
+ @NonNull Set<String> packages) {
+ return restorePackages(token, observer, packages, null);
+ }
+
+ /**
+ * Restore select packages from the given set onto the device, replacing the
+ * current data of any app contained in the set with the data previously
+ * backed up.
+ *
+ * <p>Callers must hold the android.permission.BACKUP permission to use this method.
+ *
+ * @return Zero on success, nonzero on error. The observer will only receive
+ * progress callbacks if this method returned zero.
+ * @param token The token from {@link getAvailableRestoreSets()} corresponding to
+ * the restore set that should be used.
+ * @param observer If non-null, this binder points to an object that will receive
+ * progress callbacks during the restore operation.
+ * @param monitor If non-null, this binder points to an object that will receive
+ * progress callbacks during the restore operation.
+ * @param packages The set of packages for which to attempt a restore. Regardless of
+ * the contents of the actual back-end dataset named by {@code token}, only
+ * applications mentioned in this list will have their data restored.
+ *
+ * @deprecated use {@link RestoreSession#restorePackages(long, RestoreObserver,
+ * BackupManagerMonitor, Set)} instead.
+ */
+ @Deprecated
+ public int restoreSome(long token, RestoreObserver observer, BackupManagerMonitor monitor,
+ String[] packages) {
+ return restorePackages(token, observer, new HashSet<>(Arrays.asList(packages)), monitor);
+ }
+
+ /**
+ * Restore select packages from the given set onto the device, replacing the
+ * current data of any app contained in the set with the data previously
+ * backed up.
+ *
+ * <p>Callers must hold the android.permission.BACKUP permission to use this method.
+ *
+ * @return Zero on success, nonzero on error. The observer will only receive
+ * progress callbacks if this method returned zero.
+ * @param token The token from {@link getAvailableRestoreSets()} corresponding to
+ * the restore set that should be used.
+ * @param observer If non-null, this binder points to an object that will receive
+ * progress callbacks during the restore operation.
+ * @param packages The set of packages for which to attempt a restore. Regardless of
+ * the contents of the actual back-end dataset named by {@code token}, only
+ * applications mentioned in this list will have their data restored.
+ *
+ * @deprecated use {@link RestoreSession#restorePackages(long, RestoreObserver, Set)}
+ * instead.
+ */
+ @Deprecated
public int restoreSome(long token, RestoreObserver observer, String[] packages) {
return restoreSome(token, observer, null, packages);
}
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index efb3bfc1..49a29f0a 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -338,6 +338,16 @@
public static final int BIND_ADJUST_BELOW_PERCEPTIBLE = 0x0100;
/**
+ * Flag for {@link #bindService}: This flag is intended to be used only by the system to adjust
+ * the scheduling policy for IMEs (and any other out-of-process user-visible components that
+ * work closely with the top app) so that UI hosted in such services can have the same
+ * scheduling policy (e.g. SCHED_FIFO when it is enabled and TOP_APP_PRIORITY_BOOST otherwise)
+ * as the actual top-app.
+ * @hide
+ */
+ public static final int BIND_SCHEDULE_LIKE_TOP_APP = 0x00080000;
+
+ /**
* Flag for {@link #bindService}: allow background activity starts from the bound service's
* process.
* This flag is only respected if the caller is holding
diff --git a/core/java/android/os/IUserManager.aidl b/core/java/android/os/IUserManager.aidl
index 24afb56..63641e5 100644
--- a/core/java/android/os/IUserManager.aidl
+++ b/core/java/android/os/IUserManager.aidl
@@ -101,6 +101,7 @@
boolean isUserNameSet(int userHandle);
boolean hasRestrictedProfiles();
boolean requestQuietModeEnabled(String callingPackage, boolean enableQuietMode, int userHandle, in IntentSender target);
+ String getUserName();
long getUserStartRealtime();
long getUserUnlockRealtime();
}
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 2bd1953..790bb27 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -1352,12 +1352,16 @@
/**
* Returns the user name of the user making this call. This call is only
* available to applications on the system image; it requires the
- * MANAGE_USERS permission.
+ * {@code android.permission.MANAGE_USERS} or {@code android.permission.GET_ACCOUNTS_PRIVILEGED}
+ * permissions.
* @return the user name
*/
public String getUserName() {
- UserInfo user = getUserInfo(getUserHandle());
- return user == null ? "" : user.name;
+ try {
+ return mService.getUserName();
+ } catch (RemoteException re) {
+ throw re.rethrowFromSystemServer();
+ }
}
/**
@@ -2884,14 +2888,16 @@
/**
* Returns a Bitmap for the calling user's photo.
- * Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
+ * Requires {@link android.Manifest.permission#MANAGE_USERS}
+ * or {@link android.Manifest.permission#GET_ACCOUNTS_PRIVILEGED} permissions.
*
* @return a {@link Bitmap} of the user's photo, or null if there's no photo.
* @see com.android.internal.util.UserIcons#getDefaultUserIcon for a default.
* @hide
*/
@SystemApi
- @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
+ @RequiresPermission(anyOf = {android.Manifest.permission.MANAGE_USERS,
+ android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED})
public @Nullable Bitmap getUserIcon() {
return getUserIcon(getUserHandle());
}
diff --git a/media/java/android/media/MediaDrm.java b/media/java/android/media/MediaDrm.java
index 579ee8d..aeb77cf 100644
--- a/media/java/android/media/MediaDrm.java
+++ b/media/java/android/media/MediaDrm.java
@@ -1588,13 +1588,13 @@
* {@link #PROPERTY_DESCRIPTION}, {@link #PROPERTY_ALGORITHMS}
*/
@NonNull
- public native String getPropertyString(@NonNull @StringProperty String propertyName);
+ public native String getPropertyString(@NonNull String propertyName);
/**
* Set a MediaDrm String property value, given the property name string
* and new value for the property.
*/
- public native void setPropertyString(@NonNull @StringProperty String propertyName,
+ public native void setPropertyString(@NonNull String propertyName,
@NonNull String value);
/**
@@ -1616,14 +1616,14 @@
* Standard fields names are {@link #PROPERTY_DEVICE_UNIQUE_ID}
*/
@NonNull
- public native byte[] getPropertyByteArray(@ArrayProperty String propertyName);
+ public native byte[] getPropertyByteArray(String propertyName);
/**
* Set a MediaDrm byte array property value, given the property name string
* and new value for the property.
*/
- public native void setPropertyByteArray(@NonNull @ArrayProperty
- String propertyName, @NonNull byte[] value);
+ public native void setPropertyByteArray(
+ @NonNull String propertyName, @NonNull byte[] value);
private static final native void setCipherAlgorithmNative(
@NonNull MediaDrm drm, @NonNull byte[] sessionId, @NonNull String algorithm);
diff --git a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
index bcfc412..b238ae4 100644
--- a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
+++ b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
@@ -72,7 +72,7 @@
import android.provider.Settings;
import android.telephony.AccessNetworkConstants;
import android.telephony.CellSignalStrength;
-import android.telephony.NetworkRegistrationState;
+import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
@@ -1615,8 +1615,8 @@
return;
}
// See if the data sub is registered for PS services on cell.
- final NetworkRegistrationState nrs = dataSs.getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS,
+ final NetworkRegistrationInfo nrs = dataSs.getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS,
AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
latencyBroadcast.putExtra(
NetworkMonitorUtils.EXTRA_CELL_ID,
diff --git a/packages/SystemUI/res/layout/global_actions_grid.xml b/packages/SystemUI/res/layout/global_actions_grid.xml
index d90d5e9..8651e5a 100644
--- a/packages/SystemUI/res/layout/global_actions_grid.xml
+++ b/packages/SystemUI/res/layout/global_actions_grid.xml
@@ -31,7 +31,6 @@
android:paddingTop="@dimen/global_actions_grid_vertical_padding"
android:paddingBottom="@dimen/global_actions_grid_vertical_padding"
android:orientation="vertical"
- android:background="?android:attr/colorBackgroundFloating"
android:gravity="center"
android:translationZ="@dimen/global_actions_translate"
/>
@@ -48,7 +47,6 @@
android:paddingRight="@dimen/global_actions_grid_horizontal_padding"
android:paddingTop="@dimen/global_actions_grid_vertical_padding"
android:paddingBottom="@dimen/global_actions_grid_vertical_padding"
- android:background="?android:attr/colorBackgroundFloating"
>
<LinearLayout
android:layout_width="wrap_content"
diff --git a/packages/SystemUI/res/values-night/colors.xml b/packages/SystemUI/res/values-night/colors.xml
index 5803bf1..d74d258 100644
--- a/packages/SystemUI/res/values-night/colors.xml
+++ b/packages/SystemUI/res/values-night/colors.xml
@@ -47,4 +47,16 @@
<!-- The color of the background in the bottom part of QSCustomizer -->
<color name="qs_customize_decoration">@color/GM2_grey_800</color>
+
+ <!-- The color of the background in the separated list of the Global Actions menu -->
+ <color name="global_actions_separated_background">@color/GM2_grey_900</color>
+
+ <!-- The color of the background in the grid of the Global Actions menu -->
+ <color name="global_actions_grid_background">@color/GM2_grey_800</color>
+
+ <!-- The color of the text in the Global Actions menu -->
+ <color name="global_actions_text">@color/GM2_grey_200</color>
+
+ <!-- The color of the text in the Global Actions menu -->
+ <color name="global_actions_alert_text">@color/GM2_red_300</color>
</resources>
\ No newline at end of file
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 0e4ffee..b82c250 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -38,6 +38,18 @@
<color name="qs_customize_background">@color/GM2_grey_50</color>
<color name="qs_customize_decoration">@color/GM2_grey_100</color>
+ <!-- The color of the background in the separated list of the Global Actions menu -->
+ <color name="global_actions_separated_background">@color/GM2_grey_300</color>
+
+ <!-- The color of the background in the grid of the Global Actions menu -->
+ <color name="global_actions_grid_background">@color/GM2_grey_200</color>
+
+ <!-- The color of the text in the Global Actions menu -->
+ <color name="global_actions_text">@color/GM2_grey_900</color>
+
+ <!-- The color of the text in the Global Actions menu -->
+ <color name="global_actions_alert_text">@color/GM2_red_500</color>
+
<!-- Tint color for the content on the notification overflow card. -->
<color name="keyguard_overflow_content_color">#ff686868</color>
@@ -149,4 +161,7 @@
<color name="GM2_grey_700">#5F6368</color>
<color name="GM2_grey_800">#3C4043</color>
<color name="GM2_grey_900">#202124</color>
+
+ <color name="GM2_red_300">#F28B82</color>
+ <color name="GM2_red_500">#B71C1C</color>
</resources>
diff --git a/packages/SystemUI/src/com/android/systemui/HardwareBgDrawable.java b/packages/SystemUI/src/com/android/systemui/HardwareBgDrawable.java
index 97d7999..d631cf3 100644
--- a/packages/SystemUI/src/com/android/systemui/HardwareBgDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/HardwareBgDrawable.java
@@ -115,4 +115,4 @@
public void setRotatedBackground(boolean rotatedBackground) {
mRotatedBackground = rotatedBackground;
}
-}
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index b98ce2698..0adbefe 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -383,8 +383,7 @@
mHasLogoutButton = true;
}
} else if (GLOBAL_ACTION_KEY_EMERGENCY.equals(actionKey)) {
- if (shouldUseSeparatedView()
- && !mEmergencyAffordanceManager.needsEmergencyAffordance()) {
+ if (!mEmergencyAffordanceManager.needsEmergencyAffordance()) {
mItems.add(new EmergencyDialerAction());
}
} else {
@@ -395,7 +394,7 @@
}
if (mEmergencyAffordanceManager.needsEmergencyAffordance()) {
- mItems.add(getEmergencyAction());
+ mItems.add(new EmergencyAffordanceAction());
}
mAdapter = new MyAdapter();
@@ -484,7 +483,59 @@
}
}
- private class EmergencyDialerAction extends SinglePressAction {
+ private abstract class EmergencyAction extends SinglePressAction {
+ EmergencyAction(int iconResId, int messageResId) {
+ super(iconResId, messageResId);
+ }
+
+ @Override
+ public boolean shouldBeSeparated() {
+ return shouldUseSeparatedView();
+ }
+
+ @Override
+ public View create(
+ Context context, View convertView, ViewGroup parent, LayoutInflater inflater) {
+ View v = super.create(context, convertView, parent, inflater);
+ int textColor;
+ if (shouldBeSeparated()) {
+ textColor = v.getResources().getColor(
+ com.android.systemui.R.color.global_actions_alert_text);
+ } else {
+ textColor = v.getResources().getColor(
+ com.android.systemui.R.color.global_actions_text);
+ }
+ TextView messageView = v.findViewById(R.id.message);
+ messageView.setTextColor(textColor);
+ ImageView icon = (ImageView) v.findViewById(R.id.icon);
+ icon.getDrawable().setTint(textColor);
+ return v;
+ }
+
+ @Override
+ public boolean showDuringKeyguard() {
+ return true;
+ }
+
+ @Override
+ public boolean showBeforeProvisioning() {
+ return true;
+ }
+ }
+
+ private class EmergencyAffordanceAction extends EmergencyAction {
+ EmergencyAffordanceAction() {
+ super(R.drawable.emergency_icon,
+ R.string.global_action_emergency);
+ }
+
+ @Override
+ public void onPress() {
+ mEmergencyAffordanceManager.performEmergencyCall();
+ }
+ }
+
+ private class EmergencyDialerAction extends EmergencyAction {
private EmergencyDialerAction() {
super(R.drawable.ic_faster_emergency,
R.string.global_action_emergency);
@@ -501,21 +552,6 @@
EmergencyDialerConstants.ENTRY_TYPE_POWER_MENU);
mContext.startActivityAsUser(intent, UserHandle.CURRENT);
}
-
- @Override
- public boolean showDuringKeyguard() {
- return true;
- }
-
- @Override
- public boolean showBeforeProvisioning() {
- return true;
- }
-
- @Override
- public boolean shouldBeSeparated() {
- return true;
- }
}
private final class RestartAction extends SinglePressAction implements LongPressAction {
@@ -703,32 +739,6 @@
};
}
- private Action getEmergencyAction() {
- Drawable emergencyIcon = mContext.getDrawable(R.drawable.emergency_icon);
- if (!shouldUseSeparatedView()) {
- // use un-colored legacy treatment
- emergencyIcon.setTintList(null);
- }
-
- return new SinglePressAction(R.drawable.emergency_icon,
- R.string.global_action_emergency) {
- @Override
- public void onPress() {
- mEmergencyAffordanceManager.performEmergencyCall();
- }
-
- @Override
- public boolean showDuringKeyguard() {
- return true;
- }
-
- @Override
- public boolean showBeforeProvisioning() {
- return true;
- }
- };
- }
-
private Action getAssistAction() {
return new SinglePressAction(R.drawable.ic_action_assist_focused,
R.string.global_action_assist) {
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java
index 058ea60..9a0759c 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java
@@ -42,11 +42,16 @@
}
private void setBackgrounds() {
+ int gridBackgroundColor = getResources().getColor(
+ com.android.systemui.R.color.global_actions_grid_background, null);
+ int separatedBackgroundColor = getResources().getColor(
+ com.android.systemui.R.color.global_actions_separated_background, null);
HardwareBgDrawable listBackground = new HardwareBgDrawable(true, true, getContext());
- HardwareBgDrawable separatedViewBackground = new HardwareBgDrawable(true, true,
- getContext());
+ HardwareBgDrawable separatedBackground = new HardwareBgDrawable(true, true, getContext());
+ listBackground.setTint(gridBackgroundColor);
+ separatedBackground.setTint(separatedBackgroundColor);
getListView().setBackground(listBackground);
- getSeparatedView().setBackground(separatedViewBackground);
+ getSeparatedView().setBackground(separatedBackground);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index 3deede0..d3164a0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -22,7 +22,7 @@
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings.Global;
-import android.telephony.NetworkRegistrationState;
+import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
@@ -475,7 +475,7 @@
if (mServiceState == null) return null;
int nrStatus = mServiceState.getNrStatus();
- if (nrStatus == NetworkRegistrationState.NR_STATUS_CONNECTED) {
+ if (nrStatus == NetworkRegistrationInfo.NR_STATUS_CONNECTED) {
// Check if the NR 5G is using millimeter wave and the icon is config.
if (mServiceState.getNrFrequencyRange() == ServiceState.FREQUENCY_RANGE_MMWAVE) {
if (mConfig.nr5GIconMap.containsKey(Config.NR_CONNECTED_MMWAVE)) {
@@ -488,11 +488,11 @@
if (mConfig.nr5GIconMap.containsKey(Config.NR_CONNECTED)) {
return mConfig.nr5GIconMap.get(Config.NR_CONNECTED);
}
- } else if (nrStatus == NetworkRegistrationState.NR_STATUS_NOT_RESTRICTED) {
+ } else if (nrStatus == NetworkRegistrationInfo.NR_STATUS_NOT_RESTRICTED) {
if (mConfig.nr5GIconMap.containsKey(Config.NR_NOT_RESTRICTED)) {
return mConfig.nr5GIconMap.get(Config.NR_NOT_RESTRICTED);
}
- } else if (nrStatus == NetworkRegistrationState.NR_STATUS_RESTRICTED) {
+ } else if (nrStatus == NetworkRegistrationInfo.NR_STATUS_RESTRICTED) {
if (mConfig.nr5GIconMap.containsKey(Config.NR_RESTRICTED)) {
return mConfig.nr5GIconMap.get(Config.NR_RESTRICTED);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index 2baea1a..5786796 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -7,7 +7,7 @@
import android.net.NetworkCapabilities;
import android.os.Looper;
-import android.telephony.NetworkRegistrationState;
+import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;
@@ -151,7 +151,7 @@
updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
TelephonyManager.NETWORK_TYPE_LTE);
ServiceState ss = Mockito.mock(ServiceState.class);
- doReturn(NetworkRegistrationState.NR_STATUS_CONNECTED).when(ss).getNrStatus();
+ doReturn(NetworkRegistrationInfo.NR_STATUS_CONNECTED).when(ss).getNrStatus();
doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss).getNrFrequencyRange();
mPhoneStateListener.onServiceStateChanged(ss);
@@ -165,7 +165,7 @@
updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
TelephonyManager.NETWORK_TYPE_LTE);
ServiceState ss = Mockito.mock(ServiceState.class);
- doReturn(NetworkRegistrationState.NR_STATUS_CONNECTED).when(ss).getNrStatus();
+ doReturn(NetworkRegistrationInfo.NR_STATUS_CONNECTED).when(ss).getNrStatus();
doReturn(ServiceState.FREQUENCY_RANGE_MMWAVE).when(ss).getNrFrequencyRange();
mPhoneStateListener.onServiceStateChanged(ss);
@@ -179,7 +179,7 @@
updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
TelephonyManager.NETWORK_TYPE_LTE);
ServiceState ss = Mockito.mock(ServiceState.class);
- doReturn(NetworkRegistrationState.NR_STATUS_RESTRICTED).when(ss).getNrStatus();
+ doReturn(NetworkRegistrationInfo.NR_STATUS_RESTRICTED).when(ss).getNrStatus();
mPhoneStateListener.onServiceStateChanged(mServiceState);
verifyDataIndicators(TelephonyIcons.ICON_LTE);
diff --git a/services/backup/java/com/android/server/backup/params/RestoreParams.java b/services/backup/java/com/android/server/backup/params/RestoreParams.java
index 5125b0d..c9a6b60 100644
--- a/services/backup/java/com/android/server/backup/params/RestoreParams.java
+++ b/services/backup/java/com/android/server/backup/params/RestoreParams.java
@@ -105,7 +105,7 @@
/**
* Caller specifies whether is considered a system-level restore.
*/
- public static RestoreParams createForRestoreSome(
+ public static RestoreParams createForRestorePackages(
TransportClient transportClient,
IRestoreObserver observer,
IBackupManagerMonitor monitor,
diff --git a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
index 0fa0f89..10304c3 100644
--- a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
+++ b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
@@ -22,6 +22,7 @@
import static com.android.server.backup.internal.BackupHandler.MSG_RUN_GET_RESTORE_SETS;
import static com.android.server.backup.internal.BackupHandler.MSG_RUN_RESTORE;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.backup.IBackupManagerMonitor;
import android.app.backup.IRestoreObserver;
@@ -192,18 +193,22 @@
}
// Restores of more than a single package are treated as 'system' restores
- public synchronized int restoreSome(long token, IRestoreObserver observer,
- IBackupManagerMonitor monitor, String[] packages) {
+ public synchronized int restorePackages(long token, @Nullable IRestoreObserver observer,
+ @NonNull String[] packages, @Nullable IBackupManagerMonitor monitor) {
mBackupManagerService.getContext().enforceCallingOrSelfPermission(
android.Manifest.permission.BACKUP,
"performRestore");
if (DEBUG) {
StringBuilder b = new StringBuilder(128);
- b.append("restoreSome token=");
+ b.append("restorePackages token=");
b.append(Long.toHexString(token));
b.append(" observer=");
- b.append(observer.toString());
+ if (observer == null) {
+ b.append("null");
+ } else {
+ b.append(observer.toString());
+ }
b.append(" monitor=");
if (monitor == null) {
b.append("null");
@@ -260,7 +265,7 @@
try {
return sendRestoreToHandlerLocked(
(transportClient, listener) ->
- RestoreParams.createForRestoreSome(
+ RestoreParams.createForRestorePackages(
transportClient,
observer,
monitor,
@@ -268,7 +273,7 @@
packages,
/* isSystemRestore */ packages.length > 1,
listener),
- "RestoreSession.restoreSome(" + packages.length + " packages)");
+ "RestoreSession.restorePackages(" + packages.length + " packages)");
} finally {
Binder.restoreCallingIdentity(oldId);
}
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 6270106..e357ce8 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -1600,6 +1600,11 @@
"BIND_TREAT_LIKE_ACTIVITY");
}
+ if ((flags & Context.BIND_SCHEDULE_LIKE_TOP_APP) != 0 && !isCallerSystem) {
+ throw new SecurityException("Non-system caller (pid=" + Binder.getCallingPid()
+ + ") set BIND_SCHEDULE_LIKE_TOP_APP when binding service " + service);
+ }
+
if ((flags & Context.BIND_ALLOW_WHITELIST_MANAGEMENT) != 0 && !isCallerSystem) {
throw new SecurityException(
"Non-system caller " + caller + " (pid=" + Binder.getCallingPid()
diff --git a/services/core/java/com/android/server/am/ConnectionRecord.java b/services/core/java/com/android/server/am/ConnectionRecord.java
index af1031e..a1c941e 100644
--- a/services/core/java/com/android/server/am/ConnectionRecord.java
+++ b/services/core/java/com/android/server/am/ConnectionRecord.java
@@ -192,6 +192,9 @@
if ((flags&Context.BIND_TREAT_LIKE_ACTIVITY) != 0) {
sb.append("LACT ");
}
+ if ((flags & Context.BIND_SCHEDULE_LIKE_TOP_APP) != 0) {
+ sb.append("SLTA ");
+ }
if ((flags&Context.BIND_VISIBLE) != 0) {
sb.append("VIS ");
}
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 4e03b72..9056f76 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -1294,6 +1294,11 @@
ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND;
}
}
+ if (schedGroup < ProcessList.SCHED_GROUP_TOP_APP
+ && (cr.flags & Context.BIND_SCHEDULE_LIKE_TOP_APP) != 0) {
+ schedGroup = ProcessList.SCHED_GROUP_TOP_APP;
+ }
+
if (!trackedProcState) {
cr.trackProcState(clientProcState, mAdjSeq, now);
}
diff --git a/services/core/java/com/android/server/display/color/ColorDisplayService.java b/services/core/java/com/android/server/display/color/ColorDisplayService.java
index 2311776..45567e5 100644
--- a/services/core/java/com/android/server/display/color/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java
@@ -402,6 +402,10 @@
cr.registerContentObserver(Secure.getUriFor(Secure.DISPLAY_WHITE_BALANCE_ENABLED),
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
+ // Apply the accessibility settings first, since they override most other settings.
+ onAccessibilityInversionChanged();
+ onAccessibilityDaltonizerChanged();
+
// Set the color mode, if valid, and immediately apply the updated tint matrix based on the
// existing activated state. This ensures consistency of tint across the color mode change.
onDisplayColorModeChanged(getColorModeInternal());
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 150303a..647e952 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -231,7 +231,8 @@
Context.BIND_AUTO_CREATE
| Context.BIND_TREAT_LIKE_ACTIVITY
| Context.BIND_FOREGROUND_SERVICE
- | Context.BIND_SHOWING_UI;
+ | Context.BIND_SHOWING_UI
+ | Context.BIND_SCHEDULE_LIKE_TOP_APP;
@Retention(SOURCE)
@IntDef({HardKeyboardBehavior.WIRELESS_AFFORDANCE, HardKeyboardBehavior.WIRED_AFFORDANCE})
diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java
index 9e0cb0f..fd68a8b 100644
--- a/services/core/java/com/android/server/om/IdmapManager.java
+++ b/services/core/java/com/android/server/om/IdmapManager.java
@@ -82,7 +82,7 @@
final String overlayPath = overlayPackage.applicationInfo.getBaseCodePath();
try {
if (FEATURE_FLAG_IDMAP2) {
- int policies = determineFulfilledPolicies(targetPackage, overlayPackage, userId);
+ int policies = calculateFulfilledPolicies(targetPackage, overlayPackage, userId);
boolean enforce = enforceOverlayable(overlayPackage);
if (mIdmap2Service.verifyIdmap(overlayPath, policies, enforce, userId)) {
return true;
@@ -184,28 +184,25 @@
return true;
}
- if (ai.isVendor() && !VENDOR_IS_Q_OR_LATER) {
+ if (ai.isVendor()) {
// If the overlay is on a pre-Q vendor partition, do not enforce overlayable
// restrictions on this overlay because the pre-Q platform has no understanding of
// overlayable.
- return false;
+ return VENDOR_IS_Q_OR_LATER;
}
- // Do not enforce overlayable restrictions on pre-Q overlays signed with the
- // platform signature.
- return !ai.isSignedWithPlatformKey();
+ // Do not enforce overlayable restrictions on pre-Q overlays that are signed with the
+ // platform signature or that are preinstalled.
+ return !(ai.isSystemApp() || ai.isSignedWithPlatformKey());
}
/**
- * Retrieves a bitmask for idmap2 that represents the policies the specified overlay fulfills.
- * @throws SecurityException if the overlay is not allowed to overlay any resource
+ * Retrieves a bitmask for idmap2 that represents the policies the overlay fulfills.
*/
- private int determineFulfilledPolicies(@NonNull final PackageInfo targetPackage,
- @NonNull final PackageInfo overlayPackage, int userId) throws SecurityException {
+ private int calculateFulfilledPolicies(@NonNull final PackageInfo targetPackage,
+ @NonNull final PackageInfo overlayPackage, int userId) {
final ApplicationInfo ai = overlayPackage.applicationInfo;
- final boolean overlayIsQOrLater = ai.targetSdkVersion >= VERSION_CODES.Q;
-
- int fulfilledPolicies = 0;
+ int fulfilledPolicies = IIdmap2.POLICY_PUBLIC;
// Overlay matches target signature
if (mPackageManager.signaturesMatching(targetPackage.packageName,
@@ -215,32 +212,25 @@
// Vendor partition (/vendor)
if (ai.isVendor()) {
- if (overlayIsQOrLater) {
- fulfilledPolicies |= IIdmap2.POLICY_VENDOR_PARTITION;
- } else if (VENDOR_IS_Q_OR_LATER) {
- throw new SecurityException("Overlay must target Q sdk or higher");
- }
+ return fulfilledPolicies | IIdmap2.POLICY_VENDOR_PARTITION;
}
// Product partition (/product)
if (ai.isProduct()) {
- if (overlayIsQOrLater) {
- fulfilledPolicies |= IIdmap2.POLICY_PRODUCT_PARTITION;
- } else {
- throw new SecurityException("Overlay must target Q sdk or higher");
- }
+ return fulfilledPolicies | IIdmap2.POLICY_PRODUCT_PARTITION;
}
- // System partition (/system)
+ // Check partitions for which there exists no policy so overlays on these partitions will
+ // not fulfill the system policy.
+ if (ai.isOem() || ai.isProductServices()) {
+ return fulfilledPolicies;
+ }
+
+ // Check this last since every partition except for data is scanned as system in the PMS.
if (ai.isSystemApp()) {
- if (overlayIsQOrLater) {
- fulfilledPolicies |= IIdmap2.POLICY_SYSTEM_PARTITION;
- } else {
- throw new SecurityException("Overlay must target Q sdk or higher");
- }
+ return fulfilledPolicies | IIdmap2.POLICY_SYSTEM_PARTITION;
}
- // All overlays can overlay resources with the public policy
- return fulfilledPolicies | IIdmap2.POLICY_PUBLIC;
+ return fulfilledPolicies;
}
}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 3744f68..316a9c0 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1144,6 +1144,19 @@
}
@Override
+ public String getUserName() {
+ if (!hasManageUsersOrPermission(android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED)) {
+ throw new SecurityException("You need MANAGE_USERS or GET_ACCOUNTS_PRIVILEGED "
+ + "permissions to: get user name");
+ }
+ final int userId = UserHandle.getUserId(Binder.getCallingUid());
+ synchronized (mUsersLock) {
+ UserInfo userInfo = userWithName(getUserInfoLU(userId));
+ return userInfo == null ? "" : userInfo.name;
+ }
+ }
+
+ @Override
public long getUserStartRealtime() {
final int userId = UserHandle.getUserId(Binder.getCallingUid());
synchronized (mUsersLock) {
@@ -1299,7 +1312,12 @@
}
}
if (changed) {
- sendUserInfoChangedBroadcast(userId);
+ long ident = Binder.clearCallingIdentity();
+ try {
+ sendUserInfoChangedBroadcast(userId);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
}
@@ -1324,7 +1342,10 @@
@Override
public ParcelFileDescriptor getUserIcon(int targetUserId) {
- checkManageUsersPermission("get user icon");
+ if (!hasManageUsersOrPermission(android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED)) {
+ throw new SecurityException("You need MANAGE_USERS or GET_ACCOUNTS_PRIVILEGED "
+ + "permissions to: get user icon");
+ }
String iconPath;
synchronized (mPackagesLock) {
UserInfo targetUserInfo = getUserInfoNoChecks(targetUserId);
@@ -1941,15 +1962,23 @@
/**
* @return whether the calling UID is system UID or root's UID or the calling app has the
- * {@link android.Manifest.permission#MANAGE_USERS MANAGE_USERS} or
- * {@link android.Manifest.permission#CREATE_USERS CREATE_USERS}.
+ * {@link android.Manifest.permission#MANAGE_USERS MANAGE_USERS} or the provided permission.
*/
- private static final boolean hasManageOrCreateUsersPermission() {
+ private static final boolean hasManageUsersOrPermission(String alternativePermission) {
final int callingUid = Binder.getCallingUid();
return UserHandle.isSameApp(callingUid, Process.SYSTEM_UID)
|| callingUid == Process.ROOT_UID
|| hasPermissionGranted(android.Manifest.permission.MANAGE_USERS, callingUid)
- || hasPermissionGranted(android.Manifest.permission.CREATE_USERS, callingUid);
+ || hasPermissionGranted(alternativePermission, callingUid);
+ }
+
+ /**
+ * @return whether the calling UID is system UID or root's UID or the calling app has the
+ * {@link android.Manifest.permission#MANAGE_USERS MANAGE_USERS} or
+ * {@link android.Manifest.permission#CREATE_USERS CREATE_USERS}.
+ */
+ private static final boolean hasManageOrCreateUsersPermission() {
+ return hasManageUsersOrPermission(android.Manifest.permission.CREATE_USERS);
}
/**
diff --git a/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java b/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java
index f17a9fe..f4cea7a 100644
--- a/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java
@@ -326,15 +326,14 @@
}
@Test
- public void testRestoreSome_for2Packages() throws Exception {
+ public void testRestorePackages_for2Packages() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
TransportMock transportMock = setUpTransport(mTransport);
IRestoreSession restoreSession =
createActiveRestoreSessionWithRestoreSets(null, mTransport, mRestoreSet1);
- int result =
- restoreSession.restoreSome(
- TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1, PACKAGE_2});
+ int result = restoreSession.restorePackages(TOKEN_1, mObserver,
+ new String[] {PACKAGE_1, PACKAGE_2}, mMonitor);
mShadowBackupLooper.runToEndOfTasks();
assertThat(result).isEqualTo(0);
@@ -349,27 +348,27 @@
}
@Test
- public void testRestoreSome_for2Packages_createsSystemRestoreTask() throws Exception {
+ public void testRestorePackages_for2Packages_createsSystemRestoreTask() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport);
IRestoreSession restoreSession =
createActiveRestoreSessionWithRestoreSets(null, mTransport, mRestoreSet1);
- restoreSession.restoreSome(
- TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1, PACKAGE_2});
+ restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_1, PACKAGE_2},
+ mMonitor);
mShadowBackupLooper.runToEndOfTasks();
assertThat(ShadowPerformUnifiedRestoreTask.getLastCreated().isFullSystemRestore()).isTrue();
}
@Test
- public void testRestoreSome_for1Package() throws Exception {
+ public void testRestorePackages_for1Package() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport);
IRestoreSession restoreSession =
createActiveRestoreSessionWithRestoreSets(null, mTransport, mRestoreSet1);
- restoreSession.restoreSome(TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1});
+ restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_1}, mMonitor);
mShadowBackupLooper.runToEndOfTasks();
ShadowPerformUnifiedRestoreTask shadowTask =
@@ -379,13 +378,13 @@
}
@Test
- public void testRestoreSome_for1Package_createsNonSystemRestoreTask() throws Exception {
+ public void testRestorePackages_for1Package_createsNonSystemRestoreTask() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport);
IRestoreSession restoreSession =
createActiveRestoreSessionWithRestoreSets(null, mTransport, mRestoreSet1);
- restoreSession.restoreSome(TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1});
+ restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_1}, mMonitor);
mShadowBackupLooper.runToEndOfTasks();
assertThat(ShadowPerformUnifiedRestoreTask.getLastCreated().isFullSystemRestore())
@@ -393,32 +392,32 @@
}
@Test
- public void testRestoreSome_whenNoRestoreSets() throws Exception {
+ public void testRestorePackages_whenNoRestoreSets() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport);
IRestoreSession restoreSession = createActiveRestoreSession(null, mTransport);
- int result =
- restoreSession.restoreSome(TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1});
+ int result = restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_1},
+ mMonitor);
assertThat(result).isEqualTo(-1);
}
@Test
- public void testRestoreSome_whenSinglePackageSession() throws Exception {
+ public void testRestorePackages_whenSinglePackageSession() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport);
IRestoreSession restoreSession =
createActiveRestoreSessionWithRestoreSets(PACKAGE_1, mTransport, mRestoreSet1);
- int result =
- restoreSession.restoreSome(TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_2});
+ int result = restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_2},
+ mMonitor);
assertThat(result).isEqualTo(-1);
}
@Test
- public void testRestoreSome_whenSessionEnded() throws Exception {
+ public void testRestorePackages_whenSessionEnded() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport);
IRestoreSession restoreSession =
@@ -429,19 +428,19 @@
expectThrows(
IllegalStateException.class,
() ->
- restoreSession.restoreSome(
- TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1}));
+ restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_1},
+ mMonitor));
}
@Test
- public void testRestoreSome_whenTransportNotRegistered() throws Exception {
+ public void testRestorePackages_whenTransportNotRegistered() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
setUpTransport(mTransport.unregistered());
IRestoreSession restoreSession =
createActiveRestoreSessionWithRestoreSets(null, mTransport, mRestoreSet1);
- int result =
- restoreSession.restoreSome(TOKEN_1, mObserver, mMonitor, new String[] {PACKAGE_1});
+ int result = restoreSession.restorePackages(TOKEN_1, mObserver, new String[] {PACKAGE_1},
+ mMonitor);
assertThat(result).isEqualTo(-1);
}
diff --git a/telephony/java/android/telephony/INetworkService.aidl b/telephony/java/android/telephony/INetworkService.aidl
index 9ef7186..67e5650 100644
--- a/telephony/java/android/telephony/INetworkService.aidl
+++ b/telephony/java/android/telephony/INetworkService.aidl
@@ -25,7 +25,7 @@
{
void createNetworkServiceProvider(int slotId);
void removeNetworkServiceProvider(int slotId);
- void getNetworkRegistrationState(int slotId, int domain, INetworkServiceCallback callback);
- void registerForNetworkRegistrationStateChanged(int slotId, INetworkServiceCallback callback);
- void unregisterForNetworkRegistrationStateChanged(int slotId, INetworkServiceCallback callback);
+ void getNetworkRegistrationInfo(int slotId, int domain, INetworkServiceCallback callback);
+ void registerForNetworkRegistrationInfoChanged(int slotId, INetworkServiceCallback callback);
+ void unregisterForNetworkRegistrationInfoChanged(int slotId, INetworkServiceCallback callback);
}
diff --git a/telephony/java/android/telephony/INetworkServiceCallback.aidl b/telephony/java/android/telephony/INetworkServiceCallback.aidl
index 520598f..33b3ac0 100644
--- a/telephony/java/android/telephony/INetworkServiceCallback.aidl
+++ b/telephony/java/android/telephony/INetworkServiceCallback.aidl
@@ -16,7 +16,7 @@
package android.telephony;
-import android.telephony.NetworkRegistrationState;
+import android.telephony.NetworkRegistrationInfo;
/**
* Network service call back interface
@@ -24,6 +24,6 @@
*/
oneway interface INetworkServiceCallback
{
- void onGetNetworkRegistrationStateComplete(int result, in NetworkRegistrationState state);
+ void onGetNetworkRegistrationInfoComplete(int result, in NetworkRegistrationInfo state);
void onNetworkStateChanged();
}
diff --git a/telephony/java/android/telephony/NetworkRegistrationState.aidl b/telephony/java/android/telephony/NetworkRegistrationInfo.aidl
similarity index 94%
rename from telephony/java/android/telephony/NetworkRegistrationState.aidl
rename to telephony/java/android/telephony/NetworkRegistrationInfo.aidl
index 98cba77..5c803bf 100644
--- a/telephony/java/android/telephony/NetworkRegistrationState.aidl
+++ b/telephony/java/android/telephony/NetworkRegistrationInfo.aidl
@@ -16,4 +16,4 @@
package android.telephony;
-parcelable NetworkRegistrationState;
+parcelable NetworkRegistrationInfo;
diff --git a/telephony/java/android/telephony/NetworkRegistrationState.java b/telephony/java/android/telephony/NetworkRegistrationInfo.java
similarity index 88%
rename from telephony/java/android/telephony/NetworkRegistrationState.java
rename to telephony/java/android/telephony/NetworkRegistrationInfo.java
index eff3285..c31a14e 100644
--- a/telephony/java/android/telephony/NetworkRegistrationState.java
+++ b/telephony/java/android/telephony/NetworkRegistrationInfo.java
@@ -32,11 +32,11 @@
import java.util.stream.Collectors;
/**
- * Description of a mobile network registration state
+ * Description of a mobile network registration info
* @hide
*/
@SystemApi
-public class NetworkRegistrationState implements Parcelable {
+public class NetworkRegistrationInfo implements Parcelable {
/**
* Network domain
* @hide
@@ -184,12 +184,12 @@
* @param cellIdentity The identity representing a unique cell or wifi AP. Set to null if the
* information is not available.
*/
- public NetworkRegistrationState(@Domain int domain, @TransportType int transportType,
- @RegState int regState,
- @NetworkType int accessNetworkTechnology, int rejectCause,
- boolean emergencyOnly,
- @NonNull @ServiceType int[] availableServices,
- @Nullable CellIdentity cellIdentity) {
+ public NetworkRegistrationInfo(@Domain int domain, @TransportType int transportType,
+ @RegState int regState,
+ @NetworkType int accessNetworkTechnology, int rejectCause,
+ boolean emergencyOnly,
+ @NonNull @ServiceType int[] availableServices,
+ @Nullable CellIdentity cellIdentity) {
mDomain = domain;
mTransportType = transportType;
mRegState = regState;
@@ -204,13 +204,15 @@
}
/**
- * Constructor for voice network registration states.
+ * Constructor for voice network registration info.
* @hide
*/
- public NetworkRegistrationState(int domain, @TransportType int transportType, int regState,
- int accessNetworkTechnology, int rejectCause, boolean emergencyOnly,
- int[] availableServices, @Nullable CellIdentity cellIdentity, boolean cssSupported,
- int roamingIndicator, int systemIsInPrl, int defaultRoamingIndicator) {
+ public NetworkRegistrationInfo(int domain, @TransportType int transportType, int regState,
+ int accessNetworkTechnology, int rejectCause,
+ boolean emergencyOnly, int[] availableServices,
+ @Nullable CellIdentity cellIdentity, boolean cssSupported,
+ int roamingIndicator, int systemIsInPrl,
+ int defaultRoamingIndicator) {
this(domain, transportType, regState, accessNetworkTechnology, rejectCause, emergencyOnly,
availableServices, cellIdentity);
@@ -219,14 +221,16 @@
}
/**
- * Constructor for data network registration states.
+ * Constructor for data network registration info.
* @hide
*/
- public NetworkRegistrationState(int domain, @TransportType int transportType, int regState,
- int accessNetworkTechnology, int rejectCause, boolean emergencyOnly,
- int[] availableServices, @Nullable CellIdentity cellIdentity, int maxDataCalls,
- boolean isDcNrRestricted, boolean isNrAvailable, boolean isEndcAvailable,
- LteVopsSupportInfo lteVopsSupportInfo) {
+ public NetworkRegistrationInfo(int domain, @TransportType int transportType, int regState,
+ int accessNetworkTechnology, int rejectCause,
+ boolean emergencyOnly, int[] availableServices,
+ @Nullable CellIdentity cellIdentity, int maxDataCalls,
+ boolean isDcNrRestricted, boolean isNrAvailable,
+ boolean isEndcAvailable,
+ LteVopsSupportInfo lteVopsSupportInfo) {
this(domain, transportType, regState, accessNetworkTechnology, rejectCause, emergencyOnly,
availableServices, cellIdentity);
@@ -235,7 +239,7 @@
updateNrStatus(mDataSpecificStates);
}
- private NetworkRegistrationState(Parcel source) {
+ private NetworkRegistrationInfo(Parcel source) {
mDomain = source.readInt();
mTransportType = source.readInt();
mRegState = source.readInt();
@@ -433,7 +437,7 @@
@Override
public String toString() {
- return new StringBuilder("NetworkRegistrationState{")
+ return new StringBuilder("NetworkRegistrationInfo{")
.append(" domain=").append((mDomain == DOMAIN_CS) ? "CS" : "PS")
.append(" transportType=").append(
AccessNetworkConstants.transportTypeToString(mTransportType))
@@ -465,11 +469,11 @@
public boolean equals(Object o) {
if (this == o) return true;
- if (!(o instanceof NetworkRegistrationState)) {
+ if (!(o instanceof NetworkRegistrationInfo)) {
return false;
}
- NetworkRegistrationState other = (NetworkRegistrationState) o;
+ NetworkRegistrationInfo other = (NetworkRegistrationInfo) o;
return mDomain == other.mDomain
&& mTransportType == other.mTransportType
&& mRegState == other.mRegState
@@ -528,46 +532,46 @@
}
}
- public static final @android.annotation.NonNull Parcelable.Creator<NetworkRegistrationState> CREATOR =
- new Parcelable.Creator<NetworkRegistrationState>() {
- @Override
- public NetworkRegistrationState createFromParcel(Parcel source) {
- return new NetworkRegistrationState(source);
- }
+ public static final @NonNull Parcelable.Creator<NetworkRegistrationInfo> CREATOR =
+ new Parcelable.Creator<NetworkRegistrationInfo>() {
+ @Override
+ public NetworkRegistrationInfo createFromParcel(Parcel source) {
+ return new NetworkRegistrationInfo(source);
+ }
- @Override
- public NetworkRegistrationState[] newArray(int size) {
- return new NetworkRegistrationState[size];
- }
- };
+ @Override
+ public NetworkRegistrationInfo[] newArray(int size) {
+ return new NetworkRegistrationInfo[size];
+ }
+ };
/**
* @hide
*/
- public NetworkRegistrationState sanitizeLocationInfo() {
- NetworkRegistrationState result = copy();
+ public NetworkRegistrationInfo sanitizeLocationInfo() {
+ NetworkRegistrationInfo result = copy();
result.mCellIdentity = null;
return result;
}
- private NetworkRegistrationState copy() {
+ private NetworkRegistrationInfo copy() {
Parcel p = Parcel.obtain();
this.writeToParcel(p, 0);
p.setDataPosition(0);
- NetworkRegistrationState result = new NetworkRegistrationState(p);
+ NetworkRegistrationInfo result = new NetworkRegistrationInfo(p);
p.recycle();
return result;
}
/**
- * Provides a convenient way to set the fields of a {@link NetworkRegistrationState} when
+ * Provides a convenient way to set the fields of a {@link NetworkRegistrationInfo} when
* creating a new instance.
*
- * <p>The example below shows how you might create a new {@code NetworkRegistrationState}:
+ * <p>The example below shows how you might create a new {@code NetworkRegistrationInfo}:
*
* <pre><code>
*
- * NetworkRegistrationState nrs = new NetworkRegistrationState.Builder()
+ * NetworkRegistrationInfo nrs = new NetworkRegistrationInfo.Builder()
* .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
* .setApnName("apn.example.com")
* .setEntryName("Example Carrier APN")
@@ -736,12 +740,12 @@
}
/**
- * Build the NetworkRegistrationState.
+ * Build the NetworkRegistrationInfo.
*
- * @return the NetworkRegistrationState object.
+ * @return the NetworkRegistrationInfo object.
*/
- public @NonNull NetworkRegistrationState build() {
- return new NetworkRegistrationState(mDomain, mTransportType, mRegState,
+ public @NonNull NetworkRegistrationInfo build() {
+ return new NetworkRegistrationInfo(mDomain, mTransportType, mRegState,
mAccessNetworkTechnology, mRejectCause, mEmergencyOnly, mAvailableServices,
mCellIdentity);
}
diff --git a/telephony/java/android/telephony/NetworkService.java b/telephony/java/android/telephony/NetworkService.java
index f1240e9..bc989dd 100644
--- a/telephony/java/android/telephony/NetworkService.java
+++ b/telephony/java/android/telephony/NetworkService.java
@@ -27,7 +27,7 @@
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
-import android.telephony.NetworkRegistrationState.Domain;
+import android.telephony.NetworkRegistrationInfo.Domain;
import android.util.SparseArray;
import com.android.internal.annotations.VisibleForTesting;
@@ -59,10 +59,10 @@
private static final int NETWORK_SERVICE_CREATE_NETWORK_SERVICE_PROVIDER = 1;
private static final int NETWORK_SERVICE_REMOVE_NETWORK_SERVICE_PROVIDER = 2;
private static final int NETWORK_SERVICE_REMOVE_ALL_NETWORK_SERVICE_PROVIDERS = 3;
- private static final int NETWORK_SERVICE_GET_REGISTRATION_STATE = 4;
- private static final int NETWORK_SERVICE_REGISTER_FOR_STATE_CHANGE = 5;
- private static final int NETWORK_SERVICE_UNREGISTER_FOR_STATE_CHANGE = 6;
- private static final int NETWORK_SERVICE_INDICATION_NETWORK_STATE_CHANGED = 7;
+ private static final int NETWORK_SERVICE_GET_REGISTRATION_INFO = 4;
+ private static final int NETWORK_SERVICE_REGISTER_FOR_INFO_CHANGE = 5;
+ private static final int NETWORK_SERVICE_UNREGISTER_FOR_INFO_CHANGE = 6;
+ private static final int NETWORK_SERVICE_INDICATION_NETWORK_INFO_CHANGED = 7;
private final HandlerThread mHandlerThread;
@@ -86,7 +86,7 @@
private final int mSlotIndex;
private final List<INetworkServiceCallback>
- mNetworkRegistrationStateChangedCallbacks = new ArrayList<>();
+ mNetworkRegistrationInfoChangedCallbacks = new ArrayList<>();
/**
* Constructor
@@ -104,38 +104,38 @@
}
/**
- * API to get network registration state. The result will be passed to the callback.
+ * API to get network registration info. The result will be passed to the callback.
* @param domain Network domain
- * @param callback The callback for reporting network registration state
+ * @param callback The callback for reporting network registration info
*/
- public void getNetworkRegistrationState(@Domain int domain,
- @NonNull NetworkServiceCallback callback) {
- callback.onGetNetworkRegistrationStateComplete(
+ public void getNetworkRegistrationInfo(@Domain int domain,
+ @NonNull NetworkServiceCallback callback) {
+ callback.onGetNetworkRegistrationInfoComplete(
NetworkServiceCallback.RESULT_ERROR_UNSUPPORTED, null);
}
/**
- * Notify the system that network registration state is changed.
+ * Notify the system that network registration info is changed.
*/
- public final void notifyNetworkRegistrationStateChanged() {
- mHandler.obtainMessage(NETWORK_SERVICE_INDICATION_NETWORK_STATE_CHANGED,
+ public final void notifyNetworkRegistrationInfoChanged() {
+ mHandler.obtainMessage(NETWORK_SERVICE_INDICATION_NETWORK_INFO_CHANGED,
mSlotIndex, 0, null).sendToTarget();
}
- private void registerForStateChanged(@NonNull INetworkServiceCallback callback) {
- synchronized (mNetworkRegistrationStateChangedCallbacks) {
- mNetworkRegistrationStateChangedCallbacks.add(callback);
+ private void registerForInfoChanged(@NonNull INetworkServiceCallback callback) {
+ synchronized (mNetworkRegistrationInfoChangedCallbacks) {
+ mNetworkRegistrationInfoChangedCallbacks.add(callback);
}
}
- private void unregisterForStateChanged(@NonNull INetworkServiceCallback callback) {
- synchronized (mNetworkRegistrationStateChangedCallbacks) {
- mNetworkRegistrationStateChangedCallbacks.remove(callback);
+ private void unregisterForInfoChanged(@NonNull INetworkServiceCallback callback) {
+ synchronized (mNetworkRegistrationInfoChangedCallbacks) {
+ mNetworkRegistrationInfoChangedCallbacks.remove(callback);
}
}
- private void notifyStateChangedToCallbacks() {
- for (INetworkServiceCallback callback : mNetworkRegistrationStateChangedCallbacks) {
+ private void notifyInfoChangedToCallbacks() {
+ for (INetworkServiceCallback callback : mNetworkRegistrationInfoChangedCallbacks) {
try {
callback.onNetworkStateChanged();
} catch (RemoteException exception) {
@@ -189,24 +189,24 @@
}
mServiceMap.clear();
break;
- case NETWORK_SERVICE_GET_REGISTRATION_STATE:
+ case NETWORK_SERVICE_GET_REGISTRATION_INFO:
if (serviceProvider == null) break;
int domainId = message.arg2;
- serviceProvider.getNetworkRegistrationState(domainId,
+ serviceProvider.getNetworkRegistrationInfo(domainId,
new NetworkServiceCallback(callback));
break;
- case NETWORK_SERVICE_REGISTER_FOR_STATE_CHANGE:
+ case NETWORK_SERVICE_REGISTER_FOR_INFO_CHANGE:
if (serviceProvider == null) break;
- serviceProvider.registerForStateChanged(callback);
+ serviceProvider.registerForInfoChanged(callback);
break;
- case NETWORK_SERVICE_UNREGISTER_FOR_STATE_CHANGE:
+ case NETWORK_SERVICE_UNREGISTER_FOR_INFO_CHANGE:
if (serviceProvider == null) break;
- serviceProvider.unregisterForStateChanged(callback);
+ serviceProvider.unregisterForInfoChanged(callback);
break;
- case NETWORK_SERVICE_INDICATION_NETWORK_STATE_CHANGED:
+ case NETWORK_SERVICE_INDICATION_NETWORK_INFO_CHANGED:
if (serviceProvider == null) break;
- serviceProvider.notifyStateChangedToCallbacks();
+ serviceProvider.notifyInfoChangedToCallbacks();
break;
default:
break;
@@ -280,23 +280,23 @@
}
@Override
- public void getNetworkRegistrationState(
+ public void getNetworkRegistrationInfo(
int slotIndex, int domain, INetworkServiceCallback callback) {
- mHandler.obtainMessage(NETWORK_SERVICE_GET_REGISTRATION_STATE, slotIndex,
+ mHandler.obtainMessage(NETWORK_SERVICE_GET_REGISTRATION_INFO, slotIndex,
domain, callback).sendToTarget();
}
@Override
- public void registerForNetworkRegistrationStateChanged(
+ public void registerForNetworkRegistrationInfoChanged(
int slotIndex, INetworkServiceCallback callback) {
- mHandler.obtainMessage(NETWORK_SERVICE_REGISTER_FOR_STATE_CHANGE, slotIndex,
+ mHandler.obtainMessage(NETWORK_SERVICE_REGISTER_FOR_INFO_CHANGE, slotIndex,
0, callback).sendToTarget();
}
@Override
- public void unregisterForNetworkRegistrationStateChanged(
+ public void unregisterForNetworkRegistrationInfoChanged(
int slotIndex, INetworkServiceCallback callback) {
- mHandler.obtainMessage(NETWORK_SERVICE_UNREGISTER_FOR_STATE_CHANGE, slotIndex,
+ mHandler.obtainMessage(NETWORK_SERVICE_UNREGISTER_FOR_INFO_CHANGE, slotIndex,
0, callback).sendToTarget();
}
}
diff --git a/telephony/java/android/telephony/NetworkServiceCallback.java b/telephony/java/android/telephony/NetworkServiceCallback.java
index c2fcfb7..cc25240 100644
--- a/telephony/java/android/telephony/NetworkServiceCallback.java
+++ b/telephony/java/android/telephony/NetworkServiceCallback.java
@@ -28,8 +28,8 @@
/**
* Network service callback. Object of this class is passed to NetworkServiceProvider upon
- * calling getNetworkRegistrationState, to receive asynchronous feedback from NetworkServiceProvider
- * upon onGetNetworkRegistrationStateComplete. It's like a wrapper of INetworkServiceCallback
+ * calling getNetworkRegistrationInfo, to receive asynchronous feedback from NetworkServiceProvider
+ * upon onGetNetworkRegistrationInfoComplete. It's like a wrapper of INetworkServiceCallback
* because INetworkServiceCallback can't be a parameter type in public APIs.
*
* @hide
@@ -70,20 +70,20 @@
/**
* Called to indicate result of
- * {@link NetworkServiceProvider#getNetworkRegistrationState(int, NetworkServiceCallback)}
+ * {@link NetworkServiceProvider#getNetworkRegistrationInfo(int, NetworkServiceCallback)}
*
* @param result Result status like {@link NetworkServiceCallback#RESULT_SUCCESS} or
* {@link NetworkServiceCallback#RESULT_ERROR_UNSUPPORTED}
* @param state The state information to be returned to callback.
*/
- public void onGetNetworkRegistrationStateComplete(int result,
- @Nullable NetworkRegistrationState state) {
+ public void onGetNetworkRegistrationInfoComplete(int result,
+ @Nullable NetworkRegistrationInfo state) {
INetworkServiceCallback callback = mCallback.get();
if (callback != null) {
try {
- callback.onGetNetworkRegistrationStateComplete(result, state);
+ callback.onGetNetworkRegistrationInfoComplete(result, state);
} catch (RemoteException e) {
- Rlog.e(mTag, "Failed to onGetNetworkRegistrationStateComplete on the remote");
+ Rlog.e(mTag, "Failed to onGetNetworkRegistrationInfoComplete on the remote");
}
} else {
Rlog.e(mTag, "Weak reference of callback is null.");
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 687c6f4..adbe295 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -29,8 +29,8 @@
import android.os.Parcelable;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.AccessNetworkConstants.TransportType;
-import android.telephony.NetworkRegistrationState.Domain;
-import android.telephony.NetworkRegistrationState.NRStatus;
+import android.telephony.NetworkRegistrationInfo.Domain;
+import android.telephony.NetworkRegistrationInfo.NRStatus;
import android.text.TextUtils;
import java.lang.annotation.Retention;
@@ -349,7 +349,7 @@
* Reference: 3GPP TS 36.104 5.4.3 */
private int mLteEarfcnRsrpBoost = 0;
- private List<NetworkRegistrationState> mNetworkRegistrationStates = new ArrayList<>();
+ private List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>();
/**
* get String description of roaming type
@@ -432,8 +432,8 @@
mCellBandwidths = s.mCellBandwidths == null ? null :
Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length);
mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost;
- mNetworkRegistrationStates = s.mNetworkRegistrationStates == null ? null :
- new ArrayList<>(s.mNetworkRegistrationStates);
+ mNetworkRegistrationInfos = s.mNetworkRegistrationInfos == null ? null :
+ new ArrayList<>(s.mNetworkRegistrationInfos);
mNrFrequencyRange = s.mNrFrequencyRange;
}
@@ -466,8 +466,8 @@
mIsEmergencyOnly = in.readInt() != 0;
mIsUsingCarrierAggregation = in.readInt() != 0;
mLteEarfcnRsrpBoost = in.readInt();
- mNetworkRegistrationStates = new ArrayList<>();
- in.readList(mNetworkRegistrationStates, NetworkRegistrationState.class.getClassLoader());
+ mNetworkRegistrationInfos = new ArrayList<>();
+ in.readList(mNetworkRegistrationInfos, NetworkRegistrationInfo.class.getClassLoader());
mChannelNumber = in.readInt();
mCellBandwidths = in.createIntArray();
mNrFrequencyRange = in.readInt();
@@ -495,7 +495,7 @@
out.writeInt(mIsEmergencyOnly ? 1 : 0);
out.writeInt(mIsUsingCarrierAggregation ? 1 : 0);
out.writeInt(mLteEarfcnRsrpBoost);
- out.writeList(mNetworkRegistrationStates);
+ out.writeList(mNetworkRegistrationInfos);
out.writeInt(mChannelNumber);
out.writeIntArray(mCellBandwidths);
out.writeInt(mNrFrequencyRange);
@@ -620,8 +620,8 @@
*/
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public @RoamingType int getVoiceRoamingType() {
- final NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ final NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState != null) {
return regState.getRoamingType();
}
@@ -644,10 +644,10 @@
* @hide
*/
public boolean getDataRoamingFromRegistration() {
- final NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ final NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState != null) {
- return (regState.getRegState() == NetworkRegistrationState.REG_STATE_ROAMING);
+ return (regState.getRegState() == NetworkRegistrationInfo.REG_STATE_ROAMING);
}
return false;
}
@@ -659,8 +659,8 @@
*/
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public @RoamingType int getDataRoamingType() {
- final NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ final NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState != null) {
return regState.getRoamingType();
}
@@ -858,7 +858,7 @@
mIsEmergencyOnly,
mIsUsingCarrierAggregation,
mLteEarfcnRsrpBoost,
- mNetworkRegistrationStates,
+ mNetworkRegistrationInfos,
mNrFrequencyRange);
}
@@ -888,9 +888,9 @@
s.mCdmaDefaultRoamingIndicator)
&& mIsEmergencyOnly == s.mIsEmergencyOnly
&& mIsUsingCarrierAggregation == s.mIsUsingCarrierAggregation)
- && (mNetworkRegistrationStates == null ? s.mNetworkRegistrationStates == null :
- s.mNetworkRegistrationStates != null &&
- mNetworkRegistrationStates.containsAll(s.mNetworkRegistrationStates))
+ && (mNetworkRegistrationInfos == null
+ ? s.mNetworkRegistrationInfos == null : s.mNetworkRegistrationInfos != null
+ && mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos))
&& mNrFrequencyRange == s.mNrFrequencyRange;
}
@@ -1043,7 +1043,7 @@
.append(", mIsEmergencyOnly=").append(mIsEmergencyOnly)
.append(", mIsUsingCarrierAggregation=").append(mIsUsingCarrierAggregation)
.append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
- .append(", mNetworkRegistrationStates=").append(mNetworkRegistrationStates)
+ .append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
.append(", mNrFrequencyRange=").append(mNrFrequencyRange)
.append("}").toString();
}
@@ -1073,7 +1073,7 @@
mIsEmergencyOnly = false;
mIsUsingCarrierAggregation = false;
mLteEarfcnRsrpBoost = 0;
- mNetworkRegistrationStates = new ArrayList<>();
+ mNetworkRegistrationInfos = new ArrayList<>();
mNrFrequencyRange = FREQUENCY_RANGE_UNKNOWN;
}
@@ -1130,14 +1130,14 @@
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setVoiceRoamingType(@RoamingType int type) {
- NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState == null) {
- regState = new NetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ regState = new NetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
ServiceState.ROAMING_TYPE_NOT_ROAMING, TelephonyManager.NETWORK_TYPE_UNKNOWN, 0,
false, null, null);
- addNetworkRegistrationState(regState);
+ addNetworkRegistrationInfo(regState);
}
regState.setRoamingType(type);
}
@@ -1151,14 +1151,14 @@
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setDataRoamingType(@RoamingType int type) {
- NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState == null) {
- regState = new NetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ regState = new NetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
ServiceState.ROAMING_TYPE_NOT_ROAMING, TelephonyManager.NETWORK_TYPE_UNKNOWN, 0,
false, null, null);
- addNetworkRegistrationState(regState);
+ addNetworkRegistrationInfo(regState);
}
regState.setRoamingType(type);
}
@@ -1326,14 +1326,14 @@
this.mRilVoiceRadioTechnology = rt;
// sync to network registration state
- NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState == null) {
- regState = new NetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ regState = new NetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
ServiceState.ROAMING_TYPE_NOT_ROAMING, TelephonyManager.NETWORK_TYPE_UNKNOWN,
0, false, null, null);
- addNetworkRegistrationState(regState);
+ addNetworkRegistrationInfo(regState);
}
regState.setAccessNetworkTechnology(
rilRadioTechnologyToNetworkType(mRilVoiceRadioTechnology));
@@ -1353,15 +1353,15 @@
mRilDataRadioTechnology);
// sync to network registration state
- NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState == null) {
- regState = new NetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+ regState = new NetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
ServiceState.ROAMING_TYPE_NOT_ROAMING, TelephonyManager.NETWORK_TYPE_UNKNOWN,
0, false, null, null);
- addNetworkRegistrationState(regState);
+ addNetworkRegistrationInfo(regState);
}
regState.setAccessNetworkTechnology(
rilRadioTechnologyToNetworkType(mRilDataRadioTechnology));
@@ -1391,9 +1391,9 @@
* @hide
*/
public @NRStatus int getNrStatus() {
- final NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
- if (regState == null) return NetworkRegistrationState.NR_STATUS_NONE;
+ final NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ if (regState == null) return NetworkRegistrationInfo.NR_STATUS_NONE;
return regState.getNrStatus();
}
@@ -1576,19 +1576,19 @@
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public @TelephonyManager.NetworkType int getDataNetworkType() {
- final NetworkRegistrationState iwlanRegState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
+ final NetworkRegistrationInfo iwlanRegState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
if (iwlanRegState != null
- && iwlanRegState.getRegState() == NetworkRegistrationState.REG_STATE_HOME) {
+ && iwlanRegState.getRegState() == NetworkRegistrationInfo.REG_STATE_HOME) {
// If the device is on IWLAN, return IWLAN as the network type. This is to simulate the
// behavior of legacy mode device. In the future caller should use
- // getNetworkRegistrationState() to retrieve the actual data network type on cellular
+ // getNetworkRegistrationInfo() to retrieve the actual data network type on cellular
// or on IWLAN.
return iwlanRegState.getAccessNetworkTechnology();
}
- final NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ final NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState != null) {
return regState.getAccessNetworkTechnology();
}
@@ -1598,8 +1598,8 @@
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public @TelephonyManager.NetworkType int getVoiceNetworkType() {
- final NetworkRegistrationState regState = getNetworkRegistrationState(
- NetworkRegistrationState.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ final NetworkRegistrationInfo regState = getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
if (regState != null) {
return regState.getAccessNetworkTechnology();
}
@@ -1762,52 +1762,36 @@
}
/**
- * Get all of the available network registration states.
+ * Get all of the available network registration info.
*
- * @return List of {@link NetworkRegistrationState}
+ * @return List of {@link NetworkRegistrationInfo}
* @hide
*/
@NonNull
@SystemApi
- public List<NetworkRegistrationState> getNetworkRegistrationStates() {
- synchronized (mNetworkRegistrationStates) {
- return new ArrayList<>(mNetworkRegistrationStates);
+ public List<NetworkRegistrationInfo> getNetworkRegistrationInfoList() {
+ synchronized (mNetworkRegistrationInfos) {
+ return new ArrayList<>(mNetworkRegistrationInfos);
}
}
/**
- * Get the network registration states for the transport type.
+ * Get the network registration info list for the transport type.
*
* @param transportType The transport type
- * @return List of {@link NetworkRegistrationState}
- * @hide
- *
- * @deprecated Use {@link #getNetworkRegistrationStatesForTransportType(int)}
- */
- @NonNull
- @Deprecated
- @SystemApi
- public List<NetworkRegistrationState> getNetworkRegistrationStates(int transportType) {
- return getNetworkRegistrationStatesForTransportType(transportType);
- }
-
- /**
- * Get the network registration states for the transport type.
- *
- * @param transportType The transport type
- * @return List of {@link NetworkRegistrationState}
+ * @return List of {@link NetworkRegistrationInfo}
* @hide
*/
@NonNull
@SystemApi
- public List<NetworkRegistrationState> getNetworkRegistrationStatesForTransportType(
+ public List<NetworkRegistrationInfo> getNetworkRegistrationInfoListForTransportType(
@TransportType int transportType) {
- List<NetworkRegistrationState> list = new ArrayList<>();
+ List<NetworkRegistrationInfo> list = new ArrayList<>();
- synchronized (mNetworkRegistrationStates) {
- for (NetworkRegistrationState networkRegistrationState : mNetworkRegistrationStates) {
- if (networkRegistrationState.getTransportType() == transportType) {
- list.add(networkRegistrationState);
+ synchronized (mNetworkRegistrationInfos) {
+ for (NetworkRegistrationInfo networkRegistrationInfo : mNetworkRegistrationInfos) {
+ if (networkRegistrationInfo.getTransportType() == transportType) {
+ list.add(networkRegistrationInfo);
}
}
}
@@ -1816,22 +1800,22 @@
}
/**
- * Get the network registration states for the network domain.
+ * Get the network registration info list for the network domain.
*
- * @param domain The network {@link NetworkRegistrationState.Domain domain}
- * @return List of {@link NetworkRegistrationState}
+ * @param domain The network {@link NetworkRegistrationInfo.Domain domain}
+ * @return List of {@link NetworkRegistrationInfo}
* @hide
*/
@NonNull
@SystemApi
- public List<NetworkRegistrationState> getNetworkRegistrationStatesForDomain(
+ public List<NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(
@Domain int domain) {
- List<NetworkRegistrationState> list = new ArrayList<>();
+ List<NetworkRegistrationInfo> list = new ArrayList<>();
- synchronized (mNetworkRegistrationStates) {
- for (NetworkRegistrationState networkRegistrationState : mNetworkRegistrationStates) {
- if (networkRegistrationState.getDomain() == domain) {
- list.add(networkRegistrationState);
+ synchronized (mNetworkRegistrationInfos) {
+ for (NetworkRegistrationInfo networkRegistrationInfo : mNetworkRegistrationInfos) {
+ if (networkRegistrationInfo.getDomain() == domain) {
+ list.add(networkRegistrationInfo);
}
}
}
@@ -1842,39 +1826,21 @@
/**
* Get the network registration state for the transport type and network domain.
*
- * @param domain The network {@link NetworkRegistrationState.Domain domain}
+ * @param domain The network {@link NetworkRegistrationInfo.Domain domain}
* @param transportType The transport type
- * @return The matching {@link NetworkRegistrationState}
- * @hide
- *
- * @deprecated Use {@link #getNetworkRegistrationState(int, int)}
- */
- @Nullable
- @Deprecated
- @SystemApi
- public NetworkRegistrationState getNetworkRegistrationStates(@Domain int domain,
- @TransportType int transportType) {
- return getNetworkRegistrationState(domain, transportType);
- }
-
- /**
- * Get the network registration state for the transport type and network domain.
- *
- * @param domain The network {@link NetworkRegistrationState.Domain domain}
- * @param transportType The transport type
- * @return The matching {@link NetworkRegistrationState}
+ * @return The matching {@link NetworkRegistrationInfo}
* @hide
*
*/
@Nullable
@SystemApi
- public NetworkRegistrationState getNetworkRegistrationState(@Domain int domain,
- @TransportType int transportType) {
- synchronized (mNetworkRegistrationStates) {
- for (NetworkRegistrationState networkRegistrationState : mNetworkRegistrationStates) {
- if (networkRegistrationState.getTransportType() == transportType
- && networkRegistrationState.getDomain() == domain) {
- return networkRegistrationState;
+ public NetworkRegistrationInfo getNetworkRegistrationInfo(@Domain int domain,
+ @TransportType int transportType) {
+ synchronized (mNetworkRegistrationInfos) {
+ for (NetworkRegistrationInfo networkRegistrationInfo : mNetworkRegistrationInfos) {
+ if (networkRegistrationInfo.getTransportType() == transportType
+ && networkRegistrationInfo.getDomain() == domain) {
+ return networkRegistrationInfo;
}
}
}
@@ -1885,20 +1851,20 @@
/**
* @hide
*/
- public void addNetworkRegistrationState(NetworkRegistrationState regState) {
+ public void addNetworkRegistrationInfo(NetworkRegistrationInfo regState) {
if (regState == null) return;
- synchronized (mNetworkRegistrationStates) {
- for (int i = 0; i < mNetworkRegistrationStates.size(); i++) {
- NetworkRegistrationState curRegState = mNetworkRegistrationStates.get(i);
+ synchronized (mNetworkRegistrationInfos) {
+ for (int i = 0; i < mNetworkRegistrationInfos.size(); i++) {
+ NetworkRegistrationInfo curRegState = mNetworkRegistrationInfos.get(i);
if (curRegState.getTransportType() == regState.getTransportType()
&& curRegState.getDomain() == regState.getDomain()) {
- mNetworkRegistrationStates.remove(i);
+ mNetworkRegistrationInfos.remove(i);
break;
}
}
- mNetworkRegistrationStates.add(regState);
+ mNetworkRegistrationInfos.add(regState);
}
}
@@ -1913,15 +1879,15 @@
/**
* Returns a copy of self with location-identifying information removed.
- * Always clears the NetworkRegistrationState's CellIdentity fields, but if removeCoarseLocation
+ * Always clears the NetworkRegistrationInfo's CellIdentity fields, but if removeCoarseLocation
* is true, clears other info as well.
* @hide
*/
public ServiceState sanitizeLocationInfo(boolean removeCoarseLocation) {
ServiceState state = new ServiceState(this);
- if (state.mNetworkRegistrationStates != null) {
- state.mNetworkRegistrationStates = state.mNetworkRegistrationStates.stream()
- .map(NetworkRegistrationState::sanitizeLocationInfo)
+ if (state.mNetworkRegistrationInfos != null) {
+ state.mNetworkRegistrationInfos = state.mNetworkRegistrationInfos.stream()
+ .map(NetworkRegistrationInfo::sanitizeLocationInfo)
.collect(Collectors.toList());
}
if (!removeCoarseLocation) return state;