diff options
13 files changed, 110 insertions, 18 deletions
diff --git a/AconfigFlags.bp b/AconfigFlags.bp index f2cae097f518..f0e0c30fd031 100644 --- a/AconfigFlags.bp +++ b/AconfigFlags.bp @@ -22,6 +22,7 @@ aconfig_srcjars = [ ":com.android.window.flags.window-aconfig-java{.generated_srcjars}", ":com.android.hardware.input-aconfig-java{.generated_srcjars}", ":com.android.text.flags-aconfig-java{.generated_srcjars}", + ":com.android.net.flags-aconfig-java{.generated_srcjars}", ] filegroup { @@ -178,3 +179,10 @@ java_aconfig_library { aconfig_declarations: "android.hardware.biometrics.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } + +// CoreNetworking +java_aconfig_library { + name: "com.android.net.flags-aconfig-java", + aconfig_declarations: "com.android.net.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index b5efb73225d6..0414f792f159 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -50,7 +50,6 @@ import android.os.Trace; import android.os.UserHandle; import android.provider.Settings; import android.security.net.config.NetworkSecurityConfigProvider; -import android.sysprop.VndkProperties; import android.text.TextUtils; import android.util.AndroidRuntimeException; import android.util.ArrayMap; @@ -901,14 +900,10 @@ public final class LoadedApk { } // Similar to vendor apks, we should add /product/lib for apks from product partition - // when product apps are marked as unbundled. We cannot use the same way from vendor - // to check if lib path exists because there is possibility that /product/lib would not - // exist from legacy device while product apks are bundled. To make this clear, we use - // "ro.product.vndk.version" property. If the property is defined, we regard all product - // apks as unbundled. + // when product apps are marked as unbundled. Product is separated as long as the + // partition exists, so it can be handled with same approach from the vendor partition. if (mApplicationInfo.getCodePath() != null - && mApplicationInfo.isProduct() - && VndkProperties.product_vndk_version().isPresent()) { + && mApplicationInfo.isProduct()) { isBundledApp = false; } diff --git a/core/java/com/android/internal/foldables/OWNERS b/core/java/com/android/internal/foldables/OWNERS new file mode 100644 index 000000000000..6ce1ee4d3de2 --- /dev/null +++ b/core/java/com/android/internal/foldables/OWNERS @@ -0,0 +1 @@ +include /services/core/java/com/android/server/display/OWNERS diff --git a/media/tests/MediaFrameworkTest/AndroidManifest.xml b/media/tests/MediaFrameworkTest/AndroidManifest.xml index e88655894156..7d79a6c266e4 100644 --- a/media/tests/MediaFrameworkTest/AndroidManifest.xml +++ b/media/tests/MediaFrameworkTest/AndroidManifest.xml @@ -20,6 +20,7 @@ <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.INTERNET"/> + <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> diff --git a/media/tests/MediaFrameworkTest/AndroidTest.xml b/media/tests/MediaFrameworkTest/AndroidTest.xml index 132028ce98dc..91c92cc13d1b 100644 --- a/media/tests/MediaFrameworkTest/AndroidTest.xml +++ b/media/tests/MediaFrameworkTest/AndroidTest.xml @@ -23,5 +23,6 @@ <option name="package" value="com.android.mediaframeworktest" /> <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> <option name="hidden-api-checks" value="false"/> + <option name="isolated-storage" value="false"/> </test> </configuration> diff --git a/services/core/java/com/android/server/wm/OWNERS b/services/core/java/com/android/server/wm/OWNERS index 26abe51c8c34..f6c364008c62 100644 --- a/services/core/java/com/android/server/wm/OWNERS +++ b/services/core/java/com/android/server/wm/OWNERS @@ -18,4 +18,4 @@ rgl@google.com yunfanc@google.com per-file BackgroundActivityStartController.java = set noparent -per-file BackgroundActivityStartController.java = brufino@google.com, ogunwale@google.com, louischang@google.com, lus@google.com +per-file BackgroundActivityStartController.java = brufino@google.com, topjohnwu@google.com, achim@google.com, ogunwale@google.com, louischang@google.com, lus@google.com diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 10687001f9a8..d4a88c7dd6d7 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5206,7 +5206,11 @@ public class WindowManagerService extends IWindowManager.Stub public void displayReady() { synchronized (mGlobalLock) { if (mMaxUiWidth > 0) { - mRoot.forAllDisplays(displayContent -> displayContent.setMaxUiWidth(mMaxUiWidth)); + mRoot.forAllDisplays(dc -> { + if (dc.mDisplay.getType() == Display.TYPE_INTERNAL) { + dc.setMaxUiWidth(mMaxUiWidth); + } + }); } applyForcedPropertiesForDefaultDisplay(); mAnimator.ready(); diff --git a/services/core/jni/OWNERS b/services/core/jni/OWNERS index d9acf4182736..bc294902f0fc 100644 --- a/services/core/jni/OWNERS +++ b/services/core/jni/OWNERS @@ -20,6 +20,7 @@ per-file com_android_server_lights_* = file:/services/core/java/com/android/serv per-file com_android_server_location_* = file:/location/java/android/location/OWNERS per-file com_android_server_locksettings_* = file:/services/core/java/com/android/server/locksettings/OWNERS per-file com_android_server_net_* = file:/services/core/java/com/android/server/net/OWNERS +per-file com_android_server_pdb_* = file:/services/core/java/com/android/server/pdb/OWNERS per-file com_android_server_pm_* = file:/services/core/java/com/android/server/pm/OWNERS per-file com_android_server_power_* = file:/services/core/java/com/android/server/power/OWNERS per-file com_android_server_powerstats_* = file:/services/core/java/com/android/server/powerstats/OWNERS diff --git a/services/tests/servicestests/src/com/android/server/pdb/OWNERS b/services/tests/servicestests/src/com/android/server/pdb/OWNERS new file mode 100644 index 000000000000..6dfb888dedad --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/pdb/OWNERS @@ -0,0 +1 @@ +include /services/core/java/com/android/server/pdb/OWNERS diff --git a/tools/lint/global/integration_tests/Android.bp b/tools/lint/global/integration_tests/Android.bp index ca96559ac016..40281d263a4c 100644 --- a/tools/lint/global/integration_tests/Android.bp +++ b/tools/lint/global/integration_tests/Android.bp @@ -12,25 +12,58 @@ // See the License for the specific language governing permissions and // limitations under the License. -java_library { - name: "AndroidGlobalLintTestNoAidl", - srcs: ["TestNoAidl/**/*.java"], +// Integration tests for @EnforcePermission linters. +// Each test defines its own java_library. The XML lint report from this +// java_library is wrapped under a Python library with a unique pkg_path (this +// is to avoid a name conflict for the report file). All the tests are +// referenced and executed by AndroidGlobalLintCheckerIntegrationTest. + +java_defaults { + name: "AndroidGlobalLintIntegrationTestDefault", libs: [ "framework-annotations-lib", ], lint: { - // It is expected that lint returns an error when processing this + // It is expected that lint returns an error when processing the // library. Silence it here, the lint output is verified in tests.py. suppress_exit_code: true, }, } +java_library { + name: "AndroidGlobalLintTestNoAidl", + srcs: ["TestNoAidl/**/*.java"], + defaults: ["AndroidGlobalLintIntegrationTestDefault"], +} + +python_library_host { + name: "AndroidGlobalLintTestNoAidl_py", + data: [":AndroidGlobalLintTestNoAidl{.lint}"], + pkg_path: "no_aidl", +} + +java_library { + name: "AndroidGlobalLintTestMissingAnnotation", + srcs: [ + "TestMissingAnnotation/**/*.java", + "TestMissingAnnotation/**/*.aidl", + ], + defaults: ["AndroidGlobalLintIntegrationTestDefault"], +} + +python_library_host { + name: "AndroidGlobalLintTestMissingAnnotation_py", + data: [":AndroidGlobalLintTestMissingAnnotation{.lint}"], + pkg_path: "missing_annotation", +} + python_test_host { name: "AndroidGlobalLintCheckerIntegrationTest", srcs: ["tests.py"], main: "tests.py", - data: [ - ":AndroidGlobalLintTestNoAidl{.lint}", + libs: [ + "AndroidGlobalLintTestNoAidl_py", + "AndroidGlobalLintTestMissingAnnotation_py", ], version: { py3: { diff --git a/tools/lint/global/integration_tests/TestMissingAnnotation/TestMissingAnnotation.java b/tools/lint/global/integration_tests/TestMissingAnnotation/TestMissingAnnotation.java new file mode 100644 index 000000000000..9e4854c61f96 --- /dev/null +++ b/tools/lint/global/integration_tests/TestMissingAnnotation/TestMissingAnnotation.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2023 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 com.google.android.lint.integration_tests; + +/** + * A class that implements an AIDL interface, but is missing the @EnforcePermission annotation. + */ +class TestMissingAnnotation extends IFoo.Stub { + + @Override + public void Method() { + } + +} diff --git a/tools/lint/global/integration_tests/TestMissingAnnotation/com/google/android/lint/integration_tests/IFoo.aidl b/tools/lint/global/integration_tests/TestMissingAnnotation/com/google/android/lint/integration_tests/IFoo.aidl new file mode 100644 index 000000000000..95ec2c230599 --- /dev/null +++ b/tools/lint/global/integration_tests/TestMissingAnnotation/com/google/android/lint/integration_tests/IFoo.aidl @@ -0,0 +1,7 @@ +package com.google.android.lint.integration_tests; + +interface IFoo { + + @EnforcePermission("INTERNET") + void Method(); +} diff --git a/tools/lint/global/integration_tests/tests.py b/tools/lint/global/integration_tests/tests.py index fc3eeb4f8ed9..cdb16b8ba25f 100644 --- a/tools/lint/global/integration_tests/tests.py +++ b/tools/lint/global/integration_tests/tests.py @@ -19,16 +19,28 @@ import xml.etree.ElementTree class TestLinterReports(unittest.TestCase): """Integration tests for the linters used by @EnforcePermission.""" - def test_no_aidl(self): - report = pkgutil.get_data("lint", "lint-report.xml").decode() + def _read_report(self, pkg_path): + report = pkgutil.get_data(pkg_path, "lint/lint-report.xml").decode() issues = xml.etree.ElementTree.fromstring(report) self.assertEqual(issues.tag, "issues") + return issues + + def test_no_aidl(self): + issues = self._read_report("no_aidl") self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue.attrib["id"], "MisusingEnforcePermissionAnnotation") self.assertEqual(issue.attrib["severity"], "Error") + def test_missing_annotation(self): + issues = self._read_report("missing_annotation") + self.assertEqual(len(issues), 1) + + issue = issues[0] + self.assertEqual(issue.attrib["id"], "MissingEnforcePermissionAnnotation") + self.assertEqual(issue.attrib["severity"], "Error") + if __name__ == '__main__': unittest.main(verbosity=2) |