Index: content/public/android/java/src/org/chromium/content/browser/SelectActionModeCallback.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/SelectActionModeCallback.java b/content/public/android/java/src/org/chromium/content/browser/SelectActionModeCallback.java |
deleted file mode 100644 |
index 98f9125e5230d34f4f3d96084d0512d387ba3c55..0000000000000000000000000000000000000000 |
--- a/content/public/android/java/src/org/chromium/content/browser/SelectActionModeCallback.java |
+++ /dev/null |
@@ -1,237 +0,0 @@ |
-// Copyright 2012 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.content.browser; |
- |
-import android.content.ClipboardManager; |
-import android.content.Context; |
-import android.content.res.Resources; |
-import android.graphics.Rect; |
-import android.view.ActionMode; |
-import android.view.Menu; |
-import android.view.MenuInflater; |
-import android.view.MenuItem; |
-import android.view.View; |
- |
-import org.chromium.content.R; |
- |
-/** |
- * An ActionMode.Callback for in-page selection. This class handles both the editable and |
- * non-editable cases. |
- */ |
-public class SelectActionModeCallback implements ActionMode.Callback { |
- /** |
- * An interface to retrieve information about the current selection, and also to perform |
- * actions based on the selection or when the action bar is dismissed. |
- */ |
- public interface ActionHandler { |
- /** |
- * Perform a select all action. |
- */ |
- void selectAll(); |
- |
- /** |
- * Perform a copy (to clipboard) action. |
- */ |
- void copy(); |
- |
- /** |
- * Perform a cut (to clipboard) action. |
- */ |
- void cut(); |
- |
- /** |
- * Perform a paste action. |
- */ |
- void paste(); |
- |
- /** |
- * Perform a share action. |
- */ |
- void share(); |
- |
- /** |
- * Perform a search action. |
- */ |
- void search(); |
- |
- /** |
- * @return true iff the current selection is editable (e.g. text within an input field). |
- */ |
- boolean isSelectionEditable(); |
- |
- /** |
- * Called when the onDestroyActionMode of the SelectActionmodeCallback is called. |
- */ |
- void onDestroyActionMode(); |
- |
- /** |
- * Called when the onGetContentRect of the SelectActionModeCallback is called. |
- * @param outRect The Rect to be populated with the content position. |
- */ |
- void onGetContentRect(Rect outRect); |
- |
- /** |
- * @return Whether or not share is available. |
- */ |
- boolean isShareAvailable(); |
- |
- /** |
- * @return Whether or not web search is available. |
- */ |
- boolean isWebSearchAvailable(); |
- |
- /** |
- * @return true if the current selection is of password type. |
- */ |
- boolean isSelectionPassword(); |
- |
- /** |
- * @return true if the current selection is an insertion point. |
- */ |
- boolean isInsertion(); |
- |
- /** |
- * @return true if the current selection is for incognito content. |
- * Note: This should remain constant for the callback's lifetime. |
- */ |
- boolean isIncognito(); |
- } |
- |
- protected final ActionHandler mActionHandler; |
- private final Context mContext; |
- private boolean mEditable; |
- private boolean mIsPasswordType; |
- private boolean mIsInsertion; |
- |
- public SelectActionModeCallback(Context context, ActionHandler actionHandler) { |
- mContext = context; |
- mActionHandler = actionHandler; |
- } |
- |
- protected Context getContext() { |
- return mContext; |
- } |
- |
- @Override |
- public boolean onCreateActionMode(ActionMode mode, Menu menu) { |
- mode.setTitle(null); |
- mode.setSubtitle(null); |
- mEditable = mActionHandler.isSelectionEditable(); |
- mIsPasswordType = mActionHandler.isSelectionPassword(); |
- mIsInsertion = mActionHandler.isInsertion(); |
- createActionMenu(mode, menu); |
- return true; |
- } |
- |
- @Override |
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) { |
- boolean isEditableNow = mActionHandler.isSelectionEditable(); |
- boolean isPasswordNow = mActionHandler.isSelectionPassword(); |
- boolean isInsertionNow = mActionHandler.isInsertion(); |
- if (mEditable != isEditableNow || mIsPasswordType != isPasswordNow |
- || mIsInsertion != isInsertionNow) { |
- mEditable = isEditableNow; |
- mIsPasswordType = isPasswordNow; |
- mIsInsertion = isInsertionNow; |
- menu.clear(); |
- createActionMenu(mode, menu); |
- return true; |
- } |
- return false; |
- } |
- |
- private void createActionMenu(ActionMode mode, Menu menu) { |
- try { |
- mode.getMenuInflater().inflate(R.menu.select_action_menu, menu); |
- } catch (Resources.NotFoundException e) { |
- // TODO(tobiasjs) by the time we get here we have already |
- // caused a resource loading failure to be logged. WebView |
- // resource access needs to be improved so that this |
- // logspam can be avoided. |
- new MenuInflater(getContext()).inflate(R.menu.select_action_menu, menu); |
- } |
- |
- if (mIsInsertion) { |
- menu.removeItem(R.id.select_action_menu_select_all); |
- menu.removeItem(R.id.select_action_menu_cut); |
- menu.removeItem(R.id.select_action_menu_copy); |
- menu.removeItem(R.id.select_action_menu_share); |
- menu.removeItem(R.id.select_action_menu_web_search); |
- return; |
- } |
- |
- if (!mEditable || !canPaste()) { |
- menu.removeItem(R.id.select_action_menu_paste); |
- } |
- |
- if (!mEditable) { |
- menu.removeItem(R.id.select_action_menu_cut); |
- } |
- |
- if (mEditable || !mActionHandler.isShareAvailable()) { |
- menu.removeItem(R.id.select_action_menu_share); |
- } |
- |
- if (mEditable || mActionHandler.isIncognito() || !mActionHandler.isWebSearchAvailable()) { |
- menu.removeItem(R.id.select_action_menu_web_search); |
- } |
- |
- if (mIsPasswordType) { |
- menu.removeItem(R.id.select_action_menu_copy); |
- menu.removeItem(R.id.select_action_menu_cut); |
- } |
- } |
- |
- @Override |
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) { |
- int id = item.getItemId(); |
- |
- if (id == R.id.select_action_menu_select_all) { |
- mActionHandler.selectAll(); |
- } else if (id == R.id.select_action_menu_cut) { |
- mActionHandler.cut(); |
- mode.finish(); |
- } else if (id == R.id.select_action_menu_copy) { |
- mActionHandler.copy(); |
- mode.finish(); |
- } else if (id == R.id.select_action_menu_paste) { |
- mActionHandler.paste(); |
- mode.finish(); |
- } else if (id == R.id.select_action_menu_share) { |
- mActionHandler.share(); |
- mode.finish(); |
- } else if (id == R.id.select_action_menu_web_search) { |
- mActionHandler.search(); |
- mode.finish(); |
- } else { |
- return false; |
- } |
- return true; |
- } |
- |
- @Override |
- public void onDestroyActionMode(ActionMode mode) { |
- mActionHandler.onDestroyActionMode(); |
- } |
- |
- /** |
- * Called when an ActionMode needs to be positioned on screen, potentially occluding view |
- * content. Note this may be called on a per-frame basis. |
- * |
- * @param mode The ActionMode that requires positioning. |
- * @param view The View that originated the ActionMode, in whose coordinates the Rect should |
- * be provided. |
- * @param outRect The Rect to be populated with the content position. |
- */ |
- public void onGetContentRect(ActionMode mode, View view, Rect outRect) { |
- mActionHandler.onGetContentRect(outRect); |
- } |
- |
- private boolean canPaste() { |
- ClipboardManager clipMgr = (ClipboardManager) |
- getContext().getSystemService(Context.CLIPBOARD_SERVICE); |
- return clipMgr.hasPrimaryClip(); |
- } |
-} |