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

Commit 5eeb6ae6 authored by Mill Chen's avatar Mill Chen Committed by Android (Google) Code Review
Browse files

Merge "Broadcast an intent after turning off Grayscale"

parents ef1b5ceb 6d90cdfe
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -16,9 +16,12 @@

package com.android.settings.homepage.contextualcards.conditional;

import android.Manifest;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.display.ColorDisplayManager;
import android.util.Log;

@@ -32,10 +35,15 @@ public class GrayscaleConditionController implements ConditionalCardController {
    static final int ID = Objects.hash("GrayscaleConditionController");

    private static final String TAG = "GrayscaleCondition";
    private static final String ACTION_GRAYSCALE_CHANGED =
            "android.settings.action.GRAYSCALE_CHANGED";
    private static final IntentFilter GRAYSCALE_CHANGED_FILTER = new IntentFilter(
            ACTION_GRAYSCALE_CHANGED);

    private final Context mAppContext;
    private final ConditionManager mConditionManager;
    private final ColorDisplayManager mColorDisplayManager;
    private final Receiver mReceiver;

    private Intent mIntent;

@@ -43,6 +51,7 @@ public class GrayscaleConditionController implements ConditionalCardController {
        mAppContext = appContext;
        mConditionManager = conditionManager;
        mColorDisplayManager = mAppContext.getSystemService(ColorDisplayManager.class);
        mReceiver = new Receiver();
    }

    @Override
@@ -72,6 +81,7 @@ public class GrayscaleConditionController implements ConditionalCardController {
    public void onActionClick() {
        // Turn off grayscale
        mColorDisplayManager.setSaturationLevel(100 /* staturationLevel */);
        sendBroadcast();
        mConditionManager.onConditionChanged();
    }

@@ -93,11 +103,27 @@ public class GrayscaleConditionController implements ConditionalCardController {

    @Override
    public void startMonitoringStateChange() {

        mAppContext.registerReceiver(mReceiver, GRAYSCALE_CHANGED_FILTER,
                Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS, null /* scheduler */);
    }

    @Override
    public void stopMonitoringStateChange() {
        mAppContext.unregisterReceiver(mReceiver);
    }

    private void sendBroadcast() {
        final Intent intent = new Intent();
        intent.setAction(ACTION_GRAYSCALE_CHANGED);
        mAppContext.sendBroadcast(intent, Manifest.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS);
    }

    public class Receiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (ACTION_GRAYSCALE_CHANGED.equals(intent.getAction())) {
                mConditionManager.onConditionChanged();
            }
        }
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@ package com.android.settings.homepage.contextualcards.conditional;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.content.Intent;
import android.hardware.display.ColorDisplayManager;

import org.junit.Before;
@@ -80,4 +82,11 @@ public class GrayscaleConditionControllerTest {

        verify(mConditionManager).onConditionChanged();
    }

    @Test
    public void onActionClick_shouldSendBroadcast() {
        mController.onActionClick();

        verify(mContext).sendBroadcast(any(Intent.class), any(String.class));
    }
}