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

Commit bce91d94 authored by Christine Franks's avatar Christine Franks
Browse files

Move color management check to ColorDisplayManager

Bug: 111215474
Test: make RunSettingsRoboTests -j100
Change-Id: I8ab675a49e119014e59fcfdb61fcd9253e8c0da1
parent 8bda3a59
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" />
    <uses-permission android:name="android.permission.CONFIGURE_DISPLAY_COLOR_MODE" />
    <uses-permission android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS" />
    <uses-permission android:name="android.permission.SET_TIME" />
    <uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.REBOOT" />
+3 −38
Original line number Diff line number Diff line
@@ -14,11 +14,7 @@
package com.android.settings.display;

import android.content.Context;
import android.os.IBinder;
import android.os.Parcel;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Log;
import android.hardware.display.ColorDisplayManager;

import androidx.annotation.VisibleForTesting;

@@ -29,19 +25,16 @@ import com.android.settings.core.BasePreferenceController;
public class ColorModePreferenceController extends BasePreferenceController {
    private static final String TAG = "ColorModePreference";

    private static final int SURFACE_FLINGER_TRANSACTION_QUERY_COLOR_MANAGEMENT = 1030;

    private final ConfigurationWrapper mConfigWrapper;
    private ColorDisplayController mColorDisplayController;

    public ColorModePreferenceController(Context context, String key) {
        super(context, key);
        mConfigWrapper = new ConfigurationWrapper();
    }

    @Override
    public int getAvailabilityStatus() {
        return mConfigWrapper.isDeviceColorManaged()
        return mContext.getSystemService(ColorDisplayManager.class)
                .isDeviceColorManaged()
                && !getColorDisplayController().getAccessibilityTransformActivated() ?
                AVAILABLE_UNSEARCHABLE : DISABLED_FOR_USER;
    }
@@ -68,32 +61,4 @@ public class ColorModePreferenceController extends BasePreferenceController {
        }
        return mColorDisplayController;
    }

    @VisibleForTesting
    static class ConfigurationWrapper {
        private final IBinder mSurfaceFlinger;

        ConfigurationWrapper() {
            mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
        }

        boolean isDeviceColorManaged() {
            if (mSurfaceFlinger != null) {
                final Parcel data = Parcel.obtain();
                final Parcel reply = Parcel.obtain();
                data.writeInterfaceToken("android.ui.ISurfaceComposer");
                try {
                    mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_QUERY_COLOR_MANAGEMENT,
                            data, reply, 0);
                    return reply.readBoolean();
                } catch (RemoteException ex) {
                    Log.e(TAG, "Failed to query color management support", ex);
                } finally {
                    data.recycle();
                    reply.recycle();
                }
            }
            return false;
        }
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.settings.display;

import android.content.Context;

import android.hardware.display.ColorDisplayManager;

import androidx.preference.DropDownPreference;