Merge "Revert "Put broadcast timekeeping on its own thread"" into sc-dev

This commit is contained in:
Chris Tate
2021-02-05 00:57:55 +00:00
committed by Android (Google) Code Review
6 changed files with 32 additions and 71 deletions

View File

@@ -35,8 +35,6 @@
android:label="@string/permlab_testDenied"
android:description="@string/permdesc_testDenied" />
<uses-permission android:name="com.android.frameworks.coretests.permission.TEST_GRANTED" />
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" />
@@ -78,6 +76,7 @@
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.TEST_GRANTED" />
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
<uses-permission android:name="com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD" />
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
@@ -1456,7 +1455,6 @@
</intent-filter>
</receiver>
<receiver android:name="android.app.activity.RemoteGrantedReceiver"
android:process=":remoteReceiver"
android:permission="com.android.frameworks.coretests.permission.TEST_GRANTED"
android:exported="true">
<intent-filter android:priority="2">
@@ -1464,7 +1462,6 @@
</intent-filter>
</receiver>
<receiver android:name="android.app.activity.RemoteDeniedReceiver"
android:process=":remoteReceiver"
android:permission="com.android.frameworks.coretests.permission.TEST_DENIED"
android:exported="true">
<intent-filter android:priority="2">

View File

@@ -56,8 +56,6 @@ public class BroadcastTest extends ActivityTestsBase {
"com.android.frameworks.coretests.activity.BROADCAST_MULTI";
public static final String BROADCAST_ABORT =
"com.android.frameworks.coretests.activity.BROADCAST_ABORT";
public static final String BROADCAST_RESULT =
"com.android.frameworks.coretests.activity.BROADCAST_RESULT";
public static final String BROADCAST_STICKY1 =
"com.android.frameworks.coretests.activity.BROADCAST_STICKY1";
@@ -108,14 +106,7 @@ public class BroadcastTest extends ActivityTestsBase {
}
public Intent makeBroadcastIntent(String action) {
return makeBroadcastIntent(action, false);
}
public Intent makeBroadcastIntent(String action, boolean makeImplicit) {
Intent intent = new Intent(action, null);
if (makeImplicit) {
intent.addFlags(intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
}
intent.putExtra("caller", mCallTarget);
return intent;
}
@@ -286,7 +277,7 @@ public class BroadcastTest extends ActivityTestsBase {
map.putString("foo", "you");
map.putString("remove", "me");
getContext().sendOrderedBroadcast(
makeBroadcastIntent(BROADCAST_RESULT, true),
new Intent("com.android.frameworks.coretests.activity.BROADCAST_RESULT"),
null, broadcastReceiver, null, 1, "foo", map);
while (!broadcastReceiver.mHaveResult) {
try {
@@ -433,13 +424,10 @@ public class BroadcastTest extends ActivityTestsBase {
public void testLocalReceivePermissionGranted() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_LOCAL});
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_LOCAL_GRANTED, true));
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_LOCAL_GRANTED));
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
/*
// TODO: multi-package test b/c self-target broadcasts are always allowed
// even when gated on ungranted permissions
public void testLocalReceivePermissionDenied() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_RESULTS});
@@ -450,17 +438,16 @@ public class BroadcastTest extends ActivityTestsBase {
};
getContext().sendOrderedBroadcast(
makeBroadcastIntent(BROADCAST_LOCAL_DENIED, true),
makeBroadcastIntent(BROADCAST_LOCAL_DENIED),
null, finish, null, Activity.RESULT_CANCELED,
null, null);
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
*/
public void testLocalBroadcastPermissionGranted() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_LOCAL});
getContext().sendBroadcast(
makeBroadcastIntent(BROADCAST_LOCAL, true),
makeBroadcastIntent(BROADCAST_LOCAL),
PERMISSION_GRANTED);
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
@@ -475,7 +462,7 @@ public class BroadcastTest extends ActivityTestsBase {
};
getContext().sendOrderedBroadcast(
makeBroadcastIntent(BROADCAST_LOCAL, true),
makeBroadcastIntent(BROADCAST_LOCAL),
PERMISSION_DENIED, finish, null, Activity.RESULT_CANCELED,
null, null);
waitForResultOrThrow(BROADCAST_TIMEOUT);
@@ -483,13 +470,10 @@ public class BroadcastTest extends ActivityTestsBase {
public void testRemoteReceivePermissionGranted() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_REMOTE});
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_REMOTE_GRANTED, true));
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_REMOTE_GRANTED));
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
/*
// TODO: multi-package test b/c self-target broadcasts are always allowed
// even when gated on ungranted permissions
public void testRemoteReceivePermissionDenied() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_RESULTS});
@@ -500,17 +484,16 @@ public class BroadcastTest extends ActivityTestsBase {
};
getContext().sendOrderedBroadcast(
makeBroadcastIntent(BROADCAST_REMOTE_DENIED, true),
makeBroadcastIntent(BROADCAST_REMOTE_DENIED),
null, finish, null, Activity.RESULT_CANCELED,
null, null);
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
*/
public void testRemoteBroadcastPermissionGranted() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_REMOTE});
getContext().sendBroadcast(
makeBroadcastIntent(BROADCAST_REMOTE, true),
makeBroadcastIntent(BROADCAST_REMOTE),
PERMISSION_GRANTED);
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
@@ -525,7 +508,7 @@ public class BroadcastTest extends ActivityTestsBase {
};
getContext().sendOrderedBroadcast(
makeBroadcastIntent(BROADCAST_REMOTE, true),
makeBroadcastIntent(BROADCAST_REMOTE),
PERMISSION_DENIED, finish, null, Activity.RESULT_CANCELED,
null, null);
waitForResultOrThrow(BROADCAST_TIMEOUT);
@@ -533,13 +516,13 @@ public class BroadcastTest extends ActivityTestsBase {
public void testReceiverCanNotRegister() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_LOCAL});
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_FAIL_REGISTER, true));
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_FAIL_REGISTER));
waitForResultOrThrow(BROADCAST_TIMEOUT);
}
public void testReceiverCanNotBind() throws Exception {
setExpectedReceivers(new String[]{RECEIVER_LOCAL});
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_FAIL_BIND, true));
getContext().sendBroadcast(makeBroadcastIntent(BROADCAST_FAIL_BIND));
waitForResultOrThrow(BROADCAST_TIMEOUT);
}

