Merge "[Audiosharing] Refresh the dialog handling onNewIntent" into main
This commit is contained in:
@@ -16,7 +16,9 @@
|
|||||||
|
|
||||||
package com.android.settings.connecteddevice.audiosharing;
|
package com.android.settings.connecteddevice.audiosharing;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settingslib.bluetooth.BluetoothUtils;
|
import com.android.settingslib.bluetooth.BluetoothUtils;
|
||||||
@@ -34,6 +36,23 @@ public class AudioSharingJoinHandlerActivity extends SettingsActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onNewIntent(Intent intent) {
|
||||||
|
super.onNewIntent(intent);
|
||||||
|
if (!Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice()
|
||||||
|
|| !BluetoothUtils.isAudioSharingUIAvailable(this)) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
if (intent != null) {
|
||||||
|
Log.d(TAG, "onNewIntent = " + intent);
|
||||||
|
getSupportFragmentManager().getFragments().stream().filter(
|
||||||
|
frag -> frag instanceof AudioSharingJoinHandlerDashboardFragment)
|
||||||
|
.findFirst().ifPresent(
|
||||||
|
frag -> ((AudioSharingJoinHandlerDashboardFragment) frag)
|
||||||
|
.handleDeviceConnectedFromIntent(intent));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isToolbarEnabled() {
|
protected boolean isToolbarEnabled() {
|
||||||
return false;
|
return false;
|
||||||
|
@@ -17,11 +17,16 @@
|
|||||||
package com.android.settings.connecteddevice.audiosharing;
|
package com.android.settings.connecteddevice.audiosharing;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
|
||||||
public class AudioSharingJoinHandlerDashboardFragment extends DashboardFragment {
|
public class AudioSharingJoinHandlerDashboardFragment extends DashboardFragment {
|
||||||
private static final String TAG = "AudioSharingJoinHandlerFrag";
|
private static final String TAG = "AudioSharingJoinHandlerFrag";
|
||||||
@@ -49,7 +54,26 @@ public class AudioSharingJoinHandlerDashboardFragment extends DashboardFragment
|
|||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
mController = use(AudioSharingJoinHandlerController.class);
|
mController = use(AudioSharingJoinHandlerController.class);
|
||||||
if (mController != null) {
|
if (mController != null) {
|
||||||
|
Log.d(TAG, "onAttach, init controller");
|
||||||
mController.init(this);
|
mController.init(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Handle just connected device via intent. */
|
||||||
|
public void handleDeviceConnectedFromIntent(@NonNull Intent intent) {
|
||||||
|
var unused =
|
||||||
|
ThreadUtils.postOnBackgroundThread(
|
||||||
|
() -> {
|
||||||
|
if (mController != null) {
|
||||||
|
Log.d(TAG, "handleDeviceConnectedFromIntent");
|
||||||
|
mController.handleDeviceConnectedFromIntent(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Test only: set mock controllers for the {@link AudioSharingJoinHandlerDashboardFragment} */
|
||||||
|
@VisibleForTesting
|
||||||
|
void setController(AudioSharingJoinHandlerController controller) {
|
||||||
|
mController = controller;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,20 +18,27 @@ package com.android.settings.connecteddevice.audiosharing;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothStatusCodes;
|
import android.bluetooth.BluetoothStatusCodes;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.platform.test.annotations.DisableFlags;
|
import android.platform.test.annotations.DisableFlags;
|
||||||
import android.platform.test.annotations.EnableFlags;
|
import android.platform.test.annotations.EnableFlags;
|
||||||
import android.platform.test.flag.junit.SetFlagsRule;
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
|
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
|
||||||
import com.android.settingslib.flags.Flags;
|
import com.android.settingslib.flags.Flags;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -66,9 +73,9 @@ public class AudioSharingJoinHandlerActivityTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE)
|
@DisableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING,
|
||||||
|
Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE})
|
||||||
public void onCreate_flagOff_finish() {
|
public void onCreate_flagOff_finish() {
|
||||||
mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING);
|
|
||||||
mActivity.onCreate(new Bundle());
|
mActivity.onCreate(new Bundle());
|
||||||
verify(mActivity).finish();
|
verify(mActivity).finish();
|
||||||
}
|
}
|
||||||
@@ -91,4 +98,26 @@ public class AudioSharingJoinHandlerActivityTest {
|
|||||||
public void isValidFragment_returnsFalse() {
|
public void isValidFragment_returnsFalse() {
|
||||||
assertThat(mActivity.isValidFragment("")).isFalse();
|
assertThat(mActivity.isValidFragment("")).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING,
|
||||||
|
Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE})
|
||||||
|
public void onNewIntent_flagOff_finish() {
|
||||||
|
Intent intent = new Intent();
|
||||||
|
mActivity.onNewIntent(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags({Flags.FLAG_ENABLE_LE_AUDIO_SHARING,
|
||||||
|
Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE})
|
||||||
|
public void onNewIntent_flagOn_handleDeviceConnectedFromIntent() {
|
||||||
|
FragmentManager fragmentManager = mock(FragmentManager.class);
|
||||||
|
AudioSharingJoinHandlerDashboardFragment fragment = mock(
|
||||||
|
AudioSharingJoinHandlerDashboardFragment.class);
|
||||||
|
when(mActivity.getSupportFragmentManager()).thenReturn(fragmentManager);
|
||||||
|
when(fragmentManager.getFragments()).thenReturn(ImmutableList.of(fragment));
|
||||||
|
Intent intent = new Intent();
|
||||||
|
mActivity.onNewIntent(intent);
|
||||||
|
verify(fragment).handleDeviceConnectedFromIntent(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,15 +18,26 @@ package com.android.settings.connecteddevice.audiosharing;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.junit.MockitoJUnit;
|
||||||
|
import org.mockito.junit.MockitoRule;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class AudioSharingJoinHandlerDashboardFragmentTest {
|
public class AudioSharingJoinHandlerDashboardFragmentTest {
|
||||||
|
@Rule
|
||||||
|
public final MockitoRule mocks = MockitoJUnit.rule();
|
||||||
|
|
||||||
private AudioSharingJoinHandlerDashboardFragment mFragment;
|
private AudioSharingJoinHandlerDashboardFragment mFragment;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -49,4 +60,14 @@ public class AudioSharingJoinHandlerDashboardFragmentTest {
|
|||||||
public void getMetricsCategory_returnsCorrectCategory() {
|
public void getMetricsCategory_returnsCorrectCategory() {
|
||||||
assertThat(mFragment.getMetricsCategory()).isEqualTo(0);
|
assertThat(mFragment.getMetricsCategory()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleDeviceConnectedFromIntent() {
|
||||||
|
AudioSharingJoinHandlerController controller = mock(
|
||||||
|
AudioSharingJoinHandlerController.class);
|
||||||
|
mFragment.setController(controller);
|
||||||
|
Intent intent = new Intent();
|
||||||
|
mFragment.handleDeviceConnectedFromIntent(intent);
|
||||||
|
verify(controller).handleDeviceConnectedFromIntent(intent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user