resolve merge conflicts of 9acd72c60b to stage-aosp-master
Bug: None Test: TH Merged-In: I2fcf25264c62acc801f9e62967072cd04e4641e7 Change-Id: I5bc6b8c20bda03b3760f13f747b1e2069bfd9ac1
This commit is contained in:
@@ -790,6 +790,8 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
@Nullable
|
||||
ContentCaptureOptions contentCaptureOptions;
|
||||
|
||||
long[] disabledCompatChanges;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AppBindData{appInfo=" + appInfo + "}";
|
||||
@@ -1002,7 +1004,8 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
boolean isRestrictedBackupMode, boolean persistent, Configuration config,
|
||||
CompatibilityInfo compatInfo, Map services, Bundle coreSettings,
|
||||
String buildSerial, AutofillOptions autofillOptions,
|
||||
ContentCaptureOptions contentCaptureOptions) {
|
||||
ContentCaptureOptions contentCaptureOptions,
|
||||
long[] disabledCompatChanges) {
|
||||
if (services != null) {
|
||||
if (false) {
|
||||
// Test code to make sure the app could see the passed-in services.
|
||||
@@ -1048,8 +1051,7 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
data.compatInfo = compatInfo;
|
||||
data.initProfilerInfo = profilerInfo;
|
||||
data.buildSerial = buildSerial;
|
||||
data.autofillOptions = autofillOptions;
|
||||
data.contentCaptureOptions = contentCaptureOptions;
|
||||
data.disabledCompatChanges = disabledCompatChanges;
|
||||
sendMessage(H.BIND_APPLICATION, data);
|
||||
}
|
||||
|
||||
@@ -6134,6 +6136,7 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
// Note when this process has started.
|
||||
Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis());
|
||||
|
||||
AppCompatCallbacks.install(data.disabledCompatChanges);
|
||||
mBoundApplication = data;
|
||||
mConfiguration = new Configuration(data.config);
|
||||
mCompatConfiguration = new Configuration(data.config);
|
||||
|
||||
64
core/java/android/app/AppCompatCallbacks.java
Normal file
64
core/java/android/app/AppCompatCallbacks.java
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -73,7 +73,7 @@ oneway interface IApplicationThread {
|
||||
boolean restrictedBackupMode, boolean persistent, in Configuration config,
|
||||
in CompatibilityInfo compatInfo, in Map services,
|
||||
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 scheduleExit();
|
||||
void scheduleServiceArgs(IBinder token, in ParceledListSlice args);
|
||||
|
||||
@@ -32,8 +32,8 @@ import android.view.WindowManager;
|
||||
import android.view.WindowManager.LayoutParams;
|
||||
|
||||
/**
|
||||
* CompatibilityInfo class keeps the information about compatibility mode that the application is
|
||||
* running under.
|
||||
* CompatibilityInfo class keeps the information about the screen compatibility mode that the
|
||||
* application is running under.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
|
||||
@@ -416,7 +416,8 @@ public class TransactionParcelTests {
|
||||
IUiAutomationConnection iUiAutomationConnection, int i, boolean b, boolean b1,
|
||||
boolean b2, boolean b3, Configuration configuration,
|
||||
CompatibilityInfo compatibilityInfo, Map map, Bundle bundle1, String s1,
|
||||
AutofillOptions ao, ContentCaptureOptions co) throws RemoteException {
|
||||
AutofillOptions ao, ContentCaptureOptions co, long[] disableCompatChanges)
|
||||
throws RemoteException {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -348,6 +348,7 @@ import com.android.server.ThreadPriorityBooster;
|
||||
import com.android.server.Watchdog;
|
||||
import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto;
|
||||
import com.android.server.appop.AppOpsService;
|
||||
import com.android.server.compat.CompatConfig;
|
||||
import com.android.server.contentcapture.ContentCaptureManagerInternal;
|
||||
import com.android.server.firewall.IntentFirewall;
|
||||
import com.android.server.job.JobSchedulerInternal;
|
||||
@@ -5038,6 +5039,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
bindApplicationTimeMillis = SystemClock.elapsedRealtime();
|
||||
mAtmInternal.preBindApplication(app.getWindowProcessController());
|
||||
final ActiveInstrumentation instr2 = app.getActiveInstrumentation();
|
||||
long[] disabledCompatChanges = CompatConfig.get().getDisabledChanges(app.info);
|
||||
if (app.isolatedEntryPoint != null) {
|
||||
// This is an isolated process which should just call an entry point instead of
|
||||
// being bound to an application.
|
||||
@@ -5053,7 +5055,8 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
new Configuration(app.getWindowProcessController().getConfiguration()),
|
||||
app.compat, getCommonServicesLocked(app.isolated),
|
||||
mCoreSettingsObserver.getCoreSettingsLocked(),
|
||||
buildSerial, autofillOptions, contentCaptureOptions);
|
||||
buildSerial, autofillOptions, contentCaptureOptions,
|
||||
disabledCompatChanges);
|
||||
} else {
|
||||
thread.bindApplication(processName, appInfo, providers, null, profilerInfo,
|
||||
null, null, null, testMode,
|
||||
@@ -5062,7 +5065,8 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
new Configuration(app.getWindowProcessController().getConfiguration()),
|
||||
app.compat, getCommonServicesLocked(app.isolated),
|
||||
mCoreSettingsObserver.getCoreSettingsLocked(),
|
||||
buildSerial, autofillOptions, contentCaptureOptions);
|
||||
buildSerial, autofillOptions, contentCaptureOptions,
|
||||
disabledCompatChanges);
|
||||
}
|
||||
if (profilerInfo != null) {
|
||||
profilerInfo.closeFd();
|
||||
|
||||
Reference in New Issue
Block a user