| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/appmenu/ChromeAppMenuPropertiesDelegate.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/appmenu/ChromeAppMenuPropertiesDelegate.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/appmenu/ChromeAppMenuPropertiesDelegate.java
|
| deleted file mode 100644
|
| index e7d92ad7d9cdd3fc8abd50ebd0676d0e3a770bde..0000000000000000000000000000000000000000
|
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/appmenu/ChromeAppMenuPropertiesDelegate.java
|
| +++ /dev/null
|
| @@ -1,223 +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.appmenu;
|
| -
|
| -import android.text.TextUtils;
|
| -import android.view.Menu;
|
| -import android.view.MenuItem;
|
| -
|
| -import org.chromium.chrome.R;
|
| -import org.chromium.chrome.browser.BookmarkUtils;
|
| -import org.chromium.chrome.browser.BookmarksBridge;
|
| -import org.chromium.chrome.browser.ChromeActivity;
|
| -import org.chromium.chrome.browser.ChromeBrowserProviderClient;
|
| -import org.chromium.chrome.browser.Tab;
|
| -import org.chromium.chrome.browser.UrlConstants;
|
| -import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
|
| -import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| -import org.chromium.chrome.browser.share.ShareHelper;
|
| -import org.chromium.chrome.browser.util.FeatureUtilities;
|
| -import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
|
| -import org.chromium.printing.PrintingController;
|
| -
|
| -/**
|
| - * App Menu helper that handles hiding and showing menu items based on activity state.
|
| - */
|
| -public class ChromeAppMenuPropertiesDelegate implements AppMenuPropertiesDelegate {
|
| - // Indices for different levels in drawable.btn_reload_stop.
|
| - // Used only when preparing menu and refresh reload button in menu when tab
|
| - // page load status changes.
|
| - private static final int RELOAD_BUTTON_LEVEL_RELOAD = 0;
|
| - private static final int RELOAD_BUTTON_LEVEL_STOP_LOADING = 1;
|
| -
|
| - protected MenuItem mReloadMenuItem;
|
| -
|
| - protected final ChromeActivity mActivity;
|
| -
|
| - public ChromeAppMenuPropertiesDelegate(ChromeActivity activity) {
|
| - mActivity = activity;
|
| - }
|
| -
|
| - @Override
|
| - public boolean shouldShowAppMenu() {
|
| - return mActivity.shouldShowAppMenu();
|
| - }
|
| -
|
| - /**
|
| - * Called every time the menu is shown. This assumes that the provided menu contains all the
|
| - * items expected in the application menu (i.e. that the main menu has been inflated into it).
|
| - */
|
| - @Override
|
| - public void prepareMenu(Menu menu) {
|
| - // Exactly one of these will be true, depending on the type of menu showing.
|
| - boolean isPageMenu;
|
| - boolean isOverviewMenu;
|
| - boolean isTabletEmptyModeMenu;
|
| -
|
| - boolean isOverview = mActivity.isInOverviewMode();
|
| - boolean isIncognito = mActivity.getCurrentTabModel().isIncognito();
|
| - Tab currentTab = mActivity.getActivityTab();
|
| -
|
| - // Determine which menu to show.
|
| - if (mActivity.isTablet()) {
|
| - isPageMenu = !isOverview && mActivity.getCurrentTabModel().getCount() != 0;
|
| - isOverviewMenu = isOverview && mActivity.getCurrentTabModel().getCount() != 0;
|
| - isTabletEmptyModeMenu = !isPageMenu && mActivity.getCurrentTabModel().getCount() == 0;
|
| - } else {
|
| - isPageMenu = !isOverview;
|
| - isOverviewMenu = isOverview;
|
| - isTabletEmptyModeMenu = false;
|
| - }
|
| -
|
| - menu.setGroupVisible(R.id.PAGE_MENU, isPageMenu);
|
| - menu.setGroupVisible(R.id.OVERVIEW_MODE_MENU, isOverviewMenu);
|
| - menu.setGroupVisible(R.id.TABLET_EMPTY_MODE_MENU, isTabletEmptyModeMenu);
|
| -
|
| - if (isPageMenu && currentTab != null) {
|
| - String url = currentTab.getUrl();
|
| - boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_SCHEME)
|
| - || url.startsWith(UrlConstants.CHROME_NATIVE_SCHEME);
|
| -
|
| - // Update the icon row items (not shown on tablet).
|
| - menu.findItem(R.id.icon_row_menu_id).setVisible(!mActivity.isTablet());
|
| - if (!mActivity.isTablet()) {
|
| - // Disable the "Forward" menu item if there is no page to go to.
|
| - MenuItem forwardMenuItem = menu.findItem(R.id.forward_menu_id);
|
| - forwardMenuItem.setEnabled(currentTab.canGoForward());
|
| -
|
| - mReloadMenuItem = menu.findItem(R.id.reload_menu_id);
|
| - mReloadMenuItem.setIcon(R.drawable.btn_reload_stop);
|
| - loadingStateChanged(currentTab.isLoading());
|
| -
|
| - MenuItem bookmarkMenuItem = menu.findItem(R.id.bookmark_this_page_id);
|
| - bookmarkMenuItem.setEnabled(BookmarksBridge.isEditBookmarksEnabled(
|
| - mActivity.getActivityTab().getProfile().getOriginalProfile()));
|
| - if (currentTab.getBookmarkId() != ChromeBrowserProviderClient.INVALID_BOOKMARK_ID) {
|
| - bookmarkMenuItem.setIcon(R.drawable.btn_star_filled);
|
| - bookmarkMenuItem.setChecked(true);
|
| - bookmarkMenuItem.setTitleCondensed(mActivity.getString(R.string.edit_bookmark));
|
| - } else {
|
| - bookmarkMenuItem.setIcon(R.drawable.btn_star);
|
| - bookmarkMenuItem.setChecked(false);
|
| - bookmarkMenuItem.setTitleCondensed(null);
|
| - }
|
| - }
|
| -
|
| - // Hide "Recent tabs" in incognito mode or when sync can't be enabled.
|
| - MenuItem recentTabsMenuItem = menu.findItem(R.id.recent_tabs_menu_id);
|
| - recentTabsMenuItem.setVisible(!isIncognito && FeatureUtilities.canAllowSync(mActivity));
|
| - recentTabsMenuItem.setTitle(R.string.menu_recent_tabs);
|
| -
|
| - // Don't allow "chrome://" pages to be shared.
|
| - menu.findItem(R.id.share_row_menu_id).setVisible(!isChromeScheme);
|
| -
|
| - ShareHelper.configureDirectShareMenuItem(
|
| - mActivity, menu.findItem(R.id.direct_share_menu_id));
|
| -
|
| - // Disable find in page on the native NTP.
|
| - menu.findItem(R.id.find_in_page_id).setVisible(
|
| - !currentTab.isNativePage() && currentTab.getWebContents() != null);
|
| -
|
| - // Hide 'Add to homescreen' on all chrome:// pages -- Android doesn't know how to direct
|
| - // those URLs. Also hide it on incognito pages to avoid problems where users create
|
| - // shortcuts in incognito mode and then open the webapp in regular mode. Also check if
|
| - // creating shortcuts is supported at all.
|
| - MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id);
|
| - boolean canAddShortcutToHomescreen =
|
| - BookmarkUtils.isAddToHomeIntentSupported(mActivity);
|
| - homescreenItem.setVisible(
|
| - canAddShortcutToHomescreen && !isChromeScheme && !isIncognito);
|
| -
|
| - // Hide request desktop site on all chrome:// pages except for the NTP. Check request
|
| - // desktop site if it's activated on this page.
|
| - MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id);
|
| - requestItem.setVisible(!isChromeScheme || currentTab.isNativePage());
|
| - requestItem.setChecked(currentTab.getUseDesktopUserAgent());
|
| - requestItem.setTitleCondensed(requestItem.isChecked()
|
| - ? mActivity.getString(R.string.menu_request_desktop_site_on)
|
| - : mActivity.getString(R.string.menu_request_desktop_site_off));
|
| -
|
| - PrintingController printingController =
|
| - mActivity.getChromeApplication().getPrintingController();
|
| - disableEnableMenuItem(menu, R.id.print_id,
|
| - printingController != null && !currentTab.isNativePage(),
|
| - printingController != null && !printingController.isBusy()
|
| - && PrefServiceBridge.getInstance().isPrintingEnabled(),
|
| - PrefServiceBridge.getInstance().isPrintingManaged());
|
| -
|
| - // Only display reader mode settings menu option if the current page is in reader mode.
|
| - menu.findItem(R.id.reader_mode_prefs_id)
|
| - .setVisible(DomDistillerUrlUtils.isDistilledPage(currentTab.getUrl()));
|
| - }
|
| -
|
| - if (isOverviewMenu) {
|
| - if (isIncognito) {
|
| - // Hide normal close all tabs item.
|
| - menu.findItem(R.id.close_all_tabs_menu_id).setVisible(false);
|
| - // Enable close incognito tabs only if there are incognito tabs.
|
| - menu.findItem(R.id.close_all_incognito_tabs_menu_id).setEnabled(true);
|
| - } else {
|
| - // Hide close incognito tabs item.
|
| - menu.findItem(R.id.close_all_incognito_tabs_menu_id).setVisible(false);
|
| - // Enable close all tabs if there are normal tabs or incognito tabs.
|
| - menu.findItem(R.id.close_all_tabs_menu_id).setEnabled(
|
| - mActivity.getTabModelSelector().getTotalTabCount() > 0);
|
| - }
|
| - }
|
| -
|
| - // Incognito NTP in Document mode should not show "New incognito tab" menu item.
|
| - boolean incognitoItemVisible = !FeatureUtilities.isDocumentMode(mActivity)
|
| - || (currentTab == null)
|
| - || !(TextUtils.equals(currentTab.getUrl(), UrlConstants.NTP_URL) && isIncognito);
|
| -
|
| - // Disable new incognito tab when it is blocked (e.g. by a policy).
|
| - // findItem(...).setEnabled(...)" is not enough here, because of the inflated
|
| - // main_menu.xml contains multiple items with the same id in different groups
|
| - // e.g.: new_incognito_tab_menu_id.
|
| - disableEnableMenuItem(menu, R.id.new_incognito_tab_menu_id,
|
| - incognitoItemVisible,
|
| - PrefServiceBridge.getInstance().isIncognitoModeEnabled(),
|
| - PrefServiceBridge.getInstance().isIncognitoModeManaged());
|
| - mActivity.prepareMenu(menu);
|
| - }
|
| -
|
| - /**
|
| - * Notify the delegate that the load state changed.
|
| - * @param isLoading Whether the page is currently loading.
|
| - */
|
| - public void loadingStateChanged(boolean isLoading) {
|
| - if (mReloadMenuItem != null) {
|
| - mReloadMenuItem.getIcon().setLevel(isLoading
|
| - ? RELOAD_BUTTON_LEVEL_STOP_LOADING : RELOAD_BUTTON_LEVEL_RELOAD);
|
| - mReloadMenuItem.setTitle(isLoading
|
| - ? R.string.accessibility_btn_stop_loading : R.string.accessibility_btn_refresh);
|
| - }
|
| - }
|
| -
|
| - /**
|
| - * Notify the delegate that menu was dismissed.
|
| - */
|
| - public void onMenuDismissed() {
|
| - mReloadMenuItem = null;
|
| - }
|
| -
|
| - // Set enabled to be |enable| for all MenuItems with |id| in |menu|.
|
| - // If |managed| is true then the "Managed By Enterprise" icon is shown next to the menu.
|
| - private void disableEnableMenuItem(
|
| - Menu menu, int id, boolean visible, boolean enabled, boolean managed) {
|
| - for (int i = 0; i < menu.size(); ++i) {
|
| - MenuItem item = menu.getItem(i);
|
| - if (item.getItemId() == id && item.isVisible()) {
|
| - item.setVisible(visible);
|
| - item.setEnabled(enabled);
|
| - if (managed) {
|
| - item.setIcon(ManagedPreferencesUtils.getManagedByEnterpriseIconId());
|
| - } else {
|
| - item.setIcon(null);
|
| - }
|
| - }
|
| - }
|
| - }
|
| -}
|
|
|