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

Unified Diff: components/offline_items_collection/core/android/java/src/org/chromium/components/offline_items_collection/OfflineContentAggregatorBridge.java

Issue 2811803006: Add support for pulling icons for OfflineItems (Closed)
Patch Set: More findbugs Created 3 years, 8 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/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..8c3a57ed42be530d5ef4925719c68ff6a3344485 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,6 +4,8 @@
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;
@@ -18,6 +20,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 +86,22 @@ 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()) return;
+
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ notifyObserverOfItemsReady(observer);
+ }
+ });
}
@Override
@@ -91,6 +109,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 +149,12 @@ public class OfflineContentAggregatorBridge implements OfflineContentProvider {
}
}
+ @CalledByNative
+ private static void onVisualsAvailable(
+ 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 +192,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, VisualsCallback callback);
}

Powered by Google App Engine
This is Rietveld 408576698