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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java

Issue 2670083002: [Download Home] Displaying offline page bundle per day (Closed)
Patch Set: Theresa's comments Created 3 years, 10 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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.chrome.browser.download.ui; 5 package org.chromium.chrome.browser.download.ui;
6 6
7 import android.content.ComponentName; 7 import android.content.ComponentName;
8 import android.support.v7.widget.RecyclerView;
8 import android.support.v7.widget.RecyclerView.ViewHolder; 9 import android.support.v7.widget.RecyclerView.ViewHolder;
9 import android.text.TextUtils; 10 import android.text.TextUtils;
11 import android.util.Pair;
10 import android.view.LayoutInflater; 12 import android.view.LayoutInflater;
13 import android.view.View;
11 import android.view.ViewGroup; 14 import android.view.ViewGroup;
12 15
13 import org.chromium.base.ObserverList; 16 import org.chromium.base.ObserverList;
14 import org.chromium.base.metrics.RecordHistogram; 17 import org.chromium.base.metrics.RecordHistogram;
15 import org.chromium.base.metrics.RecordUserAction; 18 import org.chromium.base.metrics.RecordUserAction;
16 import org.chromium.chrome.R; 19 import org.chromium.chrome.R;
17 import org.chromium.chrome.browser.download.DownloadItem; 20 import org.chromium.chrome.browser.download.DownloadItem;
18 import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper; 21 import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper;
19 import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate; 22 import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate;
20 import org.chromium.chrome.browser.download.ui.BackendProvider.OfflinePageDelega te; 23 import org.chromium.chrome.browser.download.ui.BackendProvider.OfflinePageDelega te;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 totalSize += mIncognitoDownloadItems.getTotalBytes(); 200 totalSize += mIncognitoDownloadItems.getTotalBytes();
198 totalSize += mOfflinePageItems.getTotalBytes(); 201 totalSize += mOfflinePageItems.getTotalBytes();
199 return totalSize; 202 return totalSize;
200 } 203 }
201 204
202 @Override 205 @Override
203 protected int getTimedItemViewResId() { 206 protected int getTimedItemViewResId() {
204 return R.layout.date_view; 207 return R.layout.date_view;
205 } 208 }
206 209
210 private static class OfflineGroupHeaderViewHolder extends RecyclerView.ViewH older {
211 private OfflineGroupHeaderView mView;
212
213 public OfflineGroupHeaderViewHolder(View view) {
214 super(view);
215 mView = (OfflineGroupHeaderView) view;
216 }
217
218 public OfflineGroupHeaderView getView() {
219 return mView;
220 }
221 }
222
223 @Override
224 public final RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, in t viewType) {
225 if (viewType == TYPE_SUBSECTION_HEADER) {
226 return new OfflineGroupHeaderViewHolder(
Theresa 2017/02/10 00:55:12 For consistency with how we create headers, DateDi
shaktisahu 2017/02/10 21:30:24 Good idea! Thanks.
227 LayoutInflater.from(parent.getContext())
228 .inflate(R.layout.offline_download_header, parent, f alse));
229 } else {
230 return super.onCreateViewHolder(parent, viewType);
231 }
232 }
233
234 @Override
235 public final void onBindViewHolder(RecyclerView.ViewHolder holder, int posit ion) {
236 if (holder instanceof OfflineGroupHeaderViewHolder) {
237 Pair<ItemGroup, Integer> pair = getGroupAt(position);
238 DownloadItemGroup group = (DownloadItemGroup) pair.first;
239 OfflineGroupHeaderView offlineHeader =
240 ((OfflineGroupHeaderViewHolder) holder).getView();
241 offlineHeader.bindGroupAndAdapter(group, this);
Theresa 2017/02/10 00:55:12 The adapter can be set when the OfflineGroupHeader
shaktisahu 2017/02/10 21:30:24 Done.
242 } else {
243 super.onBindViewHolder(holder, position);
244 }
245 }
246
207 @Override 247 @Override
208 public ViewHolder createViewHolder(ViewGroup parent) { 248 public ViewHolder createViewHolder(ViewGroup parent) {
209 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( 249 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate(
210 R.layout.download_item_view, parent, false); 250 R.layout.download_item_view, parent, false);
211 v.setSelectionDelegate(getSelectionDelegate()); 251 v.setSelectionDelegate(getSelectionDelegate());
212 mViews.add(v); 252 mViews.add(v);
213 return new DownloadHistoryItemViewHolder(v); 253 return new DownloadHistoryItemViewHolder(v);
214 } 254 }
215 255
216 @Override 256 @Override
217 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { 257 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) {
218 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; 258 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem;
219 259
220 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; 260 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent;
221 holder.getItemView().displayItem(mBackendProvider, item); 261 holder.getItemView().displayItem(mBackendProvider, item);
222 } 262 }
223 263
264 public void expandSuggestedPagesHeader(DownloadItemGroup group) {
gone 2017/02/10 02:31:44 1) javadocs for public methods 2) This is basicall
shaktisahu 2017/02/10 21:30:24 Done. Thanks!
265 group.setIsSuggestedOfflinePagesSectionExpanded(true);
266 computeItemCount();
267 setGroupPositions();
268 notifyDataSetChanged();
269 }
270
271 public void collapseSuggestedPagesHeader(DownloadItemGroup group) {
272 group.setIsSuggestedOfflinePagesSectionExpanded(false);
273 computeItemCount();
274 setGroupPositions();
275 notifyDataSetChanged();
276 }
277
278 @Override
279 protected ItemGroup createGroup(long timeStamp) {
280 ItemGroup group = new DownloadItemGroup(timeStamp);
281 return group;
282 }
283
224 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ 284 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */
225 public void onDownloadItemCreated(DownloadItem item) { 285 public void onDownloadItemCreated(DownloadItem item) {
226 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); 286 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord();
227 if (isOffTheRecord && !mShowOffTheRecord) return; 287 if (isOffTheRecord && !mShowOffTheRecord) return;
228 288
229 BackendItems list = getDownloadItemList(isOffTheRecord); 289 BackendItems list = getDownloadItemList(isOffTheRecord);
230 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; 290 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX;
231 291
232 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); 292 DownloadItemWrapper wrapper = createDownloadItemWrapper(item);
233 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); 293 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper);
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 itemCounts[DownloadFilter.FILTER_VIDEO]); 536 itemCounts[DownloadFilter.FILTER_VIDEO]);
477 } 537 }
478 538
479 private void recordTotalDownloadCountHistogram() { 539 private void recordTotalDownloadCountHistogram() {
480 // The total count intentionally leaves out incognito downloads. This sh ould be revisited 540 // The total count intentionally leaves out incognito downloads. This sh ould be revisited
481 // if/when incognito downloads are persistently available in downloads h ome. 541 // if/when incognito downloads are persistently available in downloads h ome.
482 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", 542 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total",
483 mRegularDownloadItems.size() + mOfflinePageItems.size()); 543 mRegularDownloadItems.size() + mOfflinePageItems.size());
484 } 544 }
485 } 545 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698