Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f8934bf authored by Daniel Solomon's avatar Daniel Solomon Committed by Android (Google) Code Review
Browse files

Merge "Hide display white balance setting depending on color mode"

parents 00020f66 60418b4d
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -17,9 +17,11 @@ import android.content.Context;
import android.hardware.display.ColorDisplayManager;
import android.os.UserHandle;
import android.provider.Settings.Secure;
import com.android.internal.app.ColorDisplayController;
import com.android.settings.core.TogglePreferenceController;

public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController {
    private ColorDisplayController mColorDisplayController;

    public DisplayWhiteBalancePreferenceController(Context context, String key) {
        super(context, key);
@@ -27,7 +29,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon

    @Override
    public int getAvailabilityStatus() {
        return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) ?
        // Display white balance is only valid in linear light space. COLOR_MODE_SATURATED implies
        // unmanaged color mode, and hence unknown color processing conditions.
        return ColorDisplayManager.isDisplayWhiteBalanceAvailable(mContext) &&
                getColorDisplayController().getColorMode() !=
                    ColorDisplayController.COLOR_MODE_SATURATED ?
                AVAILABLE : DISABLED_FOR_USER;
    }

@@ -43,4 +49,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
                isChecked ? 1 : 0, UserHandle.USER_CURRENT);
        return true;
    }

    ColorDisplayController getColorDisplayController() {
        if (mColorDisplayController == null) {
            mColorDisplayController = new ColorDisplayController(mContext);
        }
        return mColorDisplayController;
    }
}
+29 −1
Original line number Diff line number Diff line
package com.android.settings.display;

import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.provider.Settings;
import android.provider.Settings.Secure;
import com.android.internal.app.ColorDisplayController;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@@ -23,6 +29,9 @@ public class DisplayWhiteBalancePreferenceControllerTest {
  private Context mContext;
  private DisplayWhiteBalancePreferenceController mController;

  @Mock
  private ColorDisplayController mColorDisplayController;

  @After
  public void tearDown() {
    SettingsShadowResources.reset();
@@ -30,14 +39,19 @@ public class DisplayWhiteBalancePreferenceControllerTest {

  @Before
  public void setUp() {
    MockitoAnnotations.initMocks(this);
    mContext = RuntimeEnvironment.application;
    mController = new DisplayWhiteBalancePreferenceController(mContext, "display_white_balance");
    mController = spy(new DisplayWhiteBalancePreferenceController(mContext,
        "display_white_balance"));
    doReturn(mColorDisplayController).when(mController).getColorDisplayController();
  }

  @Test
  public void isAvailable_configuredAvailable() {
    SettingsShadowResources.overrideResource(
        com.android.internal.R.bool.config_displayWhiteBalanceAvailable, true);
    when(mColorDisplayController.getColorMode())
        .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL);
    assertThat(mController.isAvailable()).isTrue();
  }

@@ -45,6 +59,20 @@ public class DisplayWhiteBalancePreferenceControllerTest {
  public void isAvailable_configuredUnavailable() {
    SettingsShadowResources.overrideResource(
        com.android.internal.R.bool.config_displayWhiteBalanceAvailable, false);
    when(mColorDisplayController.getColorMode())
        .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED);
    assertThat(mController.isAvailable()).isFalse();

    SettingsShadowResources.overrideResource(
        com.android.internal.R.bool.config_displayWhiteBalanceAvailable, false);
    when(mColorDisplayController.getColorMode())
        .thenReturn(ColorDisplayController.COLOR_MODE_NATURAL);
    assertThat(mController.isAvailable()).isFalse();

    SettingsShadowResources.overrideResource(
        com.android.internal.R.bool.config_displayWhiteBalanceAvailable, true);
    when(mColorDisplayController.getColorMode())
        .thenReturn(ColorDisplayController.COLOR_MODE_SATURATED);
    assertThat(mController.isAvailable()).isFalse();
  }