Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(276)

Unified Diff: components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java

Issue 403323005: Observer Support for DistilledPagePrefs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added removeObserver after test is done, styling Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698