Chromium Code Reviews| Index: components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java |
| diff --git a/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java |
| index 3ec91baca8c91ad490fec48100bb72e9609e96e9..c709d9aec9e3fc142b578d26563a851a686d5e66 100644 |
| --- a/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java |
| +++ b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java |
| @@ -6,6 +6,8 @@ package org.chromium.components.dom_distiller.core; |
| import org.chromium.base.JNINamespace; |
| +import java.util.HashMap; |
| + |
| /** |
| * Wrapper for the dom_distiller::DistilledPagePrefs. |
| */ |
| @@ -13,25 +15,49 @@ import org.chromium.base.JNINamespace; |
| public final class DistilledPagePrefs { |
| private final long mDistilledPagePrefsAndroid; |
| + private HashMap<Observer, DistilledPagePrefsObserverWrapper> observerMap; |
| + |
| + /** |
| + * Observer interface for observing DistilledPagePrefs changes. |
| + */ |
| + public interface Observer { |
| + void onChangeTheme(Theme theme); |
| + } |
| DistilledPagePrefs(long distilledPagePrefsPtr) { |
| mDistilledPagePrefsAndroid = nativeInit(distilledPagePrefsPtr); |
| + observerMap = new HashMap<Observer, DistilledPagePrefsObserverWrapper>(); |
| + } |
| + |
| + public void addObserver(Observer obs) { |
| + DistilledPagePrefsObserverWrapper newObs = new DistilledPagePrefsObserverWrapper(obs); |
|
robliao
2014/07/21 21:05:09
Let's call this wrappedObserver.
sunangel
2014/07/21 22:43:55
Done.
|
| + nativeAddObserver(mDistilledPagePrefsAndroid, newObs.getNativePtr()); |
| + observerMap.put(obs, newObs); |
| + } |
| + |
| + public void removeObserver(Observer obs) { |
| + nativeRemoveObserver(mDistilledPagePrefsAndroid, observerMap.get(obs).getNativePtr()); |
|
robliao
2014/07/21 21:05:09
For reverse symmetry, the observerMap should be re
sunangel
2014/07/21 22:43:55
Done.
|
| + observerMap.remove(obs); |
| } |
| - // TODO(sunangel): Add observer support from this Java class to native |
| - // counterpart so UI can be updated across tabs. |
| public void setTheme(Theme theme) { |
| nativeSetTheme(mDistilledPagePrefsAndroid, theme.asNativeEnum()); |
| } |
| public Theme getTheme() { |
| return Theme.getThemeForValue( |
| - nativeGetTheme(mDistilledPagePrefsAndroid)); |
| + nativeGetTheme(mDistilledPagePrefsAndroid)); |
| } |
| private native long nativeInit(long distilledPagePrefPtr); |
| - private native void nativeSetTheme(long nativeDistilledPagePrefsAndroid, |
| - int theme); |
| - private native int nativeGetTheme( |
| - long nativeDistilledPagePrefsAndroid); |
| + |
| + private native void nativeSetTheme(long nativeDistilledPagePrefsAndroid, int theme); |
| + |
| + private native int nativeGetTheme(long nativeDistilledPagePrefsAndroid); |
| + |
| + private native void nativeAddObserver(long nativeDistilledPagePrefsAndroid, |
| + long nativeObserverPtr); |
| + |
| + private native void nativeRemoveObserver(long nativeDistilledPagePrefsAndroid, |
| + long nativeObserverPtr); |
| } |