Loading core/java/android/app/ActivityThread.java +6 −3 Original line number Original line Diff line number Diff line Loading @@ -790,6 +790,8 @@ public final class ActivityThread extends ClientTransactionHandler { @Nullable @Nullable ContentCaptureOptions contentCaptureOptions; ContentCaptureOptions contentCaptureOptions; long[] disabledCompatChanges; @Override @Override public String toString() { public String toString() { return "AppBindData{appInfo=" + appInfo + "}"; return "AppBindData{appInfo=" + appInfo + "}"; Loading Loading @@ -1002,7 +1004,8 @@ public final class ActivityThread extends ClientTransactionHandler { boolean isRestrictedBackupMode, boolean persistent, Configuration config, boolean isRestrictedBackupMode, boolean persistent, Configuration config, CompatibilityInfo compatInfo, Map services, Bundle coreSettings, CompatibilityInfo compatInfo, Map services, Bundle coreSettings, String buildSerial, AutofillOptions autofillOptions, String buildSerial, AutofillOptions autofillOptions, ContentCaptureOptions contentCaptureOptions) { ContentCaptureOptions contentCaptureOptions, long[] disabledCompatChanges) { if (services != null) { if (services != null) { if (false) { if (false) { // Test code to make sure the app could see the passed-in services. // Test code to make sure the app could see the passed-in services. Loading Loading @@ -1048,8 +1051,7 @@ public final class ActivityThread extends ClientTransactionHandler { data.compatInfo = compatInfo; data.compatInfo = compatInfo; data.initProfilerInfo = profilerInfo; data.initProfilerInfo = profilerInfo; data.buildSerial = buildSerial; data.buildSerial = buildSerial; data.autofillOptions = autofillOptions; data.disabledCompatChanges = disabledCompatChanges; data.contentCaptureOptions = contentCaptureOptions; sendMessage(H.BIND_APPLICATION, data); sendMessage(H.BIND_APPLICATION, data); } } Loading Loading @@ -6134,6 +6136,7 @@ public final class ActivityThread extends ClientTransactionHandler { // Note when this process has started. // Note when this process has started. Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis()); Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis()); AppCompatCallbacks.install(data.disabledCompatChanges); mBoundApplication = data; mBoundApplication = data; mConfiguration = new Configuration(data.config); mConfiguration = new Configuration(data.config); mCompatConfiguration = new Configuration(data.config); mCompatConfiguration = new Configuration(data.config); Loading core/java/android/app/AppCompatCallbacks.java 0 → 100644 +64 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2019 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 android.app; import android.compat.Compatibility; import android.os.Process; import android.util.Log; import java.util.Arrays; /** * App process implementation of the {@link Compatibility} API. * * @hide */ public final class AppCompatCallbacks extends Compatibility.Callbacks { private static final String TAG = "Compatibility"; private final long[] mDisabledChanges; /** * Install this class into the current process. * * @param disabledChanges Set of compatibility changes that are disabled for this process. */ public static void install(long[] disabledChanges) { Compatibility.setCallbacks(new AppCompatCallbacks(disabledChanges)); } private AppCompatCallbacks(long[] disabledChanges) { mDisabledChanges = Arrays.copyOf(disabledChanges, disabledChanges.length); Arrays.sort(mDisabledChanges); } protected void reportChange(long changeId) { Log.d(TAG, "Compat change reported: " + changeId + "; UID " + Process.myUid()); // TODO log via StatsLog } protected boolean isChangeEnabled(long changeId) { if (Arrays.binarySearch(mDisabledChanges, changeId) < 0) { // Not present in the disabled array reportChange(changeId); return true; } return false; } } core/java/android/app/IApplicationThread.aidl +1 −1 Original line number Original line Diff line number Diff line Loading @@ -73,7 +73,7 @@ oneway interface IApplicationThread { boolean restrictedBackupMode, boolean persistent, in Configuration config, boolean restrictedBackupMode, boolean persistent, in Configuration config, in CompatibilityInfo compatInfo, in Map services, in CompatibilityInfo compatInfo, in Map services, in Bundle coreSettings, in String buildSerial, in AutofillOptions autofillOptions, in Bundle coreSettings, in String buildSerial, in AutofillOptions autofillOptions, in ContentCaptureOptions contentCaptureOptions); in ContentCaptureOptions contentCaptureOptions, in long[] disabledCompatChanges); void runIsolatedEntryPoint(in String entryPoint, in String[] entryPointArgs); void runIsolatedEntryPoint(in String entryPoint, in String[] entryPointArgs); void scheduleExit(); void scheduleExit(); void scheduleServiceArgs(IBinder token, in ParceledListSlice args); void scheduleServiceArgs(IBinder token, in ParceledListSlice args); Loading core/java/android/content/res/CompatibilityInfo.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -32,8 +32,8 @@ import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.WindowManager.LayoutParams; /** /** * CompatibilityInfo class keeps the information about compatibility mode that the application is * CompatibilityInfo class keeps the information about the screen compatibility mode that the * running under. * application is running under. * * * {@hide} * {@hide} */ */ Loading core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -416,7 +416,8 @@ public class TransactionParcelTests { IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1, IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1, boolean b2, boolean b3, Configuration configuration, boolean b2, boolean b3, Configuration configuration, CompatibilityInfo compatibilityInfo, Map map, Bundle bundle1, String s1, CompatibilityInfo compatibilityInfo, Map map, Bundle bundle1, String s1, AutofillOptions ao, ContentCaptureOptions co) throws RemoteException { AutofillOptions ao, ContentCaptureOptions co, long[] disableCompatChanges) throws RemoteException { } } @Override @Override Loading Loading
core/java/android/app/ActivityThread.java +6 −3 Original line number Original line Diff line number Diff line Loading @@ -790,6 +790,8 @@ public final class ActivityThread extends ClientTransactionHandler { @Nullable @Nullable ContentCaptureOptions contentCaptureOptions; ContentCaptureOptions contentCaptureOptions; long[] disabledCompatChanges; @Override @Override public String toString() { public String toString() { return "AppBindData{appInfo=" + appInfo + "}"; return "AppBindData{appInfo=" + appInfo + "}"; Loading Loading @@ -1002,7 +1004,8 @@ public final class ActivityThread extends ClientTransactionHandler { boolean isRestrictedBackupMode, boolean persistent, Configuration config, boolean isRestrictedBackupMode, boolean persistent, Configuration config, CompatibilityInfo compatInfo, Map services, Bundle coreSettings, CompatibilityInfo compatInfo, Map services, Bundle coreSettings, String buildSerial, AutofillOptions autofillOptions, String buildSerial, AutofillOptions autofillOptions, ContentCaptureOptions contentCaptureOptions) { ContentCaptureOptions contentCaptureOptions, long[] disabledCompatChanges) { if (services != null) { if (services != null) { if (false) { if (false) { // Test code to make sure the app could see the passed-in services. // Test code to make sure the app could see the passed-in services. Loading Loading @@ -1048,8 +1051,7 @@ public final class ActivityThread extends ClientTransactionHandler { data.compatInfo = compatInfo; data.compatInfo = compatInfo; data.initProfilerInfo = profilerInfo; data.initProfilerInfo = profilerInfo; data.buildSerial = buildSerial; data.buildSerial = buildSerial; data.autofillOptions = autofillOptions; data.disabledCompatChanges = disabledCompatChanges; data.contentCaptureOptions = contentCaptureOptions; sendMessage(H.BIND_APPLICATION, data); sendMessage(H.BIND_APPLICATION, data); } } Loading Loading @@ -6134,6 +6136,7 @@ public final class ActivityThread extends ClientTransactionHandler { // Note when this process has started. // Note when this process has started. Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis()); Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis()); AppCompatCallbacks.install(data.disabledCompatChanges); mBoundApplication = data; mBoundApplication = data; mConfiguration = new Configuration(data.config); mConfiguration = new Configuration(data.config); mCompatConfiguration = new Configuration(data.config); mCompatConfiguration = new Configuration(data.config); Loading
core/java/android/app/AppCompatCallbacks.java 0 → 100644 +64 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2019 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 android.app; import android.compat.Compatibility; import android.os.Process; import android.util.Log; import java.util.Arrays; /** * App process implementation of the {@link Compatibility} API. * * @hide */ public final class AppCompatCallbacks extends Compatibility.Callbacks { private static final String TAG = "Compatibility"; private final long[] mDisabledChanges; /** * Install this class into the current process. * * @param disabledChanges Set of compatibility changes that are disabled for this process. */ public static void install(long[] disabledChanges) { Compatibility.setCallbacks(new AppCompatCallbacks(disabledChanges)); } private AppCompatCallbacks(long[] disabledChanges) { mDisabledChanges = Arrays.copyOf(disabledChanges, disabledChanges.length); Arrays.sort(mDisabledChanges); } protected void reportChange(long changeId) { Log.d(TAG, "Compat change reported: " + changeId + "; UID " + Process.myUid()); // TODO log via StatsLog } protected boolean isChangeEnabled(long changeId) { if (Arrays.binarySearch(mDisabledChanges, changeId) < 0) { // Not present in the disabled array reportChange(changeId); return true; } return false; } }
core/java/android/app/IApplicationThread.aidl +1 −1 Original line number Original line Diff line number Diff line Loading @@ -73,7 +73,7 @@ oneway interface IApplicationThread { boolean restrictedBackupMode, boolean persistent, in Configuration config, boolean restrictedBackupMode, boolean persistent, in Configuration config, in CompatibilityInfo compatInfo, in Map services, in CompatibilityInfo compatInfo, in Map services, in Bundle coreSettings, in String buildSerial, in AutofillOptions autofillOptions, in Bundle coreSettings, in String buildSerial, in AutofillOptions autofillOptions, in ContentCaptureOptions contentCaptureOptions); in ContentCaptureOptions contentCaptureOptions, in long[] disabledCompatChanges); void runIsolatedEntryPoint(in String entryPoint, in String[] entryPointArgs); void runIsolatedEntryPoint(in String entryPoint, in String[] entryPointArgs); void scheduleExit(); void scheduleExit(); void scheduleServiceArgs(IBinder token, in ParceledListSlice args); void scheduleServiceArgs(IBinder token, in ParceledListSlice args); Loading
core/java/android/content/res/CompatibilityInfo.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -32,8 +32,8 @@ import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.WindowManager.LayoutParams; /** /** * CompatibilityInfo class keeps the information about compatibility mode that the application is * CompatibilityInfo class keeps the information about the screen compatibility mode that the * running under. * application is running under. * * * {@hide} * {@hide} */ */ Loading
core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -416,7 +416,8 @@ public class TransactionParcelTests { IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1, IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1, boolean b2, boolean b3, Configuration configuration, boolean b2, boolean b3, Configuration configuration, CompatibilityInfo compatibilityInfo, Map map, Bundle bundle1, String s1, CompatibilityInfo compatibilityInfo, Map map, Bundle bundle1, String s1, AutofillOptions ao, ContentCaptureOptions co) throws RemoteException { AutofillOptions ao, ContentCaptureOptions co, long[] disableCompatChanges) throws RemoteException { } } @Override @Override Loading