Chromium Code Reviews| Index: chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java |
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java |
| index 60e87b154f6646cd6d780cdbaf3964edb601ef90..48a3bea8df1506ade45072c99a9c0155a7029e4c 100644 |
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java |
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java |
| @@ -7,36 +7,113 @@ package org.chromium.chrome.browser.dom_distiller; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.test.UiThreadTest; |
| +import org.chromium.base.ThreadUtils; |
| import org.chromium.base.test.util.Feature; |
| import org.chromium.chrome.browser.profiles.Profile; |
| import org.chromium.chrome.shell.ChromeShellTestBase; |
| import org.chromium.components.dom_distiller.core.DistilledPagePrefs; |
| import org.chromium.components.dom_distiller.core.DomDistillerService; |
| import org.chromium.components.dom_distiller.core.Theme; |
| +import org.chromium.content.browser.test.util.UiUtils; |
| /** |
| - * Test class for {@link DistilledPagePrefs}. |
| + * Test class for {@link mDistilledPagePrefs}. |
|
robliao
2014/07/21 21:05:09
This should be DistilledPagePrefs.
sunangel
2014/07/21 22:43:55
Done.
|
| */ |
| public class DistilledPagePrefsTest extends ChromeShellTestBase { |
| + private volatile DistilledPagePrefs mDistilledPagePrefs; |
|
robliao
2014/07/21 21:05:08
Does this need to be volatile?
sunangel
2014/07/21 22:43:54
I think it does because we switch between off and
robliao
2014/07/21 23:08:36
The value of this variable isn't being modified. v
sunangel
2014/07/22 01:32:38
Done.
|
| + |
| + @Override |
| + public void setUp() throws Exception { |
| + super.setUp(); |
| + startChromeBrowserProcessSync(getInstrumentation().getTargetContext()); |
| + getDistilledPagePrefs(); |
| + } |
| + |
| + private void getDistilledPagePrefs() { |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + public void run() { |
| + DomDistillerService domDistillerService = DomDistillerServiceFactory. |
| + getForProfile(Profile.getLastUsedProfile()); |
| + assertNotNull(domDistillerService); |
|
robliao
2014/07/21 21:05:08
No need to assert not null here. You'll crash at t
sunangel
2014/07/21 22:43:55
I also took out the assertNotNull for DistilledPag
|
| + mDistilledPagePrefs = domDistillerService.getDistilledPagePrefs(); |
| + assertNotNull(mDistilledPagePrefs); |
| + } |
| + }); |
| + } |
| + |
| @SmallTest |
| @UiThreadTest |
| @Feature({"DomDistiller"}) |
| public void testGetAndSetPrefs() throws InterruptedException { |
| - startChromeBrowserProcessSync(getInstrumentation().getTargetContext()); |
| - DomDistillerService service = DomDistillerServiceFactory. |
| - getForProfile(Profile.getLastUsedProfile()); |
| - assertNotNull(service); |
| - DistilledPagePrefs distilledPagePrefs = service.getDistilledPagePrefs(); |
| - assertNotNull(distilledPagePrefs); |
| - // Check default theme. |
| - assertEquals(distilledPagePrefs.getTheme(), Theme.LIGHT); |
| + // Check the default theme. |
| + assertEquals(mDistilledPagePrefs.getTheme(), Theme.LIGHT); |
| // Check that theme can be correctly set. |
| - distilledPagePrefs.setTheme(Theme.DARK); |
| - assertEquals(Theme.DARK, distilledPagePrefs.getTheme()); |
| - distilledPagePrefs.setTheme(Theme.LIGHT); |
| - assertEquals(Theme.LIGHT, distilledPagePrefs.getTheme()); |
| - distilledPagePrefs.setTheme(Theme.SEPIA); |
| - assertEquals(Theme.SEPIA, distilledPagePrefs.getTheme()); |
| + mDistilledPagePrefs.setTheme(Theme.DARK); |
| + assertEquals(Theme.DARK, mDistilledPagePrefs.getTheme()); |
| + mDistilledPagePrefs.setTheme(Theme.LIGHT); |
| + assertEquals(Theme.LIGHT, mDistilledPagePrefs.getTheme()); |
| + mDistilledPagePrefs.setTheme(Theme.SEPIA); |
| + assertEquals(Theme.SEPIA, mDistilledPagePrefs.getTheme()); |
| + } |
| + |
| + public void setTheme(final Theme theme) { |
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| + public void run() { |
| + mDistilledPagePrefs.setTheme(theme); |
| + } |
| + }); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"DomDistiller"}) |
| + public void testSingleObserver() throws InterruptedException { |
| + final TestingObserver testObserver = new TestingObserver(mDistilledPagePrefs); |
| + assertNotNull(testObserver); |
|
robliao
2014/07/21 21:05:09
Java "new" should never return null, so it's not n
sunangel
2014/07/21 22:43:55
Done.
|
| + mDistilledPagePrefs.addObserver(testObserver); |
| + setTheme(Theme.DARK); |
| + UiUtils.settleDownUI(getInstrumentation()); |
| + // Check that testObserver's theme has been updated, |
| + assertEquals(Theme.DARK, testObserver.getTheme()); |
| + mDistilledPagePrefs.removeObserver(testObserver); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"DomDistiller"}) |
| + public void testMultipleObservers() throws InterruptedException { |
| + final TestingObserver testObserver = new TestingObserver(mDistilledPagePrefs); |
| + assertNotNull(testObserver); |
| + mDistilledPagePrefs.addObserver(testObserver); |
| + final TestingObserver testObserverTwo = new TestingObserver(mDistilledPagePrefs); |
|
robliao
2014/07/21 21:05:09
testObserver2 is also okay. You can also call the
sunangel
2014/07/21 22:43:54
Done.
|
| + assertNotNull(testObserverTwo); |
| + mDistilledPagePrefs.addObserver(testObserverTwo); |
| + setTheme(Theme.SEPIA); |
| + UiUtils.settleDownUI(getInstrumentation()); |
| + assertEquals(Theme.SEPIA, testObserver.getTheme()); |
| + assertEquals(Theme.SEPIA, testObserverTwo.getTheme()); |
| + mDistilledPagePrefs.removeObserver(testObserver); |
| + setTheme(Theme.DARK); |
| + UiUtils.settleDownUI(getInstrumentation()); |
| + // Check that testObserver's theme is not changed but testObserverTwo's |
| + // is. |
| + assertEquals(Theme.SEPIA, testObserver.getTheme()); |
| + assertEquals(Theme.DARK, testObserverTwo.getTheme()); |
| + mDistilledPagePrefs.removeObserver(testObserverTwo); |
| + } |
| + |
| + private class TestingObserver implements DistilledPagePrefs.Observer { |
| + private volatile Theme mTheme; |
| + |
| + public TestingObserver(DistilledPagePrefs distilledPagePrefs) { |
| + mTheme = distilledPagePrefs.getTheme(); |
| + } |
| + |
| + public Theme getTheme() { |
| + return mTheme; |
| + } |
| + |
| + public void onChangeTheme(Theme theme) { |
| + mTheme = theme; |
| + } |
| } |
| } |