Loading services/core/java/com/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater.java 0 → 100644 +36 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.android.server.pm.parsing.library; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.ParsedPackage; /** * Updates a package to remove dependency on com.google.android.maps library. * * @hide */ @VisibleForTesting public class ComGoogleAndroidMapsUpdater extends PackageSharedLibraryUpdater { private static final String LIBRARY_NAME = "com.google.android.maps"; @Override public void updatePackage(ParsedPackage parsedPackage, boolean isUpdatedSystemApp) { parsedPackage.removeUsesLibrary(LIBRARY_NAME); parsedPackage.removeUsesOptionalLibrary(LIBRARY_NAME); } } services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java +3 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,9 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater { static { final List<PackageSharedLibraryUpdater> packageUpdaters = new ArrayList<>(); // Remove com.google.android.maps library. packageUpdaters.add(new ComGoogleAndroidMapsUpdater()); // Automatically add the org.apache.http.legacy library to the app classpath if the app // targets < P. packageUpdaters.add(new OrgApacheHttpLegacyUpdater()); Loading services/tests/servicestests/src/com/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdaterTest.java 0 → 100644 +94 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.android.server.pm.parsing.library; import android.os.Build; import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.parsing.pkg.PackageImpl; import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * Test for {@link ComGoogleAndroidMapsUpdater} */ @Presubmit @SmallTest @RunWith(JUnit4.class) public class ComGoogleAndroidMapsUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void otherUsesLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary("other") .addUsesOptionalLibrary("optional") .addUsesLibrary("com.google.android.maps") .hideAsParsed()); AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary("other") .addUsesOptionalLibrary("optional") .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); } @Test public void in_usesLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary("com.google.android.maps") .hideAsParsed()); AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy // and is targeted at the current version so does not need backwards compatibility. checkBackwardsCompatibility(before, after); } @Test public void in_usesOptionalLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary("com.google.android.maps") .hideAsParsed()); AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy // and is targeted at the current version so does not need backwards compatibility. checkBackwardsCompatibility(before, after); } private void checkBackwardsCompatibility(ParsedPackage before, AndroidPackage after) { checkBackwardsCompatibility(before, after, ComGoogleAndroidMapsUpdater::new); } } services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageBackwardCompatibilityTest.java +17 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,23 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate checkBackwardsCompatibility(before, ((ParsedPackage) after.hideAsParsed()).hideAsFinal()); } /** * Ensures that the {@link PackageBackwardCompatibility} uses a * {@link ComGoogleAndroidMapsUpdater}. */ @Test public void com_google_android_maps_in_usesLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary("com.google.android.maps") .hideAsParsed()); ParsingPackage after = PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT); checkBackwardsCompatibility(before, ((ParsedPackage) after.hideAsParsed()).hideAsFinal()); } private void checkBackwardsCompatibility(ParsedPackage before, AndroidPackage after) { checkBackwardsCompatibility(before, after, PackageBackwardCompatibility::getInstance); } Loading Loading
services/core/java/com/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater.java 0 → 100644 +36 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.android.server.pm.parsing.library; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.ParsedPackage; /** * Updates a package to remove dependency on com.google.android.maps library. * * @hide */ @VisibleForTesting public class ComGoogleAndroidMapsUpdater extends PackageSharedLibraryUpdater { private static final String LIBRARY_NAME = "com.google.android.maps"; @Override public void updatePackage(ParsedPackage parsedPackage, boolean isUpdatedSystemApp) { parsedPackage.removeUsesLibrary(LIBRARY_NAME); parsedPackage.removeUsesOptionalLibrary(LIBRARY_NAME); } }
services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java +3 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,9 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater { static { final List<PackageSharedLibraryUpdater> packageUpdaters = new ArrayList<>(); // Remove com.google.android.maps library. packageUpdaters.add(new ComGoogleAndroidMapsUpdater()); // Automatically add the org.apache.http.legacy library to the app classpath if the app // targets < P. packageUpdaters.add(new OrgApacheHttpLegacyUpdater()); Loading
services/tests/servicestests/src/com/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdaterTest.java 0 → 100644 +94 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.android.server.pm.parsing.library; import android.os.Build; import android.platform.test.annotations.Presubmit; import androidx.test.filters.SmallTest; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.parsing.pkg.PackageImpl; import com.android.server.pm.parsing.pkg.ParsedPackage; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * Test for {@link ComGoogleAndroidMapsUpdater} */ @Presubmit @SmallTest @RunWith(JUnit4.class) public class ComGoogleAndroidMapsUpdaterTest extends PackageSharedLibraryUpdaterTest { @Test public void otherUsesLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary("other") .addUsesOptionalLibrary("optional") .addUsesLibrary("com.google.android.maps") .hideAsParsed()); AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.O) .addUsesLibrary("other") .addUsesOptionalLibrary("optional") .hideAsParsed()) .hideAsFinal(); checkBackwardsCompatibility(before, after); } @Test public void in_usesLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary("com.google.android.maps") .hideAsParsed()); AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy // and is targeted at the current version so does not need backwards compatibility. checkBackwardsCompatibility(before, after); } @Test public void in_usesOptionalLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesOptionalLibrary("com.google.android.maps") .hideAsParsed()); AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .hideAsParsed()) .hideAsFinal(); // No change is required because the package explicitly requests org.apache.http.legacy // and is targeted at the current version so does not need backwards compatibility. checkBackwardsCompatibility(before, after); } private void checkBackwardsCompatibility(ParsedPackage before, AndroidPackage after) { checkBackwardsCompatibility(before, after, ComGoogleAndroidMapsUpdater::new); } }
services/tests/servicestests/src/com/android/server/pm/parsing/library/PackageBackwardCompatibilityTest.java +17 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,23 @@ public class PackageBackwardCompatibilityTest extends PackageSharedLibraryUpdate checkBackwardsCompatibility(before, ((ParsedPackage) after.hideAsParsed()).hideAsFinal()); } /** * Ensures that the {@link PackageBackwardCompatibility} uses a * {@link ComGoogleAndroidMapsUpdater}. */ @Test public void com_google_android_maps_in_usesLibraries() { ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) .addUsesLibrary("com.google.android.maps") .hideAsParsed()); ParsingPackage after = PackageImpl.forTesting(PACKAGE_NAME) .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT); checkBackwardsCompatibility(before, ((ParsedPackage) after.hideAsParsed()).hideAsFinal()); } private void checkBackwardsCompatibility(ParsedPackage before, AndroidPackage after) { checkBackwardsCompatibility(before, after, PackageBackwardCompatibility::getInstance); } Loading