| Index: chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuParams.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuParams.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuParams.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6d396f7c3561906d2a1c7772331ab8d87914d8f4
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuParams.java
|
| @@ -0,0 +1,176 @@
|
| +// Copyright 2013 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.contextmenu;
|
| +
|
| +import android.text.TextUtils;
|
| +
|
| +import org.chromium.base.CalledByNative;
|
| +import org.chromium.base.JNINamespace;
|
| +
|
| +import java.util.ArrayList;
|
| +
|
| +/**
|
| + * A list of parameters that explain what kind of context menu to show the user. This data is
|
| + * generated from content/public/common/context_menu_params.h.
|
| + */
|
| +@JNINamespace("ContextMenuParamsAndroid")
|
| +public class ContextMenuParams {
|
| + /** Must correspond to the MediaType enum in WebKit/chromium/public/WebContextMenuData.h */
|
| + @SuppressWarnings("unused")
|
| + private static interface MediaType {
|
| + public static final int MEDIA_TYPE_NONE = 0;
|
| + public static final int MEDIA_TYPE_IMAGE = 1;
|
| + public static final int MEDIA_TYPE_VIDEO = 2;
|
| + public static final int MEDIA_TYPE_AUDIO = 3;
|
| + public static final int MEDIA_TYPE_FILE = 4;
|
| + public static final int MEDIA_TYPE_PLUGIN = 5;
|
| + }
|
| +
|
| + private static class CustomMenuItem {
|
| + public final String label;
|
| + public final int action;
|
| +
|
| + public CustomMenuItem(String label, int action) {
|
| + this.label = label;
|
| + this.action = action;
|
| + }
|
| + }
|
| +
|
| + private final String mLinkUrl;
|
| + private final String mLinkText;
|
| + private final String mUnfilteredLinkUrl;
|
| + private final String mSrcUrl;
|
| + private final boolean mIsEditable;
|
| +
|
| + private final boolean mIsAnchor;
|
| + private final boolean mIsSelectedText;
|
| + private final boolean mIsImage;
|
| + private final boolean mIsVideo;
|
| +
|
| + private final ArrayList<CustomMenuItem> mCustomMenuItems = new ArrayList<CustomMenuItem>();
|
| +
|
| + /**
|
| + * @return Whether or not the context menu should consist of custom items.
|
| + */
|
| + public boolean isCustomMenu() {
|
| + return !mCustomMenuItems.isEmpty();
|
| + }
|
| +
|
| + /**
|
| + * @return The number of custom items in this context menu.
|
| + */
|
| + public int getCustomMenuSize() {
|
| + return mCustomMenuItems.size();
|
| + }
|
| +
|
| + /**
|
| + * The label that should be shown for the custom menu item at {@code index}.
|
| + * @param index The index of the custom menu item.
|
| + * @return The label to show.
|
| + */
|
| + public String getCustomLabelAt(int index) {
|
| + assert index >= 0 && index < mCustomMenuItems.size();
|
| + return mCustomMenuItems.get(index).label;
|
| + }
|
| +
|
| + /**
|
| + * The action that should be returned for the custom menu item at {@code index}.
|
| + * @param index The index of the custom menu item.
|
| + * @return The action to return.
|
| + */
|
| + public int getCustomActionAt(int index) {
|
| + assert index >= 0 && index < mCustomMenuItems.size();
|
| + return mCustomMenuItems.get(index).action;
|
| + }
|
| +
|
| + /**
|
| + * @return The link URL, if any.
|
| + */
|
| + public String getLinkUrl() {
|
| + return mLinkUrl;
|
| + }
|
| +
|
| + /**
|
| + * @return The link text, if any.
|
| + */
|
| + public String getLinkText() {
|
| + return mLinkText;
|
| + }
|
| +
|
| + /**
|
| + * @return The unfiltered link URL, if any.
|
| + */
|
| + public String getUnfilteredLinkUrl() {
|
| + return mUnfilteredLinkUrl;
|
| + }
|
| +
|
| + /**
|
| + * @return The source URL.
|
| + */
|
| + public String getSrcUrl() {
|
| + return mSrcUrl;
|
| + }
|
| +
|
| + /**
|
| + * @return Whether or not the context menu is being shown for an editable piece of content.
|
| + */
|
| + public boolean isEditable() {
|
| + return mIsEditable;
|
| + }
|
| +
|
| + /**
|
| + * @return Whether or not the context menu is being shown for an anchor.
|
| + */
|
| + public boolean isAnchor() {
|
| + return mIsAnchor;
|
| + }
|
| +
|
| + /**
|
| + * @return Whether or not the context menu is being shown for selected text.
|
| + */
|
| + public boolean isSelectedText() {
|
| + return mIsSelectedText;
|
| + }
|
| +
|
| + /**
|
| + * @return Whether or not the context menu is being shown for an image.
|
| + */
|
| + public boolean isImage() {
|
| + return mIsImage;
|
| + }
|
| +
|
| + /**
|
| + * @return Whether or not the context menu is being shown for a video.
|
| + */
|
| + public boolean isVideo() {
|
| + return mIsVideo;
|
| + }
|
| +
|
| + private ContextMenuParams(int mediaType, String linkUrl, String linkText,
|
| + String unfilteredLinkUrl, String srcUrl, String selectionText, boolean isEditable) {
|
| + mLinkUrl = linkUrl;
|
| + mLinkText = linkText;
|
| + mUnfilteredLinkUrl = unfilteredLinkUrl;
|
| + mSrcUrl = srcUrl;
|
| + mIsEditable = isEditable;
|
| +
|
| + mIsAnchor = !TextUtils.isEmpty(linkUrl);
|
| + mIsSelectedText = !TextUtils.isEmpty(selectionText);
|
| + mIsImage = mediaType == MediaType.MEDIA_TYPE_IMAGE;
|
| + mIsVideo = mediaType == MediaType.MEDIA_TYPE_VIDEO;
|
| + }
|
| +
|
| + @CalledByNative
|
| + private static ContextMenuParams create(int mediaType, String linkUrl, String linkText,
|
| + String unfilteredLinkUrl, String srcUrl, String selectionText, boolean isEditable) {
|
| + return new ContextMenuParams(mediaType, linkUrl, linkText, unfilteredLinkUrl, srcUrl,
|
| + selectionText, isEditable);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void addCustomItem(String label, int action) {
|
| + mCustomMenuItems.add(new CustomMenuItem(label, action));
|
| + }
|
| +}
|
|
|