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

Commit 44eaac32 authored by John Reck's avatar John Reck Committed by Android (Google) Code Review
Browse files

Merge "Fix performance regression in textclassifier"

parents 43aae704 bcc0b914
Loading
Loading
Loading
Loading
+36 −16
Original line number Original line Diff line number Diff line
@@ -33,6 +33,10 @@ public final class ConfigParser {


    private final KeyValueListParser mParser;
    private final KeyValueListParser mParser;


    // TODO: Re-enable DeviceConfig when it has reasonable performance or just delete the
    // option of using DeviceConfig entirely.
    static final boolean ENABLE_DEVICE_CONFIG = false;

    public ConfigParser(@Nullable String textClassifierConstants) {
    public ConfigParser(@Nullable String textClassifierConstants) {
        final KeyValueListParser parser = new KeyValueListParser(',');
        final KeyValueListParser parser = new KeyValueListParser(',');
        try {
        try {
@@ -48,39 +52,55 @@ public final class ConfigParser {
     * Reads a boolean flag.
     * Reads a boolean flag.
     */
     */
    public boolean getBoolean(String key, boolean defaultValue) {
    public boolean getBoolean(String key, boolean defaultValue) {
        if (ENABLE_DEVICE_CONFIG) {
            return DeviceConfig.getBoolean(
            return DeviceConfig.getBoolean(
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    key,
                    key,
                    mParser.getBoolean(key, defaultValue));
                    mParser.getBoolean(key, defaultValue));
        } else {
            return mParser.getBoolean(key, defaultValue);
        }
    }
    }


    /**
    /**
     * Reads an integer flag.
     * Reads an integer flag.
     */
     */
    public int getInt(String key, int defaultValue) {
    public int getInt(String key, int defaultValue) {
        if (ENABLE_DEVICE_CONFIG) {
            return DeviceConfig.getInt(
            return DeviceConfig.getInt(
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    key,
                    key,
                    mParser.getInt(key, defaultValue));
                    mParser.getInt(key, defaultValue));
        } else {
            return mParser.getInt(key, defaultValue);
        }
    }
    }


    /**
    /**
     * Reads a float flag.
     * Reads a float flag.
     */
     */
    public float getFloat(String key, float defaultValue) {
    public float getFloat(String key, float defaultValue) {
        if (ENABLE_DEVICE_CONFIG) {
            return DeviceConfig.getFloat(
            return DeviceConfig.getFloat(
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    key,
                    key,
                    mParser.getFloat(key, defaultValue));
                    mParser.getFloat(key, defaultValue));
        } else {
            return mParser.getFloat(key, defaultValue);
        }
    }
    }


    /**
    /**
     * Reads a string flag.
     * Reads a string flag.
     */
     */
    public String getString(String key, String defaultValue) {
    public String getString(String key, String defaultValue) {
        if (ENABLE_DEVICE_CONFIG) {
            return DeviceConfig.getString(
            return DeviceConfig.getString(
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                    key,
                    key,
                    mParser.getString(key, defaultValue));
                    mParser.getString(key, defaultValue));
        } else {
            return mParser.getString(key, defaultValue);
        }
    }
    }
}
}
+9 −5
Original line number Original line Diff line number Diff line
@@ -197,8 +197,10 @@ public final class TextClassificationManager {
            if (mSettingsObserver != null) {
            if (mSettingsObserver != null) {
                getApplicationContext().getContentResolver()
                getApplicationContext().getContentResolver()
                        .unregisterContentObserver(mSettingsObserver);
                        .unregisterContentObserver(mSettingsObserver);
                if (ConfigParser.ENABLE_DEVICE_CONFIG) {
                    DeviceConfig.removeOnPropertyChangedListener(mSettingsObserver);
                    DeviceConfig.removeOnPropertyChangedListener(mSettingsObserver);
                }
                }
            }
        } finally {
        } finally {
            super.finalize();
            super.finalize();
        }
        }
@@ -292,11 +294,13 @@ public final class TextClassificationManager {
                    Settings.Global.getUriFor(Settings.Global.TEXT_CLASSIFIER_CONSTANTS),
                    Settings.Global.getUriFor(Settings.Global.TEXT_CLASSIFIER_CONSTANTS),
                    false /* notifyForDescendants */,
                    false /* notifyForDescendants */,
                    this);
                    this);
            if (ConfigParser.ENABLE_DEVICE_CONFIG) {
                DeviceConfig.addOnPropertyChangedListener(
                DeviceConfig.addOnPropertyChangedListener(
                        DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                        DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                        ActivityThread.currentApplication().getMainExecutor(),
                        ActivityThread.currentApplication().getMainExecutor(),
                        this);
                        this);
            }
            }
        }


        @Override
        @Override
        public void onChange(boolean selfChange) {
        public void onChange(boolean selfChange) {
+5 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import androidx.test.runner.AndroidJUnit4;


import org.junit.After;
import org.junit.After;
import org.junit.Before;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;


@@ -58,6 +59,7 @@ public class ConfigParserTest {
    }
    }


    @Test
    @Test
    @Ignore // TODO: Re-enable once ConfigParser#ENABLE_DEVICE_CONFIG is finalized
    public void getBoolean_deviceConfig() {
    public void getBoolean_deviceConfig() {
        DeviceConfig.setProperty(
        DeviceConfig.setProperty(
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
@@ -77,6 +79,7 @@ public class ConfigParserTest {
    }
    }


    @Test
    @Test
    @Ignore // TODO: Re-enable once ConfigParser#ENABLE_DEVICE_CONFIG is finalized
    public void getInt_deviceConfig() {
    public void getInt_deviceConfig() {
        DeviceConfig.setProperty(
        DeviceConfig.setProperty(
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
@@ -94,6 +97,7 @@ public class ConfigParserTest {
    }
    }


    @Test
    @Test
    @Ignore // TODO: Re-enable once ConfigParser#ENABLE_DEVICE_CONFIG is finalized
    public void getFloat_deviceConfig() {
    public void getFloat_deviceConfig() {
        DeviceConfig.setProperty(
        DeviceConfig.setProperty(
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
@@ -111,6 +115,7 @@ public class ConfigParserTest {
    }
    }


    @Test
    @Test
    @Ignore // TODO: Re-enable once ConfigParser#ENABLE_DEVICE_CONFIG is finalized
    public void getString_deviceConfig() {
    public void getString_deviceConfig() {
        DeviceConfig.setProperty(
        DeviceConfig.setProperty(
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,