diff options
| author | Andrei-Valentin Onea <andreionea@google.com> | 2019-10-11 13:04:08 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-10-11 13:04:08 +0000 |
| commit | b389ffe2d9b3ddf90093632cbbe4fc36aa384cd8 (patch) | |
| tree | cfec22ffcebac136c9d50d18852af7a1a7b22c8a /core/java | |
| parent | e1d902dd9e5fbbcf6dad025b2e6b47d0b65e639d (diff) | |
| parent | ea997f222c791fa58520b995da93cd08e9362b1b (diff) | |
Merge "Add extra compat change overriding methods."
Diffstat (limited to 'core/java')
3 files changed, 134 insertions, 1 deletions
diff --git a/core/java/com/android/internal/compat/CompatibilityChangeConfig.aidl b/core/java/com/android/internal/compat/CompatibilityChangeConfig.aidl new file mode 100644 index 000000000000..434c1b819582 --- /dev/null +++ b/core/java/com/android/internal/compat/CompatibilityChangeConfig.aidl @@ -0,0 +1,19 @@ +/* + * 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 com.android.internal.compat; + +parcelable CompatibilityChangeConfig; diff --git a/core/java/com/android/internal/compat/CompatibilityChangeConfig.java b/core/java/com/android/internal/compat/CompatibilityChangeConfig.java new file mode 100644 index 000000000000..fd2ada08edc1 --- /dev/null +++ b/core/java/com/android/internal/compat/CompatibilityChangeConfig.java @@ -0,0 +1,95 @@ +/* + * 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 com.android.internal.compat; + + +import android.compat.Compatibility.ChangeConfig; +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.HashSet; +import java.util.Set; + +/** + * Parcelable containing compat config overrides for a given application. + * @hide + */ +public final class CompatibilityChangeConfig implements Parcelable { + private final ChangeConfig mChangeConfig; + + public CompatibilityChangeConfig(ChangeConfig changeConfig) { + mChangeConfig = changeConfig; + } + + /** + * Changes forced to be enabled. + */ + public Set<Long> enabledChanges() { + return mChangeConfig.forceEnabledSet(); + } + + /** + * Changes forced to be disabled. + */ + public Set<Long> disabledChanges() { + return mChangeConfig.forceDisabledSet(); + } + + private CompatibilityChangeConfig(Parcel in) { + long[] enabledArray = in.createLongArray(); + long[] disabledArray = in.createLongArray(); + Set<Long> enabled = toLongSet(enabledArray); + Set<Long> disabled = toLongSet(disabledArray); + mChangeConfig = new ChangeConfig(enabled, disabled); + } + + private static Set<Long> toLongSet(long[] values) { + Set<Long> ret = new HashSet<>(); + for (long value: values) { + ret.add(value); + } + return ret; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + long[] enabled = mChangeConfig.forceEnabledChangesArray(); + long[] disabled = mChangeConfig.forceDisabledChangesArray(); + + dest.writeLongArray(enabled); + dest.writeLongArray(disabled); + } + + public static final Parcelable.Creator<CompatibilityChangeConfig> CREATOR = + new Parcelable.Creator<CompatibilityChangeConfig>() { + + @Override + public CompatibilityChangeConfig createFromParcel(Parcel in) { + return new CompatibilityChangeConfig(in); + } + + @Override + public CompatibilityChangeConfig[] newArray(int size) { + return new CompatibilityChangeConfig[size]; + } + }; +} diff --git a/core/java/com/android/internal/compat/IPlatformCompat.aidl b/core/java/com/android/internal/compat/IPlatformCompat.aidl index 4d8378a34599..4099cfa51b33 100644 --- a/core/java/com/android/internal/compat/IPlatformCompat.aidl +++ b/core/java/com/android/internal/compat/IPlatformCompat.aidl @@ -18,6 +18,8 @@ package com.android.internal.compat; import android.content.pm.ApplicationInfo; +parcelable CompatibilityChangeConfig; + /** * Platform private API for talking with the PlatformCompat service. * @@ -125,4 +127,21 @@ interface IPlatformCompat * @return {@code true} if the change is enabled for the current app. */ boolean isChangeEnabledByUid(long changeId, int uid); -}
\ No newline at end of file + + /** + * Add overrides to compatibility changes. + * + * @param overrides Parcelable containing the compat change overrides to be applied. + * @param packageName The package name of the app whose changes will be overridden. + * + */ + void setOverrides(in CompatibilityChangeConfig overrides, in String packageName); + + /** + * Revert overrides to compatibility changes. + * + * @param packageName The package name of the app whose overrides will be cleared. + * + */ + void clearOverrides(in String packageName); +} |
