OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 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 |
| 5 package org.chromium.chrome.browser.hosted; |
| 6 |
| 7 import android.content.Context; |
| 8 import android.text.TextUtils; |
| 9 import android.view.ContextMenu; |
| 10 import android.view.Menu; |
| 11 |
| 12 import com.google.android.apps.chrome.R; |
| 13 |
| 14 import org.chromium.chrome.browser.CompositorChromeActivity; |
| 15 import org.chromium.chrome.browser.ContentViewUtil; |
| 16 import org.chromium.chrome.browser.Tab; |
| 17 import org.chromium.chrome.browser.UrlUtilities; |
| 18 import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; |
| 19 import org.chromium.chrome.browser.contextmenu.ContextMenuParams; |
| 20 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator; |
| 21 import org.chromium.chrome.browser.tab.ChromeTab; |
| 22 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
| 23 import org.chromium.content_public.browser.WebContents; |
| 24 import org.chromium.ui.base.WindowAndroid; |
| 25 |
| 26 /** |
| 27 * A chrome tab that is only used in hosted mode. |
| 28 */ |
| 29 public class HostedTab extends ChromeTab { |
| 30 |
| 31 private TabChromeContextMenuItemDelegate |
| 32 mContextMenuDelegate = new TabChromeContextMenuItemDelegate() { |
| 33 @Override |
| 34 public boolean startDownload(String url, boolean isLink) { |
| 35 // Behave similarly to ChromeTabChromeContextMenuItemDelegat
e in ChromeTab. |
| 36 return !isLink || !shouldInterceptContextMenuDownload(url); |
| 37 } |
| 38 }; |
| 39 |
| 40 /** |
| 41 * Construct an HostedTab. It might load a prerendered {@link WebContents} f
or the URL, if |
| 42 * the hosted mode service has successfully warmed up for the url. |
| 43 */ |
| 44 public HostedTab(CompositorChromeActivity activity, WindowAndroid windowAndr
oid, |
| 45 long sessionId, String url, int parentTabId) { |
| 46 super(Tab.generateValidId(Tab.INVALID_TAB_ID), activity, false, windowAn
droid, |
| 47 TabLaunchType.FROM_EXTERNAL_APP, parentTabId, null, null); |
| 48 WebContents webContents = ChromeBrowserConnection.getInstance(activity.g
etApplication()) |
| 49 .takePrerenderedUrl(sessionId, url, nu
ll); |
| 50 if (webContents == null) { |
| 51 webContents = ContentViewUtil.createWebContents(isIncognito(), false
); |
| 52 } |
| 53 initialize(webContents, activity.getTabContentManager(), false); |
| 54 getView().requestFocus(); |
| 55 } |
| 56 |
| 57 @Override |
| 58 protected ContextMenuPopulator createContextMenuPopulator() { |
| 59 return new ChromeContextMenuPopulator(mContextMenuDelegate) { |
| 60 @Override |
| 61 public void buildContextMenu(ContextMenu menu, Context context, |
| 62 ContextMenuParams params) { |
| 63 String linkUrl = params.getLinkUrl(); |
| 64 if (linkUrl != null) linkUrl = linkUrl.trim(); |
| 65 if (!TextUtils.isEmpty(linkUrl)) { |
| 66 menu.add(Menu.NONE, org.chromium.chrome.R.id.contextmenu_cop
y_link_address_text, |
| 67 Menu.NONE, org.chromium.chrome.R.string.contextmenu_
copy_link_address); |
| 68 } |
| 69 |
| 70 String linkText = params.getLinkText(); |
| 71 if (linkText != null) linkText = linkText.trim(); |
| 72 if (!TextUtils.isEmpty(linkText)) { |
| 73 menu.add(Menu.NONE, org.chromium.chrome.R.id.contextmenu_cop
y_link_text, |
| 74 Menu.NONE, org.chromium.chrome.R.string.contextmenu_
copy_link_text); |
| 75 } |
| 76 if (params.isImage()) { |
| 77 menu.add(Menu.NONE, R.id.contextmenu_save_image, Menu.NONE, |
| 78 R.string.contextmenu_save_image); |
| 79 menu.add(Menu.NONE, R.id.contextmenu_open_image, Menu.NONE, |
| 80 R.string.contextmenu_open_image); |
| 81 menu.add(Menu.NONE, R.id.contextmenu_copy_image, Menu.NONE, |
| 82 R.string.contextmenu_copy_image); |
| 83 menu.add(Menu.NONE, R.id.contextmenu_copy_image_url, Menu.NO
NE, |
| 84 R.string.contextmenu_copy_image_url); |
| 85 } else if (UrlUtilities.isDownloadableScheme(params.getLinkUrl()
)) { |
| 86 // "Save link" is not shown for image. |
| 87 menu.add(Menu.NONE, R.id.contextmenu_save_link_as, Menu.NONE
, |
| 88 R.string.contextmenu_save_link); |
| 89 } |
| 90 } |
| 91 }; |
| 92 } |
| 93 } |
OLD | NEW |