| Index: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
| index 95941a86479630b155ab5dc3aee0cb0f71a25d7f..5a6b260011939de8f8464e4d8a6d22da70d3acf5 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
| @@ -25,10 +25,6 @@ import org.chromium.chrome.browser.bookmarks.BookmarkModel.AddBookmarkCallback;
|
| import org.chromium.chrome.browser.document.ChromeLauncherActivity;
|
| import org.chromium.chrome.browser.ntp.NewTabPageUma;
|
| import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
|
| -import org.chromium.chrome.browser.offlinepages.OfflinePageFreeUpSpaceCallback;
|
| -import org.chromium.chrome.browser.offlinepages.OfflinePageFreeUpSpaceDialog;
|
| -import org.chromium.chrome.browser.offlinepages.OfflinePageOpenStorageSettingsDialog;
|
| -import org.chromium.chrome.browser.offlinepages.OfflinePageStorageSpacePolicy;
|
| import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
|
| import org.chromium.chrome.browser.snackbar.Snackbar;
|
| import org.chromium.chrome.browser.snackbar.SnackbarManager;
|
| @@ -73,6 +69,7 @@ public class BookmarkUtils {
|
| parent = bookmarkModel.getDefaultFolder();
|
| }
|
|
|
| + // The bookmark model will be destroyed in the created AddBookmarkCallback.
|
| bookmarkModel.addBookmarkAsync(parent, bookmarkModel.getChildCount(parent), tab.getTitle(),
|
| tab.getUrl(), webContentsToSave,
|
| createAddBookmarkCallback(bookmarkModel, snackbarManager, activity,
|
| @@ -96,6 +93,11 @@ public class BookmarkUtils {
|
| return bookmarkModel.addBookmark(parent, bookmarkModel.getChildCount(parent), title, url);
|
| }
|
|
|
| + /**
|
| + * Shows a snackbar after a bookmark has been added.
|
| + *
|
| + * NOTE: This method calls BookmarkModel#destroy() on the BookmarkModel that is passed to it.
|
| + */
|
| private static void showSnackbarForAddingBookmark(final BookmarkModel bookmarkModel,
|
| final SnackbarManager snackbarManager, final Activity activity,
|
| final BookmarkId bookmarkId, final int saveResult, boolean isStorageAlmostFull,
|
| @@ -105,8 +107,8 @@ public class BookmarkUtils {
|
| if (offlinePageBridge == null) {
|
| String folderName = bookmarkModel
|
| .getBookmarkTitle(bookmarkModel.getBookmarkById(bookmarkId).getParentId());
|
| - SnackbarController snackbarController = createSnackbarControllerForEditButton(
|
| - bookmarkModel, activity, bookmarkId);
|
| + SnackbarController snackbarController =
|
| + createSnackbarControllerForEditButton(activity, bookmarkId);
|
| if (getLastUsedParent(activity) == null) {
|
| snackbar = Snackbar.make(activity.getString(R.string.bookmark_page_saved),
|
| snackbarController, Snackbar.TYPE_ACTION);
|
| @@ -131,8 +133,8 @@ public class BookmarkUtils {
|
| : R.string.offline_pages_as_bookmarks_page_failed_to_save_storage_near_full);
|
| // Show "Free up space" button.
|
| buttonId = OfflinePageUtils.getStringId(R.string.offline_pages_free_up_space_title);
|
| - snackbarController = createSnackbarControllerForFreeUpSpaceButton(
|
| - bookmarkModel, snackbarManager, activity);
|
| + snackbarController = OfflinePageUtils.createSnackbarControllerForFreeUpSpaceButton(
|
| + offlinePageBridge, snackbarManager, activity);
|
| } else {
|
| if (saveResult == AddBookmarkCallback.SAVED) {
|
| if (getLastUsedParent(activity) == null) {
|
| @@ -150,8 +152,7 @@ public class BookmarkUtils {
|
| }
|
| }
|
| if (snackbarController == null) {
|
| - snackbarController = createSnackbarControllerForEditButton(
|
| - bookmarkModel, activity, bookmarkId);
|
| + snackbarController = createSnackbarControllerForEditButton(activity, bookmarkId);
|
| }
|
| snackbar = Snackbar
|
| .make(activity.getString(messageId, suffix), snackbarController,
|
| @@ -160,8 +161,14 @@ public class BookmarkUtils {
|
| }
|
|
|
| snackbarManager.showSnackbar(snackbar);
|
| + bookmarkModel.destroy();
|
| }
|
|
|
| + /**
|
| + * Shows a snackbar if necessary after adding a bookmark.
|
| + *
|
| + * NOTE: This callback will call BookmarkModel#destroy() on the passed-in bookmark model.
|
| + */
|
| private static AddBookmarkCallback createAddBookmarkCallback(
|
| final BookmarkModel bookmarkModel, final SnackbarManager snackbarManager,
|
| final Activity activity, final WebContents webContents) {
|
| @@ -199,67 +206,19 @@ public class BookmarkUtils {
|
| * created bookmark.
|
| */
|
| private static SnackbarController createSnackbarControllerForEditButton(
|
| - final BookmarkModel bookmarkModel, final Activity activity,
|
| - final BookmarkId bookmarkId) {
|
| + final Activity activity, final BookmarkId bookmarkId) {
|
| return new SnackbarController() {
|
|
|
| @Override
|
| public void onDismissNoAction(Object actionData) {
|
| RecordUserAction.record("EnhancedBookmarks.EditAfterCreateButtonNotClicked");
|
| // This method will be called only if the snackbar is dismissed by timeout.
|
| - bookmarkModel.destroy();
|
| }
|
|
|
| @Override
|
| public void onAction(Object actionData) {
|
| RecordUserAction.record("EnhancedBookmarks.EditAfterCreateButtonClicked");
|
| startEditActivity(activity, bookmarkId, (WebContents) actionData);
|
| - bookmarkModel.destroy();
|
| - }
|
| - };
|
| - }
|
| -
|
| - /**
|
| - * Creates a snackbar controller for a case where "Free up space" button is shown to clean up
|
| - * space taken by the offline pages.
|
| - */
|
| - private static SnackbarController createSnackbarControllerForFreeUpSpaceButton(
|
| - final BookmarkModel bookmarkModel, final SnackbarManager snackbarManager,
|
| - final Activity activity) {
|
| - return new SnackbarController() {
|
| - @Override
|
| - public void onDismissNoAction(Object actionData) {
|
| - // This method will be called only if the snackbar is dismissed by timeout.
|
| - RecordUserAction.record(
|
| - "OfflinePages.SaveStatusSnackbar.FreeUpSpaceButtonNotClicked");
|
| - bookmarkModel.destroy();
|
| - }
|
| -
|
| - @Override
|
| - public void onAction(Object actionData) {
|
| - RecordUserAction.record("OfflinePages.SaveStatusSnackbar.FreeUpSpaceButtonClicked");
|
| - OfflinePageStorageSpacePolicy policy =
|
| - new OfflinePageStorageSpacePolicy(bookmarkModel.getOfflinePageBridge());
|
| - if (policy.hasPagesToCleanUp()) {
|
| - OfflinePageFreeUpSpaceCallback callback = new OfflinePageFreeUpSpaceCallback() {
|
| - @Override
|
| - public void onFreeUpSpaceDone() {
|
| - snackbarManager.showSnackbar(
|
| - OfflinePageFreeUpSpaceDialog.createStorageClearedSnackbar(
|
| - activity));
|
| - bookmarkModel.destroy();
|
| - }
|
| - @Override
|
| - public void onFreeUpSpaceCancelled() {
|
| - bookmarkModel.destroy();
|
| - }
|
| - };
|
| - OfflinePageFreeUpSpaceDialog dialog = OfflinePageFreeUpSpaceDialog.newInstance(
|
| - bookmarkModel.getOfflinePageBridge(), callback);
|
| - dialog.show(activity.getFragmentManager(), null);
|
| - } else {
|
| - OfflinePageOpenStorageSettingsDialog.showDialog(activity);
|
| - }
|
| }
|
| };
|
| }
|
| @@ -267,8 +226,7 @@ public class BookmarkUtils {
|
| /**
|
| * Gets whether bookmark manager should load offline page initially.
|
| */
|
| - private static boolean shouldShowOfflinePageAtFirst(BookmarkModel model) {
|
| - OfflinePageBridge bridge = model.getOfflinePageBridge();
|
| + private static boolean shouldShowOfflinePageAtFirst(OfflinePageBridge bridge) {
|
| if (bridge == null || bridge.getAllPages().isEmpty() || OfflinePageUtils.isConnected()) {
|
| return false;
|
| }
|
| @@ -296,8 +254,9 @@ public class BookmarkUtils {
|
| */
|
| private static String getFirstUrlToLoad(Activity activity) {
|
| BookmarkModel model = new BookmarkModel();
|
| + OfflinePageBridge bridge = model.getOfflinePageBridge();
|
| try {
|
| - if (shouldShowOfflinePageAtFirst(model)) {
|
| + if (shouldShowOfflinePageAtFirst(bridge)) {
|
| return BookmarkUIState.createFilterUrl(BookmarkFilter.OFFLINE_PAGES,
|
| false).toString();
|
| }
|
|
|