Index: chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/FontSizePrefsTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/FontSizePrefsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/FontSizePrefsTest.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..91d29031e0bb7e4cdec522c7d73d3f9b97ec055d |
--- /dev/null |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/FontSizePrefsTest.java |
@@ -0,0 +1,241 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.accessibility; |
+ |
+import android.content.Context; |
+import android.content.SharedPreferences; |
+import android.preference.PreferenceManager; |
+import android.test.suitebuilder.annotation.SmallTest; |
+ |
+import org.chromium.base.test.util.Feature; |
+import org.chromium.base.ThreadUtils; |
+import org.chromium.chrome.shell.ChromeShellTestBase; |
+import org.chromium.content.browser.test.util.UiUtils; |
+ |
+import java.util.concurrent.Callable; |
+ |
+/** |
+ * Test class for {@link FontSizePrefs}. |
+ */ |
+public class FontSizePrefsTest extends ChromeShellTestBase { |
+ |
+ private FontSizePrefs mFontSizePrefs; |
+ private SharedPreferences.Editor mSharedPreferencesEditor; |
+ |
+ @Override |
+ public void setUp() throws Exception { |
+ super.setUp(); |
+ Context context = getInstrumentation().getTargetContext(); |
+ startChromeBrowserProcessSync(context); |
+ getFontSizePrefs(context); |
+ mSharedPreferencesEditor = PreferenceManager.getDefaultSharedPreferences(context).edit(); |
+ } |
+ |
+ @Override |
+ protected void tearDown() throws Exception { |
+ mSharedPreferencesEditor.remove(FontSizePrefs.PREF_USER_SET_FORCE_ENABLE_ZOOM).commit(); |
+ super.tearDown(); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Accessibility"}) |
+ public void testGetAndSetFontAndForceEnableZoom() throws InterruptedException { |
+ // Check default font. |
+ assertEquals(1f, getFontScale()); |
+ // Check that setting the value of font scale factor works. |
+ float newTextScale = 1.2f; |
+ setFontScale(newTextScale); |
+ assertEquals(newTextScale, getFontScale()); |
+ |
+ // Check the default value of force enable zoom. |
+ assertFalse(getForceEnableZoom()); |
+ // Check that setting the value of force enable zoom works. |
+ setForceEnableZoom(true); |
+ assertTrue(getForceEnableZoom()); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Accessibility"}) |
+ public void testGetAndSetUserSetForceEnableZoom() throws InterruptedException { |
+ // Check the default value of user set force enable zoom. |
+ assertFalse(mFontSizePrefs.getUserSetForceEnableZoom()); |
+ // Check that setting the value of user set force enable zoom works. |
+ setUserSetForceEnableZoom(true); |
+ assertTrue(mFontSizePrefs.getUserSetForceEnableZoom()); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Accessibility"}) |
+ public void testObserversForceEnableZoom() throws InterruptedException { |
+ TestingObserver test1 = new TestingObserver(); |
+ TestingObserver test2 = new TestingObserver(); |
+ mFontSizePrefs.addObserver(test1); |
+ mFontSizePrefs.addObserver(test2); |
+ |
+ // Checks that force enable zoom for both observers is correctly changed. |
+ setForceEnableZoom(true); |
+ UiUtils.settleDownUI(getInstrumentation()); |
+ assertTrue(test1.getForceEnableZoom()); |
+ assertTrue(test2.getForceEnableZoom()); |
+ |
+ // Checks that removing observer and setting force enable zoom works. |
+ mFontSizePrefs.removeObserver(test1); |
+ setForceEnableZoom(false); |
+ UiUtils.settleDownUI(getInstrumentation()); |
+ assertTrue(test1.getForceEnableZoom()); |
+ assertFalse(test2.getForceEnableZoom()); |
+ mFontSizePrefs.removeObserver(test2); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Accessibility"}) |
+ public void testObserversFontScale() throws InterruptedException { |
+ TestingObserver test1 = new TestingObserver(); |
+ TestingObserver test2 = new TestingObserver(); |
+ mFontSizePrefs.addObserver(test1); |
+ mFontSizePrefs.addObserver(test2); |
+ |
+ // Checks that font scale for both observers is correctly changed. |
+ float newTextScale = 1.2f; |
+ setFontScale(newTextScale); |
+ UiUtils.settleDownUI(getInstrumentation()); |
+ assertEquals(newTextScale, test1.getFontScaleFactor()); |
+ assertEquals(newTextScale, test2.getFontScaleFactor()); |
+ |
+ // Checks that removing observer and setting font works. |
+ float newerTextScale = 1.4f; |
+ mFontSizePrefs.removeObserver(test1); |
+ setFontScale(newerTextScale); |
+ UiUtils.settleDownUI(getInstrumentation()); |
+ assertEquals(newTextScale, test1.getFontScaleFactor()); |
+ assertEquals(newerTextScale, test2.getFontScaleFactor()); |
+ mFontSizePrefs.removeObserver(test2); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Accessibility"}) |
+ public void testObserversUserSetForceEnableZoom() throws InterruptedException { |
+ TestingObserver test1 = new TestingObserver(); |
+ TestingObserver test2 = new TestingObserver(); |
+ mFontSizePrefs.addObserver(test1); |
+ mFontSizePrefs.addObserver(test2); |
+ |
+ // Checks that force enable zoom for both observers is correctly changed. |
+ setUserSetForceEnableZoom(true); |
+ UiUtils.settleDownUI(getInstrumentation()); |
+ assertTrue(test1.getUserSetForceEnableZoom()); |
+ assertTrue(test2.getUserSetForceEnableZoom()); |
+ |
+ // Checks that removing observer and setting force enable zoom works. |
+ mFontSizePrefs.removeObserver(test1); |
+ setUserSetForceEnableZoom(false); |
+ UiUtils.settleDownUI(getInstrumentation()); |
+ assertTrue(test1.getUserSetForceEnableZoom()); |
+ assertFalse(test2.getUserSetForceEnableZoom()); |
+ mFontSizePrefs.removeObserver(test2); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"Accessibility"}) |
+ public void testMultipleAddMultipleDeleteObservers() throws InterruptedException { |
+ TestingObserver test = new TestingObserver(); |
+ |
+ // Should successfully add the observer the first time. |
+ assertTrue(mFontSizePrefs.addObserver(test)); |
+ // Observer cannot be added again, should return false. |
+ assertFalse(mFontSizePrefs.addObserver(test)); |
+ |
+ // Delete the observer the first time. |
+ assertTrue(mFontSizePrefs.removeObserver(test)); |
+ // Observer cannot be deleted again, should return false. |
+ assertFalse(mFontSizePrefs.removeObserver(test)); |
+ } |
+ |
+ private static class TestingObserver implements FontSizePrefs.Observer { |
+ private float mFontSize; |
+ private boolean mForceEnableZoom; |
+ private boolean mUserSetForceEnableZoom; |
+ |
+ public TestingObserver() { |
+ mFontSize = 1; |
+ mForceEnableZoom = false; |
+ mUserSetForceEnableZoom = false; |
+ } |
+ |
+ public float getFontScaleFactor() { |
+ return mFontSize; |
+ } |
+ |
+ public void onChangeFontSize(float font) { |
+ mFontSize = font; |
+ } |
+ |
+ public boolean getForceEnableZoom() { |
+ return mForceEnableZoom; |
+ } |
+ |
+ public void onChangeForceEnableZoom(boolean enabled) { |
+ mForceEnableZoom = enabled; |
+ } |
+ |
+ public void onChangeUserSetForceEnableZoom(boolean enabled) { |
+ mUserSetForceEnableZoom = enabled; |
+ } |
+ |
+ public boolean getUserSetForceEnableZoom() { |
+ return mUserSetForceEnableZoom; |
+ } |
+ } |
+ |
+ private void getFontSizePrefs(final Context context) { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ public void run() { |
+ mFontSizePrefs = FontSizePrefs.getInstance(context); |
+ } |
+ }); |
+ } |
+ |
+ private void setFontScale(final float fontsize) { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ public void run() { |
+ mFontSizePrefs.setFontScaleFactor(fontsize); |
+ } |
+ }); |
+ } |
+ |
+ private float getFontScale() { |
+ return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Float>() { |
+ @Override |
+ public Float call() { |
+ return mFontSizePrefs.getFontScaleFactor(); |
+ } |
+ }); |
+ } |
+ |
+ private void setForceEnableZoom(final boolean enabled) { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ public void run() { |
+ mFontSizePrefs.setForceEnableZoom(enabled); |
+ } |
+ }); |
+ } |
+ |
+ private boolean getForceEnableZoom() { |
+ return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Boolean>() { |
+ @Override |
+ public Boolean call() { |
+ return mFontSizePrefs.getForceEnableZoom(); |
+ } |
+ }); |
+ } |
+ |
+ private void setUserSetForceEnableZoom(final boolean enabled) { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ public void run() { |
+ mFontSizePrefs.setUserSetForceEnableZoom(enabled); |
+ } |
+ }); |
+ } |
+} |