Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 int getOfflineGroupHeaderResId() { | |
| 211 return R.layout.offline_download_header; | |
|
Theresa
2017/02/03 19:53:06
Since this is only called in one place I think it'
shaktisahu
2017/02/04 18:57:43
Done.
| |
| 212 } | |
| 213 | |
| 214 private static class OfflineGroupHeaderViewHolder extends RecyclerView.ViewH older { | |
| 215 private OfflineGroupHeaderView mView; | |
| 216 | |
| 217 public OfflineGroupHeaderViewHolder(View view) { | |
| 218 super(view); | |
| 219 mView = (OfflineGroupHeaderView) view; | |
| 220 } | |
| 221 | |
| 222 public OfflineGroupHeaderView getView() { | |
| 223 return mView; | |
| 224 } | |
| 225 } | |
| 226 | |
| 227 @Override | |
| 228 public final RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, in t viewType) { | |
| 229 if (viewType == TYPE_SUGGESTED_OFFLINE_PAGES_HEADER) { | |
| 230 return new OfflineGroupHeaderViewHolder( | |
| 231 LayoutInflater.from(parent.getContext()) | |
| 232 .inflate(getOfflineGroupHeaderResId(), parent, false )); | |
| 233 } else { | |
| 234 return super.onCreateViewHolder(parent, viewType); | |
| 235 } | |
| 236 } | |
| 237 | |
| 238 @Override | |
| 239 public final void onBindViewHolder(RecyclerView.ViewHolder holder, int posit ion) { | |
| 240 if (holder instanceof OfflineGroupHeaderViewHolder) { | |
| 241 Pair<ItemGroup, Integer> pair = getGroupAt(position); | |
| 242 DownloadItemGroup group = (DownloadItemGroup) pair.first; | |
| 243 OfflineGroupHeaderView offlineView = ((OfflineGroupHeaderViewHolder) holder).getView(); | |
| 244 offlineView.bindGroupAndAdapter(group, this); | |
| 245 offlineView.updateTitleText(group.getSuggestedOfflinePageCount()); | |
| 246 } else { | |
| 247 super.onBindViewHolder(holder, position); | |
| 248 } | |
| 249 } | |
| 250 | |
| 207 @Override | 251 @Override |
| 208 public ViewHolder createViewHolder(ViewGroup parent) { | 252 public ViewHolder createViewHolder(ViewGroup parent) { |
| 209 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( | 253 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( |
| 210 R.layout.download_item_view, parent, false); | 254 R.layout.download_item_view, parent, false); |
| 211 v.setSelectionDelegate(getSelectionDelegate()); | 255 v.setSelectionDelegate(getSelectionDelegate()); |
| 212 mViews.add(v); | 256 mViews.add(v); |
| 213 return new DownloadHistoryItemViewHolder(v); | 257 return new DownloadHistoryItemViewHolder(v); |
| 214 } | 258 } |
| 215 | 259 |
| 216 @Override | 260 @Override |
| 217 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { | 261 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { |
| 218 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; | 262 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; |
| 219 | 263 |
| 220 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; | 264 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; |
| 221 holder.getItemView().displayItem(mBackendProvider, item); | 265 holder.getItemView().displayItem(mBackendProvider, item); |
| 222 } | 266 } |
| 223 | 267 |
| 268 public void expandSuggestedPagesHeader(DownloadItemGroup group) { | |
| 269 group.setIsSuggestedOfflinePagesSectionExpanded(true); | |
| 270 computeItemCount(); | |
| 271 setGroupPositions(); | |
| 272 notifyDataSetChanged(); | |
| 273 } | |
| 274 | |
| 275 public void collapseSuggestedPagesHeader(DownloadItemGroup group) { | |
| 276 group.setIsSuggestedOfflinePagesSectionExpanded(false); | |
| 277 computeItemCount(); | |
| 278 setGroupPositions(); | |
| 279 notifyDataSetChanged(); | |
| 280 } | |
| 281 | |
| 282 @Override | |
| 283 protected ItemGroup createGroup(long timeStamp) { | |
| 284 ItemGroup group = new DownloadItemGroup(timeStamp); | |
| 285 return group; | |
| 286 } | |
| 287 | |
| 224 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ | 288 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ |
| 225 public void onDownloadItemCreated(DownloadItem item) { | 289 public void onDownloadItemCreated(DownloadItem item) { |
| 226 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); | 290 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); |
| 227 if (isOffTheRecord && !mShowOffTheRecord) return; | 291 if (isOffTheRecord && !mShowOffTheRecord) return; |
| 228 | 292 |
| 229 BackendItems list = getDownloadItemList(isOffTheRecord); | 293 BackendItems list = getDownloadItemList(isOffTheRecord); |
| 230 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; | 294 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; |
| 231 | 295 |
| 232 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); | 296 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); |
| 233 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); | 297 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 476 itemCounts[DownloadFilter.FILTER_VIDEO]); | 540 itemCounts[DownloadFilter.FILTER_VIDEO]); |
| 477 } | 541 } |
| 478 | 542 |
| 479 private void recordTotalDownloadCountHistogram() { | 543 private void recordTotalDownloadCountHistogram() { |
| 480 // The total count intentionally leaves out incognito downloads. This sh ould be revisited | 544 // 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. | 545 // if/when incognito downloads are persistently available in downloads h ome. |
| 482 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", | 546 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", |
| 483 mRegularDownloadItems.size() + mOfflinePageItems.size()); | 547 mRegularDownloadItems.size() + mOfflinePageItems.size()); |
| 484 } | 548 } |
| 485 } | 549 } |
| OLD | NEW |