Chromium Code Reviews| Index: components/offline_items_collection/core/android/java/src/org/chromium/components/offline_items_collection/OfflineContentAggregatorBridge.java |
| diff --git a/components/offline_items_collection/core/android/java/src/org/chromium/components/offline_items_collection/OfflineContentAggregatorBridge.java b/components/offline_items_collection/core/android/java/src/org/chromium/components/offline_items_collection/OfflineContentAggregatorBridge.java |
| index f14368f8158cde1e83e3283a11069bce6132581d..9e30a825265221ac8c3855019d95e6c54083dd0b 100644 |
| --- a/components/offline_items_collection/core/android/java/src/org/chromium/components/offline_items_collection/OfflineContentAggregatorBridge.java |
| +++ b/components/offline_items_collection/core/android/java/src/org/chromium/components/offline_items_collection/OfflineContentAggregatorBridge.java |
| @@ -4,9 +4,12 @@ |
| package org.chromium.components.offline_items_collection; |
| +import android.os.Handler; |
| + |
| import org.chromium.base.ObserverList; |
| import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.base.annotations.JNINamespace; |
| +import org.chromium.components.offline_items_collection.OfflineContentProvider; |
| import java.util.ArrayList; |
| @@ -18,6 +21,8 @@ import java.util.ArrayList; |
| */ |
| @JNINamespace("offline_items_collection::android") |
| public class OfflineContentAggregatorBridge implements OfflineContentProvider { |
| + private final Handler mHandler = new Handler(); |
| + |
| private long mNativeOfflineContentAggregatorBridge; |
| private ObserverList<OfflineContentProvider.Observer> mObservers; |
| private boolean mItemsAvailable; |
| @@ -82,8 +87,23 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider { |
| } |
| @Override |
| - public void addObserver(OfflineContentProvider.Observer observer) { |
| + public void getVisualsForItem(ContentId id, VisualsCallback callback) { |
| + nativeGetVisualsForItem( |
| + mNativeOfflineContentAggregatorBridge, id.namespace, id.id, callback); |
| + } |
| + |
| + @Override |
| + public void addObserver(final OfflineContentProvider.Observer observer) { |
| mObservers.addObserver(observer); |
| + |
| + if (areItemsAvailable()) { |
|
nyquist
2017/04/13 05:08:24
I don't feel strongly, but we often early out inst
David Trainor- moved to gerrit
2017/04/13 07:20:23
Ah you're right. Yeah it's my old habits of tryin
|
| + mHandler.post(new Runnable() { |
| + @Override |
| + public void run() { |
| + notifyObserverOfItemsReady(observer); |
| + } |
| + }); |
| + } |
| } |
| @Override |
| @@ -91,6 +111,11 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider { |
| mObservers.removeObserver(observer); |
| } |
| + private void notifyObserverOfItemsReady(Observer observer) { |
| + if (!mObservers.hasObserver(observer)) return; |
| + observer.onItemsAvailable(); |
| + } |
| + |
| // Methods called from C++ via JNI. |
| @CalledByNative |
| private void onItemsAvailable() { |
| @@ -126,6 +151,12 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider { |
| } |
| } |
| + @CalledByNative |
| + private static void onVisualsAvailable(OfflineContentProvider.VisualsCallback callback, |
| + String nameSpace, String id, OfflineItemVisuals visuals) { |
| + callback.onVisualsAvailable(new ContentId(nameSpace, id), visuals); |
| + } |
| + |
| /** |
| * Called when the C++ OfflineContentAggregatorBridge is destroyed. This tears down the Java |
| * component of the JNI bridge so that this class, which may live due to other references, no |
| @@ -163,4 +194,6 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider { |
| long nativeOfflineContentAggregatorBridge, String nameSpace, String id); |
| private native ArrayList<OfflineItem> nativeGetAllItems( |
| long nativeOfflineContentAggregatorBridge); |
| + private native void nativeGetVisualsForItem(long nativeOfflineContentAggregatorBridge, |
| + String nameSpace, String id, OfflineContentProvider.VisualsCallback callback); |
| } |