Loading services/core/java/com/android/server/pm/PackageManagerService.java +24 −1 Original line number Diff line number Diff line Loading @@ -11554,8 +11554,31 @@ public class PackageManagerService extends IPackageManager.Stub if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return; } final List<String> names = new ArrayList<>(); final List<ProviderInfo> infos = new ArrayList<>(); final int callingUserId = UserHandle.getCallingUserId(); mComponentResolver.querySyncProviders( outNames, outInfo, mSafeMode, UserHandle.getCallingUserId()); names, infos, mSafeMode, callingUserId); synchronized (mLock) { for (int i = infos.size() - 1; i >= 0; i--) { final ProviderInfo providerInfo = infos.get(i); final PackageSetting ps = mSettings.getPackageLPr(providerInfo.packageName); final ComponentName component = new ComponentName(providerInfo.packageName, providerInfo.name); if (!shouldFilterApplicationLocked(ps, Binder.getCallingUid(), component, TYPE_PROVIDER, callingUserId)) { continue; } infos.remove(i); names.remove(i); } } if (!names.isEmpty()) { outNames.addAll(names); } if (!infos.isEmpty()) { outInfo.addAll(infos); } } @Override services/core/java/com/android/server/pm/TEST_MAPPING +3 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,9 @@ { "name": "CtsAppEnumerationTestCases" }, { "name": "AppEnumerationInternalTests" }, { "name": "CtsMatchFlagTestCases" }, Loading services/tests/PackageManagerServiceTests/appenumeration/Android.bp 0 → 100644 +36 −0 Original line number Diff line number Diff line // Copyright (C) 2021 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_base_license"], } android_test { name: "AppEnumerationInternalTests", srcs: [ "src/**/*.java", ], static_libs: [ "compatibility-device-util-axt", "androidx.test.runner", "truth-prebuilt", ], platform_apis: true, test_suites: ["device-tests"], } services/tests/PackageManagerServiceTests/appenumeration/AndroidManifest.xml 0 → 100644 +27 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.server.pm.test.appenumeration"> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="com.android.server.pm.test.appenumeration" android:label="Package Manager Service Tests for app enumeration"> </instrumentation> </manifest> services/tests/PackageManagerServiceTests/appenumeration/AndroidTest.xml 0 → 100644 +43 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <configuration description="Runs Package Manager Service App Enumeration Tests."> <option name="test-suite-tag" value="apct" /> <option name="test-suite-tag" value="apct-instrumentation" /> <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> <option name="cleanup-apks" value="true" /> <option name="test-file-name" value="AppEnumerationInternalTests.apk" /> </target_preparer> <!-- Create place to store apks --> <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> <option name="run-command" value="mkdir -p /data/local/tmp/appenumerationtests" /> <option name="teardown-command" value="rm -rf /data/local/tmp/appenumerationtests"/> </target_preparer> <!-- Load additional APKs onto device --> <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> <option name="push" value="AppEnumerationSyncProviderTestApp.apk->/data/local/tmp/appenumerationtests/AppEnumerationSyncProviderTestApp.apk" /> </target_preparer> <option name="test-tag" value="AppEnumerationInternalTest" /> <test class="com.android.tradefed.testtype.AndroidJUnitTest"> <option name="package" value="com.android.server.pm.test.appenumeration" /> <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> <option name="hidden-api-checks" value="false" /> </test> </configuration> Loading
services/core/java/com/android/server/pm/PackageManagerService.java +24 −1 Original line number Diff line number Diff line Loading @@ -11554,8 +11554,31 @@ public class PackageManagerService extends IPackageManager.Stub if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return; } final List<String> names = new ArrayList<>(); final List<ProviderInfo> infos = new ArrayList<>(); final int callingUserId = UserHandle.getCallingUserId(); mComponentResolver.querySyncProviders( outNames, outInfo, mSafeMode, UserHandle.getCallingUserId()); names, infos, mSafeMode, callingUserId); synchronized (mLock) { for (int i = infos.size() - 1; i >= 0; i--) { final ProviderInfo providerInfo = infos.get(i); final PackageSetting ps = mSettings.getPackageLPr(providerInfo.packageName); final ComponentName component = new ComponentName(providerInfo.packageName, providerInfo.name); if (!shouldFilterApplicationLocked(ps, Binder.getCallingUid(), component, TYPE_PROVIDER, callingUserId)) { continue; } infos.remove(i); names.remove(i); } } if (!names.isEmpty()) { outNames.addAll(names); } if (!infos.isEmpty()) { outInfo.addAll(infos); } } @Override
services/core/java/com/android/server/pm/TEST_MAPPING +3 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,9 @@ { "name": "CtsAppEnumerationTestCases" }, { "name": "AppEnumerationInternalTests" }, { "name": "CtsMatchFlagTestCases" }, Loading
services/tests/PackageManagerServiceTests/appenumeration/Android.bp 0 → 100644 +36 −0 Original line number Diff line number Diff line // Copyright (C) 2021 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_base_license"], } android_test { name: "AppEnumerationInternalTests", srcs: [ "src/**/*.java", ], static_libs: [ "compatibility-device-util-axt", "androidx.test.runner", "truth-prebuilt", ], platform_apis: true, test_suites: ["device-tests"], }
services/tests/PackageManagerServiceTests/appenumeration/AndroidManifest.xml 0 → 100644 +27 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.server.pm.test.appenumeration"> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="com.android.server.pm.test.appenumeration" android:label="Package Manager Service Tests for app enumeration"> </instrumentation> </manifest>
services/tests/PackageManagerServiceTests/appenumeration/AndroidTest.xml 0 → 100644 +43 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License. --> <configuration description="Runs Package Manager Service App Enumeration Tests."> <option name="test-suite-tag" value="apct" /> <option name="test-suite-tag" value="apct-instrumentation" /> <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> <option name="cleanup-apks" value="true" /> <option name="test-file-name" value="AppEnumerationInternalTests.apk" /> </target_preparer> <!-- Create place to store apks --> <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"> <option name="run-command" value="mkdir -p /data/local/tmp/appenumerationtests" /> <option name="teardown-command" value="rm -rf /data/local/tmp/appenumerationtests"/> </target_preparer> <!-- Load additional APKs onto device --> <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher"> <option name="push" value="AppEnumerationSyncProviderTestApp.apk->/data/local/tmp/appenumerationtests/AppEnumerationSyncProviderTestApp.apk" /> </target_preparer> <option name="test-tag" value="AppEnumerationInternalTest" /> <test class="com.android.tradefed.testtype.AndroidJUnitTest"> <option name="package" value="com.android.server.pm.test.appenumeration" /> <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> <option name="hidden-api-checks" value="false" /> </test> </configuration>