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

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

Issue 2067143004: [Offline Pages] Duplicate pages when save/delete bookmarks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
index 9e195bcd6030e0ed6282d4740642200a147ccbf3..3affcbad045008cf0134d5ef3f04c54c5405f972 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageUtils.java
@@ -10,6 +10,7 @@ import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Environment;
+import org.chromium.base.Callback;
import org.chromium.base.Log;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
@@ -21,12 +22,15 @@ import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.offlinepages.DeletePageResult;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.WebContents;
import org.chromium.net.ConnectionType;
import org.chromium.net.NetworkChangeNotifier;
import org.chromium.ui.base.PageTransition;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@@ -79,18 +83,44 @@ public class OfflinePageUtils {
// Making sure tab is worth keeping.
if (shouldSkipSavingTabOffline(tab)) return;
- OfflinePageBridge offlinePageBridge = OfflinePageBridge.getForProfile(tab.getProfile());
+ final OfflinePageBridge offlinePageBridge =
+ OfflinePageBridge.getForProfile(tab.getProfile());
if (offlinePageBridge == null) return;
- WebContents webContents = tab.getWebContents();
- ClientId clientId = ClientId.createClientIdForBookmarkId(bookmarkId);
+ final WebContents webContents = tab.getWebContents();
+ final ClientId clientId = ClientId.createClientIdForBookmarkId(bookmarkId);
+ final String url = webContents.getUrl();
- // TODO(fgorski): Ensure that request is queued if the model is not loaded.
- offlinePageBridge.savePage(webContents, clientId, new OfflinePageBridge.SavePageCallback() {
+ offlinePageBridge.getPagesByOnlineUrl(url, new Callback<List<OfflinePageItem>>() {
fgorski 2016/06/15 20:19:01 this solution does not cover the case where you fa
romax 2016/06/16 01:24:26 I think we should have some logic here but I'm not
@Override
- public void onSavePageDone(int savePageResult, String url, long offlineId) {
- // TODO(fgorski): Decide if we need to do anything with result.
- // Perhaps some UMA reporting, but that can really happen someplace else.
+ public void onResult(List<OfflinePageItem> items) {
+ List<ClientId> pages_to_delete = new ArrayList<ClientId>();
+ for (OfflinePageItem item : items) {
+ if (item.getUrl().equals(url)
+ && item.getClientId().getNamespace().equals(clientId.getNamespace())) {
+ pages_to_delete.add(item.getClientId());
+ }
+ }
+ offlinePageBridge.deletePagesByClientId(pages_to_delete, new Callback<Integer>() {
+ @Override
+ public void onResult(Integer deletePageResult) {
+ if (deletePageResult != DeletePageResult.SUCCESS
+ && deletePageResult != DeletePageResult.NOT_FOUND) {
+ return;
+ }
+ offlinePageBridge.savePage(
+ webContents, clientId, new OfflinePageBridge.SavePageCallback() {
+ @Override
+ public void onSavePageDone(
+ int savePageResult, String url, long offlineId) {
+ // TODO(fgorski): Decide if we need to do anything with
+ // result.
+ // Perhaps some UMA reporting, but that can really happen
+ // someplace else.
+ }
+ });
+ }
+ });
}
});
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698