Index: chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java |
deleted file mode 100644 |
index 94471c194ae827c502d8bdf887c1d807ddbed801..0000000000000000000000000000000000000000 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkEditActivity.java |
+++ /dev/null |
@@ -1,384 +0,0 @@ |
-// Copyright 2015 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.enhancedbookmarks; |
- |
-import android.content.Intent; |
-import android.os.Bundle; |
-import android.support.v7.widget.Toolbar; |
-import android.text.TextUtils; |
-import android.text.format.Formatter; |
-import android.view.Menu; |
-import android.view.MenuItem; |
-import android.view.View; |
-import android.widget.Button; |
-import android.widget.TextView; |
- |
-import org.chromium.base.Log; |
-import org.chromium.base.metrics.RecordHistogram; |
-import org.chromium.base.metrics.RecordUserAction; |
-import org.chromium.chrome.R; |
-import org.chromium.chrome.browser.bookmark.BookmarksBridge.BookmarkItem; |
-import org.chromium.chrome.browser.bookmark.BookmarksBridge.BookmarkModelObserver; |
-import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; |
-import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.DeletePageCallback; |
-import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageModelObserver; |
-import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.SavePageCallback; |
-import org.chromium.chrome.browser.offlinepages.OfflinePageItem; |
-import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; |
-import org.chromium.chrome.browser.util.UrlUtilities; |
-import org.chromium.chrome.browser.widget.EmptyAlertEditText; |
-import org.chromium.chrome.browser.widget.TintedDrawable; |
-import org.chromium.components.bookmarks.BookmarkId; |
-import org.chromium.content_public.browser.WebContents; |
- |
-/** |
- * The activity that enables the user to modify the title, url and parent folder of a bookmark. |
- */ |
-public class EnhancedBookmarkEditActivity extends EnhancedBookmarkActivityBase { |
- /** The intent extra specifying the ID of the bookmark to be edited. */ |
- public static final String INTENT_BOOKMARK_ID = "EnhancedBookmarkEditActivity.BookmarkId"; |
- public static final String INTENT_WEB_CONTENTS = "EnhancedBookmarkEditActivity.WebContents"; |
- |
- private static final String TAG = "BookmarkEdit"; |
- |
- private enum OfflineButtonType { |
- NONE, |
- SAVE, |
- REMOVE, |
- VISIT, |
- } |
- |
- private EnhancedBookmarksModel mModel; |
- private BookmarkId mBookmarkId; |
- private EmptyAlertEditText mTitleEditText; |
- private EmptyAlertEditText mUrlEditText; |
- private TextView mFolderTextView; |
- |
- private WebContents mWebContents; |
- |
- private MenuItem mDeleteButton; |
- |
- private OfflineButtonType mOfflineButtonType = OfflineButtonType.NONE; |
- private OfflinePageModelObserver mOfflinePageModelObserver; |
- |
- private BookmarkModelObserver mBookmarkModelObserver = new BookmarkModelObserver() { |
- @Override |
- public void bookmarkNodeRemoved(BookmarkItem parent, int oldIndex, BookmarkItem node, |
- boolean isDoingExtensiveChanges) { |
- if (mBookmarkId.equals(node.getId())) { |
- finish(); |
- } |
- } |
- |
- @Override |
- public void bookmarkNodeMoved(BookmarkItem oldParent, int oldIndex, BookmarkItem newParent, |
- int newIndex) { |
- BookmarkId movedBookmark = mModel.getChildAt(newParent.getId(), |
- newIndex); |
- if (movedBookmark.equals(mBookmarkId)) { |
- mFolderTextView.setText(newParent.getTitle()); |
- } |
- } |
- |
- @Override |
- public void bookmarkNodeChanged(BookmarkItem node) { |
- if (mBookmarkId.equals(node.getId()) || node.getId().equals( |
- mModel.getBookmarkById(mBookmarkId).getParentId())) { |
- updateViewContent(); |
- } |
- } |
- |
- @Override |
- public void bookmarkModelChanged() { |
- if (mModel.doesBookmarkExist(mBookmarkId)) { |
- updateViewContent(); |
- } else { |
- Log.wtf(TAG, "The bookmark was deleted somehow during bookmarkModelChange!", |
- new Exception(TAG)); |
- finish(); |
- } |
- } |
- }; |
- |
- @Override |
- protected void onCreate(Bundle savedInstanceState) { |
- super.onCreate(savedInstanceState); |
- |
- int title = OfflinePageUtils.getStringId(R.string.edit_bookmark); |
- setTitle(title); |
- EnhancedBookmarkUtils.setTaskDescriptionInDocumentMode(this, getString(title)); |
- mModel = new EnhancedBookmarksModel(); |
- mBookmarkId = BookmarkId.getBookmarkIdFromString( |
- getIntent().getStringExtra(INTENT_BOOKMARK_ID)); |
- mModel.addObserver(mBookmarkModelObserver); |
- BookmarkItem item = mModel.getBookmarkById(mBookmarkId); |
- if (!mModel.doesBookmarkExist(mBookmarkId) || item == null) { |
- finish(); |
- return; |
- } |
- |
- setContentView(R.layout.eb_edit); |
- mTitleEditText = (EmptyAlertEditText) findViewById(R.id.title_text); |
- mFolderTextView = (TextView) findViewById(R.id.folder_text); |
- mUrlEditText = (EmptyAlertEditText) findViewById(R.id.url_text); |
- |
- mFolderTextView.setOnClickListener(new View.OnClickListener() { |
- @Override |
- public void onClick(View v) { |
- EnhancedBookmarkFolderSelectActivity.startFolderSelectActivity( |
- EnhancedBookmarkEditActivity.this, mBookmarkId); |
- } |
- }); |
- |
- if (OfflinePageBridge.isEnabled() && OfflinePageBridge.canSavePage( |
- mModel.getBookmarkById(mBookmarkId).getUrl())) { |
- mOfflinePageModelObserver = new OfflinePageModelObserver() { |
- @Override |
- public void offlinePageDeleted(BookmarkId bookmarkId) { |
- if (mBookmarkId.equals(bookmarkId)) { |
- updateOfflineSection(); |
- } |
- } |
- }; |
- |
- mModel.getOfflinePageBridge().addObserver(mOfflinePageModelObserver); |
- // Make offline page section visible and find controls. |
- findViewById(R.id.offline_page_group).setVisibility(View.VISIBLE); |
- getIntent().setExtrasClassLoader(WebContents.class.getClassLoader()); |
- mWebContents = getIntent().getParcelableExtra(INTENT_WEB_CONTENTS); |
- updateOfflineSection(); |
- } |
- |
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); |
- setSupportActionBar(toolbar); |
- getSupportActionBar().setDisplayHomeAsUpEnabled(true); |
- |
- updateViewContent(); |
- } |
- |
- private void updateViewContent() { |
- BookmarkItem bookmarkItem = mModel.getBookmarkById(mBookmarkId); |
- |
- if (!TextUtils.equals(mTitleEditText.getTrimmedText(), bookmarkItem.getTitle())) { |
- mTitleEditText.setText(bookmarkItem.getTitle()); |
- } |
- String folderTitle = mModel.getBookmarkTitle(bookmarkItem.getParentId()); |
- if (!TextUtils.equals(mFolderTextView.getText(), folderTitle)) { |
- mFolderTextView.setText(folderTitle); |
- } |
- if (!TextUtils.equals(mUrlEditText.getTrimmedText(), bookmarkItem.getUrl())) { |
- mUrlEditText.setText(bookmarkItem.getUrl()); |
- } |
- mTitleEditText.setEnabled(bookmarkItem.isEditable()); |
- mUrlEditText.setEnabled(bookmarkItem.isUrlEditable()); |
- mFolderTextView.setEnabled(bookmarkItem.isMovable()); |
- } |
- |
- @Override |
- public boolean onCreateOptionsMenu(Menu menu) { |
- mDeleteButton = menu.add(R.string.enhanced_bookmark_action_bar_delete) |
- .setIcon(TintedDrawable.constructTintedDrawable( |
- getResources(), R.drawable.btn_trash)) |
- .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); |
- |
- return super.onCreateOptionsMenu(menu); |
- } |
- |
- @Override |
- public boolean onOptionsItemSelected(MenuItem item) { |
- if (item == mDeleteButton) { |
- // Log added for detecting delete button double clicking. |
- Log.i(TAG, "Delete button pressed by user! isFinishing() == " + isFinishing()); |
- |
- mModel.deleteBookmark(mBookmarkId); |
- finish(); |
- return true; |
- } else if (item.getItemId() == android.R.id.home) { |
- finish(); |
- return true; |
- } |
- return super.onOptionsItemSelected(item); |
- } |
- |
- @Override |
- protected void onStop() { |
- if (mModel.doesBookmarkExist(mBookmarkId)) { |
- final String originalUrl = |
- mModel.getBookmarkById(mBookmarkId).getUrl(); |
- final String title = mTitleEditText.getTrimmedText(); |
- final String url = mUrlEditText.getTrimmedText(); |
- |
- if (!mTitleEditText.isEmpty()) { |
- mModel.setBookmarkTitle(mBookmarkId, title); |
- } |
- |
- if (!mUrlEditText.isEmpty() |
- && mModel.getBookmarkById(mBookmarkId).isUrlEditable()) { |
- String fixedUrl = UrlUtilities.fixupUrl(url); |
- if (fixedUrl != null && !fixedUrl.equals(originalUrl)) { |
- boolean hasOfflinePage = OfflinePageBridge.isEnabled() |
- && mModel.getOfflinePageBridge() |
- .getPageByBookmarkId(mBookmarkId) != null; |
- RecordHistogram.recordBooleanHistogram( |
- "OfflinePages.Edit.BookmarkUrlChangedForOfflinePage", hasOfflinePage); |
- mModel.setBookmarkUrl(mBookmarkId, fixedUrl); |
- } |
- } |
- } |
- |
- super.onStop(); |
- } |
- |
- @Override |
- protected void onDestroy() { |
- recordOfflineButtonAction(false); |
- if (OfflinePageBridge.isEnabled()) { |
- mModel.getOfflinePageBridge().removeObserver( |
- mOfflinePageModelObserver); |
- } |
- mModel.removeObserver(mBookmarkModelObserver); |
- mModel.destroy(); |
- mModel = null; |
- super.onDestroy(); |
- } |
- |
- private void updateOfflineSection() { |
- assert OfflinePageBridge.isEnabled(); |
- |
- // It is possible that callback arrives after the activity was dismissed. |
- // See http://crbug.com/566939 |
- if (mModel == null) return; |
- |
- OfflinePageBridge offlinePageBridge = mModel.getOfflinePageBridge(); |
- offlinePageBridge.checkOfflinePageMetadata(); |
- |
- Button saveRemoveVisitButton = (Button) findViewById(R.id.offline_page_save_remove_button); |
- TextView offlinePageInfoTextView = (TextView) findViewById(R.id.offline_page_info_text); |
- |
- OfflinePageItem offlinePage = offlinePageBridge.getPageByBookmarkId(mBookmarkId); |
- if (offlinePage != null) { |
- // Offline page exists. Show information and button to remove. |
- offlinePageInfoTextView.setText( |
- getString(OfflinePageUtils.getStringId( |
- R.string.offline_pages_as_bookmarks_offline_page_size), |
- Formatter.formatFileSize(this, offlinePage.getFileSize()))); |
- updateButtonToDeleteOfflinePage(saveRemoveVisitButton); |
- } else if (mWebContents != null && !mWebContents.isDestroyed() |
- && offlinePageBridge.canSavePage(mWebContents.getLastCommittedUrl())) { |
- // Offline page is not saved, but a bookmarked page is opened. Show save button. |
- offlinePageInfoTextView.setText( |
- getString(OfflinePageUtils.getStringId(R.string.bookmark_offline_page_none))); |
- updateButtonToSaveOfflinePage(saveRemoveVisitButton); |
- } else { |
- // Offline page is not saved, and edit page was opened from the bookmarks UI, which |
- // means there is no action the user can take any action - hide button. |
- offlinePageInfoTextView.setText(getString(OfflinePageUtils.getStringId( |
- R.string.offline_pages_as_bookmarks_offline_page_visit))); |
- updateButtonToVisitOfflinePage(saveRemoveVisitButton); |
- } |
- } |
- |
- private void updateButtonToDeleteOfflinePage(final Button button) { |
- mOfflineButtonType = OfflineButtonType.REMOVE; |
- button.setText(getString(R.string.remove)); |
- button.setOnClickListener(new View.OnClickListener() { |
- @Override |
- public void onClick(View v) { |
- recordOfflineButtonAction(true); |
- mModel.getOfflinePageBridge().deletePage( |
- mBookmarkId, new DeletePageCallback() { |
- @Override |
- public void onDeletePageDone(int deletePageResult) { |
- // TODO(fgorski): Add snackbar upon failure. |
- // Always update UI, as buttons might be disabled. |
- updateOfflineSection(); |
- } |
- }); |
- button.setClickable(false); |
- } |
- }); |
- } |
- |
- private void updateButtonToSaveOfflinePage(final Button button) { |
- mOfflineButtonType = OfflineButtonType.SAVE; |
- button.setText(getString(R.string.save)); |
- button.setOnClickListener(new View.OnClickListener() { |
- @Override |
- public void onClick(View v) { |
- recordOfflineButtonAction(true); |
- mModel.getOfflinePageBridge().savePage( |
- mWebContents, mBookmarkId, new SavePageCallback() { |
- @Override |
- public void onSavePageDone(int savePageResult, String url) { |
- // TODO(fgorski): Add snackbar upon failure. |
- // Always update UI, as buttons might be disabled. |
- updateOfflineSection(); |
- } |
- }); |
- button.setClickable(false); |
- } |
- }); |
- } |
- |
- private void updateButtonToVisitOfflinePage(Button button) { |
- mOfflineButtonType = OfflineButtonType.VISIT; |
- button.setText(getString(R.string.bookmark_btn_offline_page_visit)); |
- button.setOnClickListener(new View.OnClickListener() { |
- @Override |
- public void onClick(View v) { |
- recordOfflineButtonAction(true); |
- openBookmark(); |
- } |
- }); |
- } |
- |
- private void openBookmark() { |
- // TODO(kkimlabs): Refactor this out to handle the intent in ChromeActivity. |
- // If this activity was started via startActivityForResult(), set the result. Otherwise, |
- // launch the bookmark directly. |
- if (getCallingActivity() != null) { |
- Intent intent = new Intent(); |
- intent.putExtra( |
- EnhancedBookmarkActivity.INTENT_VISIT_BOOKMARK_ID, mBookmarkId.toString()); |
- setResult(RESULT_OK, intent); |
- } else { |
- EnhancedBookmarkUtils.openBookmark( |
- mModel, this, mBookmarkId, BookmarkLaunchLocation.BOOKMARK_EDITOR); |
- } |
- finish(); |
- } |
- |
- private void recordOfflineButtonAction(boolean clicked) { |
- // If button type is not set, it means that either offline section is not shown or we have |
- // already recorded the click action. |
- if (mOfflineButtonType == OfflineButtonType.NONE) { |
- return; |
- } |
- |
- assert mOfflineButtonType == OfflineButtonType.SAVE |
- || mOfflineButtonType == OfflineButtonType.REMOVE |
- || mOfflineButtonType == OfflineButtonType.VISIT; |
- |
- if (clicked) { |
- if (mOfflineButtonType == OfflineButtonType.SAVE) { |
- RecordUserAction.record("OfflinePages.Edit.SaveButtonClicked"); |
- } else if (mOfflineButtonType == OfflineButtonType.REMOVE) { |
- RecordUserAction.record("OfflinePages.Edit.RemoveButtonClicked"); |
- } else if (mOfflineButtonType == OfflineButtonType.VISIT) { |
- RecordUserAction.record("OfflinePages.Edit.VisitButtonClicked"); |
- } |
- } else { |
- if (mOfflineButtonType == OfflineButtonType.SAVE) { |
- RecordUserAction.record("OfflinePages.Edit.SaveButtonNotClicked"); |
- } else if (mOfflineButtonType == OfflineButtonType.REMOVE) { |
- RecordUserAction.record("OfflinePages.Edit.RemoveButtonNotClicked"); |
- } else if (mOfflineButtonType == OfflineButtonType.VISIT) { |
- RecordUserAction.record("OfflinePages.Edit.VisitButtonNotClicked"); |
- } |
- } |
- |
- mOfflineButtonType = OfflineButtonType.NONE; |
- } |
-} |