Merge "Suppress shared axis transition on Brightness level" into sc-dev
diff --git a/res/xml/display_settings_v2.xml b/res/xml/display_settings_v2.xml
index e0eb9bb..2d6e3db 100644
--- a/res/xml/display_settings_v2.xml
+++ b/res/xml/display_settings_v2.xml
@@ -30,7 +30,6 @@
             settings:keywords="@string/keywords_display_brightness_level"
             settings:useAdminDisabledSummary="true"
             settings:userRestriction="no_config_brightness">
-            <intent android:action="com.android.intent.action.SHOW_BRIGHTNESS_DIALOG"/>
         </com.android.settingslib.RestrictedPreference>
 
         <com.android.settings.widget.PrimarySwitchPreference
diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
index 7e0ce66..de4fe25 100644
--- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java
+++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
@@ -13,12 +13,15 @@
  */
 package com.android.settings.display;
 
+import static android.content.Intent.ACTION_SHOW_BRIGHTNESS_DIALOG;
+
 import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
 import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MIN;
 import static com.android.settingslib.display.BrightnessUtils.convertLinearToGammaFloat;
 
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.Intent;
 import android.database.ContentObserver;
 import android.hardware.display.BrightnessInfo;
 import android.hardware.display.DisplayManager;
@@ -31,6 +34,7 @@
 import android.os.ServiceManager;
 import android.provider.Settings.System;
 import android.service.vr.IVrManager;
+import android.text.TextUtils;
 import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
@@ -38,11 +42,13 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.core.SettingsBaseActivity;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.transition.SettingsTransitionHelper;
 
 import java.text.NumberFormat;
 
@@ -77,10 +83,12 @@
 
     private final DisplayListener mDisplayListener = new DisplayListener() {
         @Override
-        public void onDisplayAdded(int displayId) {}
+        public void onDisplayAdded(int displayId) {
+        }
 
         @Override
-        public void onDisplayRemoved(int displayId) {}
+        public void onDisplayRemoved(int displayId) {
+        }
 
         @Override
         public void onDisplayChanged(int displayId) {
@@ -140,6 +148,18 @@
         mDisplayManager.unregisterDisplayListener(mDisplayListener);
     }
 
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
+            return false;
+        }
+        final Intent intent = new Intent(ACTION_SHOW_BRIGHTNESS_DIALOG);
+        intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
+                SettingsTransitionHelper.TransitionType.TRANSITION_NONE);
+        mContext.startActivity(intent);
+        return true;
+    }
+
     private void updatedSummary(Preference preference) {
         if (preference != null) {
             preference.setSummary(NumberFormat.getPercentInstance().format(getCurrentBrightness()));
diff --git a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
index 8fd847a..4948986 100644
--- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -25,9 +25,12 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.robolectric.Shadows.shadowOf;
 
+import android.app.Activity;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.Intent;
 import android.hardware.display.BrightnessInfo;
 import android.os.PowerManager;
 import android.provider.Settings.System;
@@ -36,14 +39,19 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.core.SettingsBaseActivity;
+import com.android.settingslib.transition.SettingsTransitionHelper;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowActivity;
 import org.robolectric.shadows.ShadowApplication;
 import org.robolectric.shadows.ShadowContentResolver;
 
@@ -178,4 +186,20 @@
         mController.updateState(mPreference);
         verify(mPreference).setSummary("0%");
     }
+
+    @Test
+    public void handlePreferenceTreeClick_transitionTypeNone_shouldPassToNextActivity() {
+        final Activity activity = Robolectric.setupActivity(Activity.class);
+        final BrightnessLevelPreferenceController controller =
+                new BrightnessLevelPreferenceController(activity, null);
+        final ShadowActivity shadowActivity = shadowOf(activity);
+        when(mPreference.getKey()).thenReturn("brightness");
+
+        controller.handlePreferenceTreeClick(mPreference);
+
+        final Intent intent = shadowActivity.getNextStartedActivity();
+        assertThat(intent.getIntExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE, 0))
+                .isEqualTo(SettingsTransitionHelper.TransitionType.TRANSITION_NONE);
+
+    }
 }