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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java

Issue 1694863003: Refactor the offline page storage to include client namespace and id. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address changes. Created 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java
index 53951d59b73b55631135f0389d999eb62b2d1b4f..f07bbe85fd454f996d175586c176fe1e57cc4c21 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java
@@ -21,13 +21,16 @@ import org.chromium.components.offlinepages.SavePageResult;
import org.chromium.content_public.browser.WebContents;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
/**
* Access gate to C++ side offline pages functionalities.
*/
@JNINamespace("offline_pages::android")
public final class OfflinePageBridge {
+ public static final String BOOKMARK_NAMESPACE = "bookmark";
private long mNativeOfflinePageBridge;
private boolean mIsNativeOfflinePageModelLoaded;
@@ -85,10 +88,11 @@ public final class OfflinePageBridge {
/**
* Called when an offline page is deleted. This can be called as a result of
+ * TODO(bburns): Switch to offline id/client id
* #checkOfflinePageMetadata().
* @param bookmarkId A bookmark ID of the deleted offline page.
*/
- public void offlinePageDeleted(BookmarkId bookmarkId) {}
+ public void offlinePageDeleted(BookmarkId id) {}
}
private static long getTotalSize(List<OfflinePageItem> offlinePages) {
@@ -222,6 +226,21 @@ public final class OfflinePageBridge {
}
/**
+ * @return A list of all offline ids that match a particular
+ * (namespace, client_id)
+ */
+ public Set<Long> getOfflineIdsForClientId(String clientIdNamespace, String clientId) {
+ assert mIsNativeOfflinePageModelLoaded;
+ long[] offlineIds = nativeGetOfflineIdsForClientId(
+ mNativeOfflinePageBridge, clientIdNamespace, clientId);
+ Set<Long> result = new HashSet<>(offlineIds.length);
+ for (long id : offlineIds) {
+ result.add(id);
+ }
+ return result;
+ }
+
+ /**
* Gets an offline page associated with a provided bookmark ID.
*
* @param bookmarkId Id of the bookmark associated with an offline page.
@@ -229,7 +248,10 @@ public final class OfflinePageBridge {
* exist.
*/
public OfflinePageItem getPageByBookmarkId(BookmarkId bookmarkId) {
- return nativeGetPageByBookmarkId(mNativeOfflinePageBridge, bookmarkId.getId());
+ Set<Long> ids =
+ getOfflineIdsForClientId(BOOKMARK_NAMESPACE, Long.toString(bookmarkId.getId()));
+ Long offlineId = ids.iterator().next();
+ return nativeGetPageByOfflineId(mNativeOfflinePageBridge, offlineId);
}
/**
@@ -276,7 +298,8 @@ public final class OfflinePageBridge {
};
recordFreeSpaceHistograms(
"OfflinePages.SavePage.FreeSpacePercentage", "OfflinePages.SavePage.FreeSpaceMB");
- nativeSavePage(mNativeOfflinePageBridge, callbackWrapper, webContents, bookmarkId.getId());
+ nativeSavePage(mNativeOfflinePageBridge, callbackWrapper, webContents, 0,
+ BOOKMARK_NAMESPACE, Long.toString(bookmarkId.getId()));
}
/**
@@ -286,7 +309,10 @@ public final class OfflinePageBridge {
*/
public void markPageAccessed(BookmarkId bookmarkId) {
assert mIsNativeOfflinePageModelLoaded;
- nativeMarkPageAccessed(mNativeOfflinePageBridge, bookmarkId.getId());
+ Set<Long> ids =
+ getOfflineIdsForClientId(BOOKMARK_NAMESPACE, Long.toString(bookmarkId.getId()));
+ Long offlineId = ids.iterator().next();
+ nativeMarkPageAccessed(mNativeOfflinePageBridge, offlineId);
}
/**
@@ -303,7 +329,10 @@ public final class OfflinePageBridge {
"OfflinePages.DeletePage.FreeSpaceMB");
DeletePageCallback callbackWrapper = wrapCallbackWithHistogramReporting(callback);
- nativeDeletePage(mNativeOfflinePageBridge, callbackWrapper, bookmarkId.getId());
+ Set<Long> ids =
+ getOfflineIdsForClientId(BOOKMARK_NAMESPACE, Long.toString(bookmarkId.getId()));
+ Long offlineId = ids.iterator().next();
+ nativeDeletePage(mNativeOfflinePageBridge, callbackWrapper, offlineId);
}
/**
@@ -315,11 +344,15 @@ public final class OfflinePageBridge {
*/
public void deletePages(List<BookmarkId> bookmarkIds, DeletePageCallback callback) {
assert mIsNativeOfflinePageModelLoaded;
- long[] ids = new long[bookmarkIds.size()];
- for (int i = 0; i < ids.length; i++) {
- ids[i] = bookmarkIds.get(i).getId();
+ List<Long> idList = new ArrayList<>(bookmarkIds.size());
+ for (int i = 0; i < bookmarkIds.size(); i++) {
+ idList.addAll(getOfflineIdsForClientId(
+ BOOKMARK_NAMESPACE, Long.toString(bookmarkIds.get(i).getId())));
+ }
+ long[] ids = new long[idList.size()];
+ for (int i = 0; i < idList.size(); i++) {
+ ids[i] = idList.get(i);
}
-
recordFreeSpaceHistograms("OfflinePages.DeletePage.FreeSpacePercentage",
"OfflinePages.DeletePage.FreeSpaceMB");
@@ -407,8 +440,8 @@ public final class OfflinePageBridge {
}
@CalledByNative
- private void offlinePageDeleted(long bookmarkId) {
- BookmarkId id = new BookmarkId(bookmarkId, BookmarkType.NORMAL);
+ private void offlinePageDeleted(long offlineId) {
+ BookmarkId id = new BookmarkId(offlineId, BookmarkType.NORMAL);
for (OfflinePageModelObserver observer : mObservers) {
observer.offlinePageDeleted(id);
}
@@ -416,19 +449,18 @@ public final class OfflinePageBridge {
@CalledByNative
private static void createOfflinePageAndAddToList(List<OfflinePageItem> offlinePagesList,
- String url, long bookmarkId, String offlineUrl, long fileSize, long creationTime,
+ String url, long offlineId, String offlineUrl, long fileSize, long creationTime,
int accessCount, long lastAccessTimeMs) {
offlinePagesList.add(createOfflinePageItem(
- url, bookmarkId, offlineUrl, fileSize, creationTime, accessCount,
- lastAccessTimeMs));
+ url, offlineId, offlineUrl, fileSize, creationTime, accessCount, lastAccessTimeMs));
}
@CalledByNative
- private static OfflinePageItem createOfflinePageItem(String url, long bookmarkId,
+ private static OfflinePageItem createOfflinePageItem(String url, long offlineId,
String offlineUrl, long fileSize, long creationTime, int accessCount,
long lastAccessTimeMs) {
return new OfflinePageItem(
- url, bookmarkId, offlineUrl, fileSize, creationTime, accessCount, lastAccessTimeMs);
+ url, offlineId, offlineUrl, fileSize, creationTime, accessCount, lastAccessTimeMs);
}
private static native int nativeGetFeatureMode();
@@ -438,17 +470,19 @@ public final class OfflinePageBridge {
private native void nativeDestroy(long nativeOfflinePageBridge);
private native void nativeGetAllPages(
long nativeOfflinePageBridge, List<OfflinePageItem> offlinePages);
- private native OfflinePageItem nativeGetPageByBookmarkId(
- long nativeOfflinePageBridge, long bookmarkId);
+ private native long[] nativeGetOfflineIdsForClientId(
+ long nativeOfflinePageBridge, String clientNamespace, String clientId);
+ private native OfflinePageItem nativeGetPageByOfflineId(
+ long nativeOfflinePageBridge, long offlineId);
private native OfflinePageItem nativeGetPageByOnlineURL(
long nativeOfflinePageBridge, String onlineURL);
private native void nativeSavePage(long nativeOfflinePageBridge, SavePageCallback callback,
- WebContents webContents, long bookmarkId);
- private native void nativeMarkPageAccessed(long nativeOfflinePageBridge, long bookmarkId);
- private native void nativeDeletePage(long nativeOfflinePageBridge,
- DeletePageCallback callback, long bookmarkId);
+ WebContents webContents, long offlineId, String clientNamespace, String clientId);
+ private native void nativeMarkPageAccessed(long nativeOfflinePageBridge, long offlineId);
+ private native void nativeDeletePage(
+ long nativeOfflinePageBridge, DeletePageCallback callback, long offlineId);
private native void nativeDeletePages(
- long nativeOfflinePageBridge, DeletePageCallback callback, long[] bookmarkIds);
+ long nativeOfflinePageBridge, DeletePageCallback callback, long[] offlineIds);
private native void nativeGetPagesToCleanUp(
long nativeOfflinePageBridge, List<OfflinePageItem> offlinePages);
private native void nativeCheckMetadataConsistency(long nativeOfflinePageBridge);

Powered by Google App Engine
This is Rietveld 408576698