View File

@@ -253,16 +253,16 @@ public class LaunchpadActivity extends Activity {
sendBroadcast(makeBroadcastIntent(BROADCAST_REGISTERED));
} else if (BROADCAST_LOCAL.equals(action)) {
setExpectedReceivers(new String[]{RECEIVER_LOCAL});
sendBroadcast(makeBroadcastIntent(BROADCAST_LOCAL, true));
sendBroadcast(makeBroadcastIntent(BROADCAST_LOCAL));
} else if (BROADCAST_REMOTE.equals(action)) {
setExpectedReceivers(new String[]{RECEIVER_REMOTE});
sendBroadcast(makeBroadcastIntent(BROADCAST_REMOTE, true));
sendBroadcast(makeBroadcastIntent(BROADCAST_REMOTE));
} else if (BROADCAST_ALL.equals(action)) {
setExpectedReceivers(new String[]{
RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL});
registerMyReceiver(new IntentFilter(BROADCAST_ALL));
sCallingTest.addIntermediate("after-register");
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL, true), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
} else if (BROADCAST_MULTI.equals(action)) {
setExpectedReceivers(new String[]{
RECEIVER_REMOTE, RECEIVER_REG, RECEIVER_LOCAL,
@@ -277,26 +277,23 @@ public class LaunchpadActivity extends Activity {
RECEIVER_REMOTE, RECEIVER_LOCAL});
registerMyReceiver(new IntentFilter(BROADCAST_ALL));
sCallingTest.addIntermediate("after-register");
final Intent allIntent = makeBroadcastIntent(BROADCAST_ALL, true);
final Intent localIntent = makeBroadcastIntent(BROADCAST_LOCAL, true);
final Intent remoteIntent = makeBroadcastIntent(BROADCAST_REMOTE, true);
sendOrderedBroadcast(allIntent, null);
sendOrderedBroadcast(allIntent, null);
sendOrderedBroadcast(allIntent, null);
sendOrderedBroadcast(localIntent, null);
sendOrderedBroadcast(remoteIntent, null);
sendOrderedBroadcast(localIntent, null);
sendOrderedBroadcast(remoteIntent, null);
sendOrderedBroadcast(allIntent, null);
sendOrderedBroadcast(allIntent, null);
sendOrderedBroadcast(allIntent, null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REPEAT, true), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_LOCAL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REMOTE), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_LOCAL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REMOTE), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ALL), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_REPEAT), null);
} else if (BROADCAST_ABORT.equals(action)) {
setExpectedReceivers(new String[]{
RECEIVER_REMOTE, RECEIVER_ABORT});
registerMyReceiver(new IntentFilter(BROADCAST_ABORT));
sCallingTest.addIntermediate("after-register");
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ABORT, true), null);
sendOrderedBroadcast(makeBroadcastIntent(BROADCAST_ABORT), null);
} else if (BROADCAST_STICKY1.equals(action)) {
setExpectedReceivers(new String[]{RECEIVER_REG});
setExpectedData(new String[]{DATA_1});
@@ -439,14 +436,7 @@ public class LaunchpadActivity extends Activity {
}
private Intent makeBroadcastIntent(String action) {
return makeBroadcastIntent(action, false);
}
private Intent makeBroadcastIntent(String action, boolean makeImplicit) {
Intent intent = new Intent(action, null);
if (makeImplicit) {
intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
}
intent.putExtra("caller", mCallTarget);
return intent;
}

View File

@@ -23,7 +23,7 @@ import android.os.RemoteException;
import android.os.IBinder;
import android.os.Parcel;
public class LocalDeniedReceiver extends BroadcastReceiver {
class LocalDeniedReceiver extends BroadcastReceiver {
public LocalDeniedReceiver() {
}

View File

@@ -23,7 +23,7 @@ import android.os.RemoteException;
import android.os.IBinder;
import android.os.Parcel;
public class RemoteDeniedReceiver extends BroadcastReceiver {
class RemoteDeniedReceiver extends BroadcastReceiver {
public RemoteDeniedReceiver() {
}

View File

@@ -236,7 +236,6 @@ import android.os.DropBoxManager;
import android.os.FactoryTest;
import android.os.FileUtils;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.IDeviceIdentifiersPolicyService;
import android.os.IPermissionController;
@@ -2206,19 +2205,11 @@ public class ActivityManagerService extends IActivityManager.Stub
mEnableOffloadQueue = SystemProperties.getBoolean(
"persist.device_config.activity_manager_native_boot.offload_queue_enabled", false);
// Decouple broadcast-related timing operations from other OS activity by
// using a dedicated thread. Sharing this thread between queues is safe
// because we know the nature of the activity on it and can't stall
// unexpectedly.
HandlerThread broadcastThread = new HandlerThread("broadcast");
broadcastThread.start();
Handler broadcastHandler = broadcastThread.getThreadHandler();
mFgBroadcastQueue = new BroadcastQueue(this, broadcastHandler,
mFgBroadcastQueue = new BroadcastQueue(this, mHandler,
"foreground", foreConstants, false);
mBgBroadcastQueue = new BroadcastQueue(this, broadcastHandler,
mBgBroadcastQueue = new BroadcastQueue(this, mHandler,
"background", backConstants, true);
mOffloadBroadcastQueue = new BroadcastQueue(this, broadcastHandler,
mOffloadBroadcastQueue = new BroadcastQueue(this, mHandler,
"offload", offloadConstants, true);
mBroadcastQueues[0] = mFgBroadcastQueue;
mBroadcastQueues[1] = mBgBroadcastQueue;