diff options
10 files changed, 92 insertions, 40 deletions
diff --git a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java index b2e75a36c3ea..be573721936b 100644 --- a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java +++ b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java @@ -72,13 +72,6 @@ public final class IkeSessionParamsUtils { private static final String NATT_KEEPALIVE_DELAY_SEC_KEY = "NATT_KEEPALIVE_DELAY_SEC_KEY"; private static final String IKE_OPTIONS_KEY = "IKE_OPTIONS_KEY"; - // TODO: Use the IKE API when they are exposed - @VisibleForTesting(visibility = Visibility.PRIVATE) - public static final int IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION = 6; - - @VisibleForTesting(visibility = Visibility.PRIVATE) - public static final int IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES = 7; - private static final Set<Integer> IKE_OPTIONS = new ArraySet<>(); static { @@ -87,9 +80,6 @@ public final class IkeSessionParamsUtils { IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_MOBIKE); IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_FORCE_PORT_4500); IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_INITIAL_CONTACT); - IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_REKEY_MOBILITY); - IKE_OPTIONS.add(IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION); - IKE_OPTIONS.add(IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES); } /** Serializes an IkeSessionParams to a PersistableBundle. */ diff --git a/libs/hwui/thread/WorkQueue.h b/libs/hwui/thread/WorkQueue.h index 46b8bc07b432..f2751d2a6cc7 100644 --- a/libs/hwui/thread/WorkQueue.h +++ b/libs/hwui/thread/WorkQueue.h @@ -57,7 +57,7 @@ private: public: WorkQueue(std::function<void()>&& wakeFunc, std::mutex& lock) - : mWakeFunc(move(wakeFunc)), mLock(lock) {} + : mWakeFunc(std::move(wakeFunc)), mLock(lock) {} void process() { auto now = clock::now(); diff --git a/media/aidl/android/media/audio/common/AudioPort.aidl b/media/aidl/android/media/audio/common/AudioPort.aidl index 84675e3a00a6..d32b840ebfe8 100644 --- a/media/aidl/android/media/audio/common/AudioPort.aidl +++ b/media/aidl/android/media/audio/common/AudioPort.aidl @@ -23,8 +23,9 @@ import android.media.audio.common.AudioProfile; import android.media.audio.common.ExtraAudioDescriptor; /** - * Audio port structure describes the capabilities of an audio port - * as well as its current configuration. + * Audio port structure describes the capabilities of an audio port. + * This is a "blueprint" which contains all the possible configurations + * that are supported by the port. * * {@hide} */ diff --git a/media/aidl/android/media/audio/common/AudioPortExt.aidl b/media/aidl/android/media/audio/common/AudioPortExt.aidl index c4681cbb182e..eadc0ab7c7c5 100644 --- a/media/aidl/android/media/audio/common/AudioPortExt.aidl +++ b/media/aidl/android/media/audio/common/AudioPortExt.aidl @@ -34,6 +34,9 @@ union AudioPortExt { AudioPortDeviceExt device; /** Information specific to mix ports. */ AudioPortMixExt mix; - /** Audio session identifier. */ + /** + * NOT USED. Framework audio session identifier. + * Use android.media.AudioPortExtSys.session on the system side. + */ int session; } diff --git a/media/java/android/media/BluetoothProfileConnectionInfo.java b/media/java/android/media/BluetoothProfileConnectionInfo.java index c14884657ddd..f3a65a121768 100644 --- a/media/java/android/media/BluetoothProfileConnectionInfo.java +++ b/media/java/android/media/BluetoothProfileConnectionInfo.java @@ -126,6 +126,21 @@ public final class BluetoothProfileConnectionInfo implements Parcelable { } /** + * @hide + * Factory method for <code>BluetoothProfileConnectionInfo</code> for an LE output device + * @param suppressNoisyIntent if true the {@link AudioManager.ACTION_AUDIO_BECOMING_NOISY} + * intent will not be sent. + * @param volume the volume index of the device, -1 if unknown or to be ignored + * @return an instance of BluetoothProfileConnectionInfo for the BLE output device that reflects + * the given parameters + */ + public static @NonNull BluetoothProfileConnectionInfo createLeAudioOutputInfo( + boolean suppressNoisyIntent, int volume) { + return new BluetoothProfileConnectionInfo(BluetoothProfile.LE_AUDIO, suppressNoisyIntent, + volume, /*isLeOutput*/ true); + } + + /** * @return The profile connection */ public int getProfile() { diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/BluetoothProfileConnectionInfoTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/BluetoothProfileConnectionInfoTest.java new file mode 100644 index 000000000000..ae162b57b709 --- /dev/null +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/BluetoothProfileConnectionInfoTest.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 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.mediaframeworktest.unit; + +import static org.junit.Assert.assertEquals; + +import android.bluetooth.BluetoothProfile; +import android.media.BluetoothProfileConnectionInfo; + +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +public class BluetoothProfileConnectionInfoTest { + + @Test + public void testCoverageLeAudioOutputVolume() { + final boolean supprNoisy = false; + final int volume = 1; + final BluetoothProfileConnectionInfo info = BluetoothProfileConnectionInfo + .createLeAudioOutputInfo(supprNoisy, volume); + assertEquals(info.getProfile(), BluetoothProfile.LE_AUDIO); + assertEquals(info.isSuppressNoisyIntent(), supprNoisy); + assertEquals(info.isLeOutput(), true); + assertEquals(info.getVolume(), volume); + } + +} diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index f05c1e2e76f2..104998c53e09 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -247,6 +247,9 @@ android_library { "com.android.systemui", ], plugins: ["dagger2-compiler"], + lint: { + test: true, + }, } // Opt-in config for optimizing the SystemUI target using R8. diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index dbe4fb8c8795..9c0d3dfe17a1 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -375,7 +375,8 @@ public class AudioDeviceInventory { makeLeAudioDeviceUnavailable(address, btInfo.mAudioSystemDevice); } else if (switchToAvailable) { makeLeAudioDeviceAvailable(address, BtHelper.getName(btInfo.mDevice), - streamType, btInfo.mAudioSystemDevice, "onSetBtActiveDevice"); + streamType, btInfo.mVolume, btInfo.mAudioSystemDevice, + "onSetBtActiveDevice"); } break; default: throw new IllegalArgumentException("Invalid profile " @@ -1159,8 +1160,8 @@ public class AudioDeviceInventory { } @GuardedBy("mDevicesLock") - private void makeLeAudioDeviceAvailable(String address, String name, int streamType, int device, - String eventSource) { + private void makeLeAudioDeviceAvailable(String address, String name, int streamType, + int volumeIndex, int device, String eventSource) { if (device != AudioSystem.DEVICE_NONE) { /* Audio Policy sees Le Audio similar to A2DP. Let's make sure * AUDIO_POLICY_FORCE_NO_BT_A2DP is not set @@ -1181,7 +1182,9 @@ public class AudioDeviceInventory { return; } - final int leAudioVolIndex = mDeviceBroker.getVssVolumeForDevice(streamType, device); + final int leAudioVolIndex = (volumeIndex == -1) + ? mDeviceBroker.getVssVolumeForDevice(streamType, device) + : volumeIndex; final int maxIndex = mDeviceBroker.getMaxVssVolumeForStream(streamType); mDeviceBroker.postSetLeAudioVolumeIndex(leAudioVolIndex, maxIndex, streamType); mDeviceBroker.postApplyVolumeOnDevice(streamType, device, "makeLeAudioDeviceAvailable"); diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index a148f9c51aab..931c692b5f01 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -4040,6 +4040,7 @@ public class Vpn { mConfig.proxyInfo = profile.proxy; mConfig.requiresInternetValidation = profile.requiresInternetValidation; mConfig.excludeLocalRoutes = profile.excludeLocalRoutes; + mConfig.allowBypass = profile.isBypassable; switch (profile.type) { case VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS: diff --git a/tests/vcn/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtilsTest.java b/tests/vcn/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtilsTest.java index d2f0a20fc3b2..3b201f9d20dd 100644 --- a/tests/vcn/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtilsTest.java +++ b/tests/vcn/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtilsTest.java @@ -134,33 +134,13 @@ public class IkeSessionParamsUtilsTest { verifyPersistableBundleEncodeDecodeIsLossless(params); } - private static IkeSessionParams.Builder createBuilderMinimumWithEap() throws Exception { - final X509Certificate serverCaCert = createCertFromPemFile("self-signed-ca.pem"); - - final byte[] eapId = "test@android.net".getBytes(StandardCharsets.US_ASCII); - final int subId = 1; - final EapSessionConfig eapConfig = - new EapSessionConfig.Builder() - .setEapIdentity(eapId) - .setEapSimConfig(subId, APPTYPE_USIM) - .setEapAkaConfig(subId, APPTYPE_USIM) - .build(); - return createBuilderMinimum().setAuthEap(serverCaCert, eapConfig); - } - @Test public void testEncodeDecodeParamsWithIkeOptions() throws Exception { final IkeSessionParams params = - createBuilderMinimumWithEap() + createBuilderMinimum() .addIkeOption(IkeSessionParams.IKE_OPTION_ACCEPT_ANY_REMOTE_ID) - .addIkeOption(IkeSessionParams.IKE_OPTION_EAP_ONLY_AUTH) .addIkeOption(IkeSessionParams.IKE_OPTION_MOBIKE) - .addIkeOption(IkeSessionParams.IKE_OPTION_FORCE_PORT_4500) .addIkeOption(IkeSessionParams.IKE_OPTION_INITIAL_CONTACT) - .addIkeOption(IkeSessionParams.IKE_OPTION_REKEY_MOBILITY) - .addIkeOption( - IkeSessionParamsUtils.IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION) - .addIkeOption(IkeSessionParamsUtils.IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES) .build(); verifyPersistableBundleEncodeDecodeIsLossless(params); } @@ -196,7 +176,19 @@ public class IkeSessionParamsUtilsTest { @Test public void testEncodeRecodeParamsWithEapAuth() throws Exception { - final IkeSessionParams params = createBuilderMinimumWithEap().build(); + final X509Certificate serverCaCert = createCertFromPemFile("self-signed-ca.pem"); + + final byte[] eapId = "test@android.net".getBytes(StandardCharsets.US_ASCII); + final int subId = 1; + final EapSessionConfig eapConfig = + new EapSessionConfig.Builder() + .setEapIdentity(eapId) + .setEapSimConfig(subId, APPTYPE_USIM) + .setEapAkaConfig(subId, APPTYPE_USIM) + .build(); + + final IkeSessionParams params = + createBuilderMinimum().setAuthEap(serverCaCert, eapConfig).build(); verifyPersistableBundleEncodeDecodeIsLossless(params); } } |