Merge "[VolumePanel] Redirect volume panel action to SystemUI" into tm-qpr-dev am: 95912773f9 am: 6983f5867c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/19459988
Change-Id: Ic5ec27462b8472b1f1ac7fd268be64764ed139c2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/panel/PanelFeatureProviderImpl.java b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
index a73881b..57a1ab0 100644
--- a/src/com/android/settings/panel/PanelFeatureProviderImpl.java
+++ b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
@@ -20,6 +20,7 @@
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
+import android.util.FeatureFlagUtils;
public class PanelFeatureProviderImpl implements PanelFeatureProvider {
@@ -49,9 +50,19 @@
case Settings.Panel.ACTION_WIFI:
return WifiPanel.create(context);
case Settings.Panel.ACTION_VOLUME:
- return VolumePanel.create(context);
+ if (FeatureFlagUtils.isEnabled(context,
+ FeatureFlagUtils.SETTINGS_VOLUME_PANEL_IN_SYSTEMUI)) {
+ // Redirect to the volume panel in SystemUI.
+ Intent volumeIntent = new Intent(Settings.Panel.ACTION_VOLUME);
+ volumeIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND).setPackage(
+ SYSTEMUI_PACKAGE_NAME);
+ context.sendBroadcast(volumeIntent);
+ return null;
+ } else {
+ return VolumePanel.create(context);
+ }
}
- throw new IllegalStateException("No matching panel for: " + panelType);
+ throw new IllegalStateException("No matching panel for: " + panelType);
}
}
diff --git a/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
index a02c054..4b08ef8 100644
--- a/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
+++ b/tests/unit/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
@@ -28,6 +28,7 @@
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
+import android.util.FeatureFlagUtils;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -35,6 +36,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
@RunWith(AndroidJUnit4.class)
public class PanelFeatureProviderImplTest {
@@ -66,11 +68,27 @@
}
@Test
- public void getPanel_volume_returnsCorrectPanel() {
+ public void getPanel_volumePanel_returnsCorrectPanel() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_VOLUME_PANEL_IN_SYSTEMUI,
+ false);
mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_VOLUME);
final PanelContent panel = mProvider.getPanel(mContext, mBundle);
assertThat(panel).isInstanceOf(VolumePanel.class);
}
+
+ @Test
+ public void getPanel_volumePanelFlagEnabled_sendRedirectIntent() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_VOLUME_PANEL_IN_SYSTEMUI,
+ true);
+ mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_VOLUME);
+ final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+
+ mProvider.getPanel(mContext, mBundle);
+
+ verify(mContext).sendBroadcast(intentCaptor.capture());
+ assertThat(intentCaptor.getValue().getAction()).isEqualTo(Settings.Panel.ACTION_VOLUME);
+ assertThat(intentCaptor.getValue().getPackage()).isEqualTo(SYSTEMUI_PACKAGE_NAME);
+ }
}