| Index: chrome/android/java/src/org/chromium/chrome/browser/download/ui/DeletedFileTracker.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DeletedFileTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DeletedFileTracker.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..194c249734d61dd727e82457f946378254dd5495
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DeletedFileTracker.java
|
| @@ -0,0 +1,47 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.download.ui;
|
| +
|
| +import java.util.HashSet;
|
| +import java.util.Set;
|
| +import java.util.concurrent.atomic.AtomicInteger;
|
| +
|
| +/**
|
| + * Tracks items that have been removed from downloads history because they were deleted externally.
|
| + * For use solely by the {@link DownloadHistoryAdapter}.
|
| + *
|
| + * TODO(dfalcantara): Make this class unnecessary.
|
| + */
|
| +class DeletedFileTracker {
|
| + private final Set<String> mRegularItems = new HashSet<>();
|
| + private final Set<String> mIncognitoItems = new HashSet<>();
|
| + private final AtomicInteger mNumInstances = new AtomicInteger();
|
| +
|
| + /** Called when a new {@link DownloadHistoryAdapter} is tracking deleted downloads. */
|
| + void incrementInstanceCount() {
|
| + mNumInstances.getAndIncrement();
|
| + }
|
| +
|
| + /** Called when a {@link DownloadHistoryAdapter} is no longer traking deleted downloads. */
|
| + void decrementInstanceCount() {
|
| + if (mNumInstances.decrementAndGet() == 0) {
|
| + // If there is no interest, clear out the maps so that they stop taking up space.
|
| + mRegularItems.clear();
|
| + mIncognitoItems.clear();
|
| + }
|
| + }
|
| +
|
| + /** Add a new item to the tracker. */
|
| + void add(String id, boolean isOffTheRecord) {
|
| + Set<String> items = isOffTheRecord ? mIncognitoItems : mRegularItems;
|
| + items.add(id);
|
| + }
|
| +
|
| + /** Checks if an item is in the tracker. */
|
| + boolean contains(String id, boolean isOffTheRecord) {
|
| + Set<String> items = isOffTheRecord ? mIncognitoItems : mRegularItems;
|
| + return items.contains(id);
|
| + }
|
| +}
|
|
|