Loading core/java/android/view/textclassifier/ConfigParser.java +36 −16 Original line number Original line Diff line number Diff line Loading @@ -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 { Loading @@ -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); } } } } } core/java/android/view/textclassifier/TextClassificationManager.java +9 −5 Original line number Original line Diff line number Diff line Loading @@ -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(); } } Loading Loading @@ -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) { Loading core/tests/coretests/src/android/view/textclassifier/ConfigParserTest.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading Loading
core/java/android/view/textclassifier/ConfigParser.java +36 −16 Original line number Original line Diff line number Diff line Loading @@ -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 { Loading @@ -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); } } } } }
core/java/android/view/textclassifier/TextClassificationManager.java +9 −5 Original line number Original line Diff line number Diff line Loading @@ -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(); } } Loading Loading @@ -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) { Loading
core/tests/coretests/src/android/view/textclassifier/ConfigParserTest.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading @@ -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, Loading