1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.chrome.browser.contextmenu;
6
7import org.chromium.chrome.browser.Tab;
8import org.chromium.content.browser.ContentViewCore;
9import org.chromium.content_public.common.Referrer;
10
11/**
12 * A delegate responsible for taking actions based on context menu selections.
13 */
14public interface ChromeContextMenuItemDelegate {
15    /**
16     * @return Whether or not this context menu is being shown for an incognito
17     *     {@link ContentViewCore}.
18     */
19    boolean isIncognito();
20
21    /**
22     * @return Whether or not the current application can show incognito tabs.
23     */
24    boolean isIncognitoSupported();
25
26    /**
27     * @return Whether or not the context menu should give the user the chance to show the original
28     *         image.
29     */
30    boolean canLoadOriginalImage();
31
32    /**
33     * Called when the context menu is trying to start a download.
34     * @param url Url of the download item.
35     * @param isLink Whether or not the download is a link (as opposed to an image/video).
36     * @return       Whether or not a download should actually be started.
37     */
38    boolean startDownload(String url, boolean isLink);
39
40    /**
41     * Called when the {@code url} should be opened in a new tab with the same incognito state as
42     * the current {@link Tab}.
43     * @param url The URL to open.
44     */
45    void onOpenInNewTab(String url, Referrer referrer);
46
47    /**
48     * Called when the {@code url} should be opened in a new incognito tab.
49     * @param url The URL to open.
50     */
51    void onOpenInNewIncognitoTab(String url);
52
53    /**
54     * Called when the {@code url} is of an image and should be opened in the same tab.
55     * @param url The image URL to open.
56     */
57    void onOpenImageUrl(String url, Referrer referrer);
58
59    /**
60     * Called when the {@code url} is of an image and should be opened in a new tab.
61     * @param url The image URL to open.
62     */
63    void onOpenImageInNewTab(String url, Referrer referrer);
64
65    /**
66     * Called when the {@code text} should be saved to the clipboard.
67     * @param text  The text to save to the clipboard.
68     * @param isUrl Whether or not the text is a URL.
69     */
70    void onSaveToClipboard(String text, boolean isUrl);
71
72    /**
73     * Called when the {@code url} is of an image and a link to the image should be saved to the
74     * clipboard.
75     * @param url The image URL.
76     */
77    void onSaveImageToClipboard(String url);
78
79    /**
80     * Called when a search by image should be performed in a new tab.
81     */
82    void onSearchByImageInNewTab();
83
84   /**
85    * @return page url.
86    */
87    String getPageUrl();
88}
89