Merge "Add DeviceConfig flag for enforcing receiver restrictions" into tm-dev am: c7c60d5ec1 am: c110d9ff71
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18356870 Change-Id: I45dbcef8263f13c17d20ad7aa27fea24e3f788e8 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1530,6 +1530,8 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
// Encapsulates the global setting "hidden_api_blacklist_exemptions"
|
// Encapsulates the global setting "hidden_api_blacklist_exemptions"
|
||||||
final HiddenApiSettings mHiddenApiBlacklist;
|
final HiddenApiSettings mHiddenApiBlacklist;
|
||||||
|
|
||||||
|
final SdkSandboxSettings mSdkSandboxSettings;
|
||||||
|
|
||||||
private final PlatformCompat mPlatformCompat;
|
private final PlatformCompat mPlatformCompat;
|
||||||
|
|
||||||
PackageManagerInternal mPackageManagerInt;
|
PackageManagerInternal mPackageManagerInt;
|
||||||
@@ -2235,6 +2237,53 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles settings related to the enforcement of SDK sandbox restrictions.
|
||||||
|
*/
|
||||||
|
static class SdkSandboxSettings implements DeviceConfig.OnPropertiesChangedListener {
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
private final Object mLock = new Object();
|
||||||
|
|
||||||
|
@GuardedBy("mLock")
|
||||||
|
private boolean mEnforceBroadcastReceiverRestrictions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property to enforce broadcast receiver restrictions for SDK sandbox processes. If the
|
||||||
|
* value of this property is {@code true}, the restrictions will be enforced.
|
||||||
|
*/
|
||||||
|
public static final String ENFORCE_BROADCAST_RECEIVER_RESTRICTIONS =
|
||||||
|
"enforce_broadcast_receiver_restrictions";
|
||||||
|
|
||||||
|
SdkSandboxSettings(Context context) {
|
||||||
|
mContext = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
void registerObserver() {
|
||||||
|
synchronized (mLock) {
|
||||||
|
mEnforceBroadcastReceiverRestrictions = DeviceConfig.getBoolean(
|
||||||
|
DeviceConfig.NAMESPACE_SDK_SANDBOX,
|
||||||
|
ENFORCE_BROADCAST_RECEIVER_RESTRICTIONS, false);
|
||||||
|
DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SDK_SANDBOX,
|
||||||
|
mContext.getMainExecutor(), this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPropertiesChanged(DeviceConfig.Properties properties) {
|
||||||
|
synchronized (mLock) {
|
||||||
|
mEnforceBroadcastReceiverRestrictions = properties.getBoolean(
|
||||||
|
ENFORCE_BROADCAST_RECEIVER_RESTRICTIONS, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isBroadcastReceiverRestrictionsEnforced() {
|
||||||
|
synchronized (mLock) {
|
||||||
|
return mEnforceBroadcastReceiverRestrictions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AppOpsManager getAppOpsManager() {
|
AppOpsManager getAppOpsManager() {
|
||||||
if (mAppOpsManager == null) {
|
if (mAppOpsManager == null) {
|
||||||
mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
|
mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
|
||||||
@@ -2287,6 +2336,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
mProcStartHandlerThread = null;
|
mProcStartHandlerThread = null;
|
||||||
mProcStartHandler = null;
|
mProcStartHandler = null;
|
||||||
mHiddenApiBlacklist = null;
|
mHiddenApiBlacklist = null;
|
||||||
|
mSdkSandboxSettings = null;
|
||||||
mFactoryTest = FACTORY_TEST_OFF;
|
mFactoryTest = FACTORY_TEST_OFF;
|
||||||
mUgmInternal = LocalServices.getService(UriGrantsManagerInternal.class);
|
mUgmInternal = LocalServices.getService(UriGrantsManagerInternal.class);
|
||||||
mInternal = new LocalService();
|
mInternal = new LocalService();
|
||||||
@@ -2406,6 +2456,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
|
mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
|
||||||
|
|
||||||
mHiddenApiBlacklist = new HiddenApiSettings(mHandler, mContext);
|
mHiddenApiBlacklist = new HiddenApiSettings(mHandler, mContext);
|
||||||
|
mSdkSandboxSettings = new SdkSandboxSettings(mContext);
|
||||||
|
|
||||||
Watchdog.getInstance().addMonitor(this);
|
Watchdog.getInstance().addMonitor(this);
|
||||||
Watchdog.getInstance().addThread(mHandler);
|
Watchdog.getInstance().addThread(mHandler);
|
||||||
@@ -7911,6 +7962,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
final boolean alwaysFinishActivities =
|
final boolean alwaysFinishActivities =
|
||||||
Settings.Global.getInt(resolver, ALWAYS_FINISH_ACTIVITIES, 0) != 0;
|
Settings.Global.getInt(resolver, ALWAYS_FINISH_ACTIVITIES, 0) != 0;
|
||||||
mHiddenApiBlacklist.registerObserver();
|
mHiddenApiBlacklist.registerObserver();
|
||||||
|
mSdkSandboxSettings.registerObserver();
|
||||||
mPlatformCompat.registerContentObserver();
|
mPlatformCompat.registerContentObserver();
|
||||||
|
|
||||||
mAppProfiler.retrieveSettings();
|
mAppProfiler.retrieveSettings();
|
||||||
@@ -12940,7 +12992,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
// Allow Sandbox process to register only unexported receivers.
|
// Allow Sandbox process to register only unexported receivers.
|
||||||
if ((flags & Context.RECEIVER_NOT_EXPORTED) != 0) {
|
if ((flags & Context.RECEIVER_NOT_EXPORTED) != 0) {
|
||||||
enforceNotIsolatedCaller("registerReceiver");
|
enforceNotIsolatedCaller("registerReceiver");
|
||||||
} else {
|
} else if (mSdkSandboxSettings.isBroadcastReceiverRestrictionsEnforced()) {
|
||||||
enforceNotIsolatedOrSdkSandboxCaller("registerReceiver");
|
enforceNotIsolatedOrSdkSandboxCaller("registerReceiver");
|
||||||
}
|
}
|
||||||
ArrayList<Intent> stickyIntents = null;
|
ArrayList<Intent> stickyIntents = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user