Merge "Remove Handler for Syncing Config Changes"
diff --git a/config/preloaded-classes b/config/preloaded-classes
index b4fd031..03e3b82 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -2696,6 +2696,7 @@
android.os.-$$Lambda$Trace$2zLZ-Lc2kAXsVjw_nLYeNhqmGq0
android.os.-$$Lambda$q1UvBdLgHRZVzc68BxdksTmbuCw
android.os.AsyncResult
+android.os.AsyncTask
android.os.AsyncTask$1
android.os.AsyncTask$2
android.os.AsyncTask$3
diff --git a/config/preloaded-classes-blacklist b/config/preloaded-classes-blacklist
index b5f9950..f05edee 100644
--- a/config/preloaded-classes-blacklist
+++ b/config/preloaded-classes-blacklist
@@ -1,6 +1,5 @@
android.content.AsyncTaskLoader$LoadTask
android.net.ConnectivityThread$Singleton
-android.os.AsyncTask
android.os.FileObserver
android.speech.tts.TextToSpeech$Connection$SetupConnectionAsyncTask
android.widget.Magnifier
diff --git a/core/java/com/android/internal/infra/ServiceConnector.java b/core/java/com/android/internal/infra/ServiceConnector.java
index 8136cfc..d6862f0 100644
--- a/core/java/com/android/internal/infra/ServiceConnector.java
+++ b/core/java/com/android/internal/infra/ServiceConnector.java
@@ -228,7 +228,7 @@
private final int mUserId;
private final @Nullable Function<IBinder, I> mBinderAsInterface;
- private I mService = null;
+ private volatile I mService = null;
private boolean mBinding = false;
private boolean mUnbinding = false;
@@ -506,11 +506,12 @@
void unbindJobThread() {
cancelTimeout();
- boolean wasBound = isBound();
+ I service = mService;
+ boolean wasBound = service != null;
if (wasBound) {
- onServiceConnectionStatusChanged(mService, false);
+ onServiceConnectionStatusChanged(service, false);
mContext.unbindService(mServiceConnection);
- mService.asBinder().unlinkToDeath(this, 0);
+ service.asBinder().unlinkToDeath(this, 0);
mService = null;
}
mBinding = false;
@@ -543,7 +544,7 @@
}
@Override
- public void onServiceConnected(@NonNull ComponentName name, @NonNull IBinder service) {
+ public void onServiceConnected(@NonNull ComponentName name, @NonNull IBinder binder) {
if (mUnbinding) {
Log.i(LOG_TAG, "Ignoring onServiceConnected due to ongoing unbinding: " + this);
return;
@@ -551,14 +552,15 @@
if (DEBUG) {
logTrace();
}
- mService = binderAsInterface(service);
+ I service = binderAsInterface(binder);
+ mService = service;
mBinding = false;
try {
- service.linkToDeath(ServiceConnector.Impl.this, 0);
+ binder.linkToDeath(ServiceConnector.Impl.this, 0);
} catch (RemoteException e) {
Log.e(LOG_TAG, "onServiceConnected " + name + ": ", e);
}
- onServiceConnectionStatusChanged(mService, true);
+ onServiceConnectionStatusChanged(service, true);
processQueue();
}
@@ -568,8 +570,11 @@
logTrace();
}
mBinding = true;
- onServiceConnectionStatusChanged(mService, false);
- mService = null;
+ I service = mService;
+ if (service != null) {
+ onServiceConnectionStatusChanged(service, false);
+ mService = null;
+ }
}
@Override
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 7fc2066..21c2c6b 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -46,6 +46,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
+ android:paddingStart="@dimen/keyguard_indication_text_padding"
+ android:paddingEnd="@dimen/keyguard_indication_text_padding"
android:textAppearance="@style/TextAppearance.Keyguard.BottomArea"
android:visibility="gone" />
@@ -54,6 +56,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
+ android:paddingStart="@dimen/keyguard_indication_text_padding"
+ android:paddingEnd="@dimen/keyguard_indication_text_padding"
android:textAppearance="@style/TextAppearance.Keyguard.BottomArea"
android:accessibilityLiveRegion="polite" />
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index f4970d0..62089e9 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -183,6 +183,9 @@
<!-- The padding on the bottom of the notifications on the keyguard -->
<dimen name="keyguard_indication_bottom_padding">12sp</dimen>
+ <!-- The padding at start and end of indication text shown on AOD -->
+ <dimen name="keyguard_indication_text_padding">16dp</dimen>
+
<!-- Shadows under the clock, date and other keyguard text fields -->
<dimen name="keyguard_shadow_radius">5</dimen>
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 8df25b5..d5a7c81 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -194,6 +194,11 @@
}
}
+ boolean isAbleToServeUser(int userId) {
+ return getServiceUsers().get(UserHandle.USER_SYSTEM) != null
+ && getServiceUsers().get(userId) != null;
+ }
+
/**
* Returns a lst of users currently unlocked that have a
* {@link UserBackupManagerService} registered.
diff --git a/services/backup/java/com/android/server/backup/Trampoline.java b/services/backup/java/com/android/server/backup/Trampoline.java
index 53bbac4..f4b6645 100644
--- a/services/backup/java/com/android/server/backup/Trampoline.java
+++ b/services/backup/java/com/android/server/backup/Trampoline.java
@@ -202,11 +202,10 @@
}
}
- // A user is ready for a backup if it's unlocked and is not suppressed by a device
- // admin (device owner or profile owner).
+ // This method should not perform any I/O (e.g. do not call isBackupActivatedForUser),
+ // it's used in multiple places where I/O waits would cause system lock-ups.
private boolean isUserReadyForBackup(int userId) {
- return mService != null && mService.getServiceUsers().get(userId) != null
- && isBackupActivatedForUser(userId);
+ return mService != null && mService.isAbleToServeUser(userId);
}
/**
diff --git a/services/core/java/com/android/server/pm/TEST_MAPPING b/services/core/java/com/android/server/pm/TEST_MAPPING
index e375fa4..b829f0b 100644
--- a/services/core/java/com/android/server/pm/TEST_MAPPING
+++ b/services/core/java/com/android/server/pm/TEST_MAPPING
@@ -8,7 +8,9 @@
},
{
"name": "CtsCompilationTestCases"
- },
+ }
+ ],
+ "postsubmit": [
{
"name": "CtsPermissionTestCases",
"options": [
diff --git a/services/core/java/com/android/server/pm/permission/TEST_MAPPING b/services/core/java/com/android/server/pm/permission/TEST_MAPPING
index ee7a098..af94e44 100644
--- a/services/core/java/com/android/server/pm/permission/TEST_MAPPING
+++ b/services/core/java/com/android/server/pm/permission/TEST_MAPPING
@@ -14,9 +14,6 @@
},
{
"include-filter": "android.permission.cts.SharedUidPermissionsTest"
- },
- {
- "include-filter": "android.permission.cts.PermissionUpdateListenerTest"
}
]
},
@@ -56,6 +53,14 @@
"include-filter": "android.appsecurity.cts.AppSecurityTests#testPermissionDiffCert"
}
]
+ },
+ {
+ "name": "CtsPermissionTestCases",
+ "options": [
+ {
+ "include-filter": "android.permission.cts.PermissionUpdateListenerTest"
+ }
+ ]
}
]
}
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
index cd659e2..d37c4a2 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
@@ -190,7 +190,7 @@
* has changed. One extra {@link #EXTRA_WIFI_P2P_INFO} provides the p2p connection info in
* the form of a {@link WifiP2pInfo} object. Another extra {@link #EXTRA_NETWORK_INFO} provides
* the network info in the form of a {@link android.net.NetworkInfo}. A third extra provides
- * the details of the group.
+ * the details of the group and may contain a {@code null}.
*
* All of these permissions are required to receive this broadcast:
* {@link android.Manifest.permission#ACCESS_FINE_LOCATION} and