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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.components.offline_items_collection; 5 package org.chromium.components.offline_items_collection;
6 6
7 import android.os.Handler;
8
7 import org.chromium.base.ObserverList; 9 import org.chromium.base.ObserverList;
8 import org.chromium.base.annotations.CalledByNative; 10 import org.chromium.base.annotations.CalledByNative;
9 import org.chromium.base.annotations.JNINamespace; 11 import org.chromium.base.annotations.JNINamespace;
10 12
11 import java.util.ArrayList; 13 import java.util.ArrayList;
12 14
13 /** 15 /**
14 * A helper class responsible for exposing the C++ OfflineContentAggregator 16 * A helper class responsible for exposing the C++ OfflineContentAggregator
15 * (components/offline_items_collection/core/offline_content_aggregator.h) class to Java. This 17 * (components/offline_items_collection/core/offline_content_aggregator.h) class to Java. This
16 * class is created and owned by it's C++ counterpart OfflineContentAggregatorBr idge 18 * class is created and owned by it's C++ counterpart OfflineContentAggregatorBr idge
17 * (components/offline_items_collection/core/android/offline_content_aggregator_ bridge.h). 19 * (components/offline_items_collection/core/android/offline_content_aggregator_ bridge.h).
18 */ 20 */
19 @JNINamespace("offline_items_collection::android") 21 @JNINamespace("offline_items_collection::android")
20 public class OfflineContentAggregatorBridge implements OfflineContentProvider { 22 public class OfflineContentAggregatorBridge implements OfflineContentProvider {
23 private final Handler mHandler = new Handler();
24
21 private long mNativeOfflineContentAggregatorBridge; 25 private long mNativeOfflineContentAggregatorBridge;
22 private ObserverList<OfflineContentProvider.Observer> mObservers; 26 private ObserverList<OfflineContentProvider.Observer> mObservers;
23 private boolean mItemsAvailable; 27 private boolean mItemsAvailable;
24 28
25 /** 29 /**
26 * A private constructor meant to be called by the C++ OfflineContentAggrega torBridge. 30 * A private constructor meant to be called by the C++ OfflineContentAggrega torBridge.
27 * @param nativeOfflineContentAggregatorBridge A C++ pointer to the 31 * @param nativeOfflineContentAggregatorBridge A C++ pointer to the
28 * OfflineContentAggregatorBridge. 32 * OfflineContentAggregatorBridge.
29 */ 33 */
30 private OfflineContentAggregatorBridge(long nativeOfflineContentAggregatorBr idge) { 34 private OfflineContentAggregatorBridge(long nativeOfflineContentAggregatorBr idge) {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 return nativeGetItemById(mNativeOfflineContentAggregatorBridge, id.names pace, id.id); 79 return nativeGetItemById(mNativeOfflineContentAggregatorBridge, id.names pace, id.id);
76 } 80 }
77 81
78 @Override 82 @Override
79 public ArrayList<OfflineItem> getAllItems() { 83 public ArrayList<OfflineItem> getAllItems() {
80 if (mNativeOfflineContentAggregatorBridge == 0) return null; 84 if (mNativeOfflineContentAggregatorBridge == 0) return null;
81 return nativeGetAllItems(mNativeOfflineContentAggregatorBridge); 85 return nativeGetAllItems(mNativeOfflineContentAggregatorBridge);
82 } 86 }
83 87
84 @Override 88 @Override
85 public void addObserver(OfflineContentProvider.Observer observer) { 89 public void getVisualsForItem(ContentId id, VisualsCallback callback) {
86 mObservers.addObserver(observer); 90 nativeGetVisualsForItem(
91 mNativeOfflineContentAggregatorBridge, id.namespace, id.id, call back);
87 } 92 }
88 93
89 @Override 94 @Override
95 public void addObserver(final OfflineContentProvider.Observer observer) {
96 mObservers.addObserver(observer);
97 if (!areItemsAvailable()) return;
98
99 mHandler.post(new Runnable() {
100 @Override
101 public void run() {
102 notifyObserverOfItemsReady(observer);
103 }
104 });
105 }
106
107 @Override
90 public void removeObserver(OfflineContentProvider.Observer observer) { 108 public void removeObserver(OfflineContentProvider.Observer observer) {
91 mObservers.removeObserver(observer); 109 mObservers.removeObserver(observer);
92 } 110 }
93 111
112 private void notifyObserverOfItemsReady(Observer observer) {
113 if (!mObservers.hasObserver(observer)) return;
114 observer.onItemsAvailable();
115 }
116
94 // Methods called from C++ via JNI. 117 // Methods called from C++ via JNI.
95 @CalledByNative 118 @CalledByNative
96 private void onItemsAvailable() { 119 private void onItemsAvailable() {
97 mItemsAvailable = true; 120 mItemsAvailable = true;
98 121
99 for (Observer observer : mObservers) { 122 for (Observer observer : mObservers) {
100 observer.onItemsAvailable(); 123 observer.onItemsAvailable();
101 } 124 }
102 } 125 }
103 126
(...skipping 15 matching lines...) Expand all
119 } 142 }
120 } 143 }
121 144
122 @CalledByNative 145 @CalledByNative
123 private void onItemUpdated(OfflineItem item) { 146 private void onItemUpdated(OfflineItem item) {
124 for (Observer observer : mObservers) { 147 for (Observer observer : mObservers) {
125 observer.onItemUpdated(item); 148 observer.onItemUpdated(item);
126 } 149 }
127 } 150 }
128 151
152 @CalledByNative
153 private static void onVisualsAvailable(
154 VisualsCallback callback, String nameSpace, String id, OfflineItemVi suals visuals) {
155 callback.onVisualsAvailable(new ContentId(nameSpace, id), visuals);
156 }
157
129 /** 158 /**
130 * Called when the C++ OfflineContentAggregatorBridge is destroyed. This te ars down the Java 159 * Called when the C++ OfflineContentAggregatorBridge is destroyed. This te ars down the Java
131 * component of the JNI bridge so that this class, which may live due to oth er references, no 160 * component of the JNI bridge so that this class, which may live due to oth er references, no
132 * longer attempts to access the C++ side of the bridge. 161 * longer attempts to access the C++ side of the bridge.
133 */ 162 */
134 @CalledByNative 163 @CalledByNative
135 private void onNativeDestroyed() { 164 private void onNativeDestroyed() {
136 mNativeOfflineContentAggregatorBridge = 0; 165 mNativeOfflineContentAggregatorBridge = 0;
137 } 166 }
138 167
(...skipping 17 matching lines...) Expand all
156 private native void nativeCancelDownload( 185 private native void nativeCancelDownload(
157 long nativeOfflineContentAggregatorBridge, String nameSpace, String id); 186 long nativeOfflineContentAggregatorBridge, String nameSpace, String id);
158 private native void nativePauseDownload( 187 private native void nativePauseDownload(
159 long nativeOfflineContentAggregatorBridge, String nameSpace, String id); 188 long nativeOfflineContentAggregatorBridge, String nameSpace, String id);
160 private native void nativeResumeDownload( 189 private native void nativeResumeDownload(
161 long nativeOfflineContentAggregatorBridge, String nameSpace, String id); 190 long nativeOfflineContentAggregatorBridge, String nameSpace, String id);
162 private native OfflineItem nativeGetItemById( 191 private native OfflineItem nativeGetItemById(
163 long nativeOfflineContentAggregatorBridge, String nameSpace, String id); 192 long nativeOfflineContentAggregatorBridge, String nameSpace, String id);
164 private native ArrayList<OfflineItem> nativeGetAllItems( 193 private native ArrayList<OfflineItem> nativeGetAllItems(
165 long nativeOfflineContentAggregatorBridge); 194 long nativeOfflineContentAggregatorBridge);
195 private native void nativeGetVisualsForItem(long nativeOfflineContentAggrega torBridge,
196 String nameSpace, String id, VisualsCallback callback);
166 } 197 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698