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..6ee7489fad7f0e80d78d3e3e6137dfbf13752b8c 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,51 @@ import org.chromium.base.JNINamespace; |
| public final class DistilledPagePrefs { |
| private final long mDistilledPagePrefsAndroid; |
| + private HashMap<Observer, DistilledPagePrefsObserverWrapper> observerMap; |
|
nyquist
2014/07/22 22:51:36
private final and also member names should start w
sunangel
2014/07/23 16:22:03
Done.
|
| + |
| + /** |
| + * 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 wrappedObserver = |
| + new DistilledPagePrefsObserverWrapper(obs); |
| + nativeAddObserver(mDistilledPagePrefsAndroid, wrappedObserver.getNativePtr()); |
| + observerMap.put(obs, wrappedObserver); |
| + } |
| + |
| + public void removeObserver(Observer obs) { |
| + long nativeObserverPtr = observerMap.get(obs).getNativePtr(); |
|
nyquist
2014/07/22 22:51:37
What happens if I call this method with
prefs.rem
sunangel
2014/07/23 16:22:03
Done.
|
| + observerMap.remove(obs); |
| + nativeRemoveObserver(mDistilledPagePrefsAndroid, nativeObserverPtr); |
|
nyquist
2014/07/22 22:51:36
This seems to be leaking the native object.
sunangel
2014/07/23 16:22:03
Done.
|
| } |
| - // 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)); |
|
nyquist
2014/07/22 22:51:37
Nit: I think this can be on one line. Remember 100
sunangel
2014/07/23 16:22:03
Done.
|
| } |
| 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); |
| } |