| 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..d69d4fb8adaaa486d85fe3872f551ad39c4dfd74 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
|
| @@ -4,7 +4,12 @@
|
|
|
| package org.chromium.components.dom_distiller.core;
|
|
|
| +import org.chromium.base.CalledByNative;
|
| import org.chromium.base.JNINamespace;
|
| +import org.chromium.base.NativeCall;
|
| +
|
| +import java.util.HashMap;
|
| +import java.util.Map;
|
|
|
| /**
|
| * Wrapper for the dom_distiller::DistilledPagePrefs.
|
| @@ -13,25 +18,85 @@ import org.chromium.base.JNINamespace;
|
| public final class DistilledPagePrefs {
|
|
|
| private final long mDistilledPagePrefsAndroid;
|
| + private Map<Observer, DistilledPagePrefsObserverWrapper> mObserverMap;
|
| +
|
| + /**
|
| + * Observer interface for observing DistilledPagePrefs changes.
|
| + */
|
| + public interface Observer {
|
| + void onChangeTheme(Theme theme);
|
| + }
|
| +
|
| + /**
|
| + * Wrapper for dom_distiller::android::DistilledPagePrefsObserverAndroid.
|
| + */
|
| + private static class DistilledPagePrefsObserverWrapper {
|
| + private final Observer mDistilledPagePrefsObserver;
|
| + private final long mNativeDistilledPagePrefsObserverAndroidPtr;
|
| +
|
| + public DistilledPagePrefsObserverWrapper(Observer observer) {
|
| + mNativeDistilledPagePrefsObserverAndroidPtr = nativeInitObserverAndroid();
|
| + mDistilledPagePrefsObserver = observer;
|
| + }
|
| +
|
| + @CalledByNative("DistilledPagePrefsObserverWrapper")
|
| + private void onChangeTheme(int theme) {
|
| + mDistilledPagePrefsObserver.onChangeTheme(Theme.getThemeForValue(theme));
|
| + }
|
| +
|
| + public void destroy() {
|
| + nativeDestroyObserverAndroid(mNativeDistilledPagePrefsObserverAndroidPtr);
|
| + }
|
| +
|
| + public long getNativePtr() {
|
| + return mNativeDistilledPagePrefsObserverAndroidPtr;
|
| + }
|
| +
|
| + @NativeCall("DistilledPagePrefsObserverWrapper")
|
| + private native long nativeInitObserverAndroid();
|
| +
|
| + @NativeCall("DistilledPagePrefsObserverWrapper")
|
| + private native void nativeDestroyObserverAndroid(
|
| + long nativeDistilledPagePrefsObserverAndroid);
|
| + }
|
|
|
| DistilledPagePrefs(long distilledPagePrefsPtr) {
|
| mDistilledPagePrefsAndroid = nativeInit(distilledPagePrefsPtr);
|
| + mObserverMap = new HashMap<Observer, DistilledPagePrefsObserverWrapper>();
|
| + }
|
| +
|
| + public void addObserver(Observer obs) {
|
| + DistilledPagePrefsObserverWrapper wrappedObserver =
|
| + new DistilledPagePrefsObserverWrapper(obs);
|
| + nativeAddObserver(mDistilledPagePrefsAndroid, wrappedObserver.getNativePtr());
|
| + mObserverMap.put(obs, wrappedObserver);
|
| + }
|
| +
|
| + public void removeObserver(Observer obs) {
|
| + DistilledPagePrefsObserverWrapper wrappedObserver = mObserverMap.remove(obs);
|
| + if (wrappedObserver != null) {
|
| + nativeRemoveObserver(mDistilledPagePrefsAndroid, wrappedObserver.getNativePtr());
|
| + wrappedObserver.destroy();
|
| + }
|
| }
|
|
|
| - // 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));
|
| + return Theme.getThemeForValue(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);
|
| }
|
|
|