| Index: chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
| index 2ca251af34e9451fabdb9eede12177d1ff6a875d..064749bfbf7386e1d2f22d7d605d7f479ea178a1 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
| @@ -38,10 +38,20 @@ import java.util.Set;
|
| * A {@link ContextMenuPopulator} used for showing the default Chrome context menu.
|
| */
|
| public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| -
|
| private static final String TAG = "CCMenuPopulator";
|
|
|
| /**
|
| + * Defines the Groups of each Context Menu Item
|
| + */
|
| + @Retention(RetentionPolicy.SOURCE)
|
| + @IntDef({LINK, IMAGE, VIDEO})
|
| + public @interface ContextMenuGroup {}
|
| +
|
| + public static final int LINK = 0;
|
| + public static final int IMAGE = 1;
|
| + public static final int VIDEO = 2;
|
| +
|
| + /**
|
| * Defines the context menu modes
|
| */
|
| @Retention(RetentionPolicy.SOURCE)
|
| @@ -56,71 +66,68 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| public static final int CUSTOM_TAB_MODE = 1;
|
| public static final int FULLSCREEN_TAB_MODE = 2;
|
|
|
| - /**
|
| - * Defines the Groups of each Context Menu Item
|
| - */
|
| - @Retention(RetentionPolicy.SOURCE)
|
| - @IntDef({LINK, IMAGE, VIDEO})
|
| - public @interface ContextMenuGroup {}
|
| -
|
| - public static final int LINK = 0;
|
| - public static final int IMAGE = 1;
|
| - public static final int VIDEO = 2;
|
| -
|
| // Items that are included in all context menus.
|
| - private static final Set<ContextMenuItem> BASE_WHITELIST =
|
| - Collections.unmodifiableSet(CollectionUtil.newHashSet(ContextMenuItem.COPY_LINK_ADDRESS,
|
| - ContextMenuItem.CALL, ContextMenuItem.SEND_MESSAGE,
|
| - ContextMenuItem.ADD_TO_CONTACTS, ContextMenuItem.COPY,
|
| - ContextMenuItem.COPY_LINK_TEXT, ContextMenuItem.LOAD_ORIGINAL_IMAGE,
|
| - ContextMenuItem.SAVE_LINK_AS, ContextMenuItem.SAVE_IMAGE,
|
| - ContextMenuItem.SHARE_IMAGE, ContextMenuItem.SAVE_VIDEO));
|
| + private static final Set<? extends ContextMenuItem> BASE_WHITELIST =
|
| + Collections.unmodifiableSet(CollectionUtil.newHashSet(
|
| + ChromeContextMenuItem.COPY_LINK_ADDRESS, ChromeContextMenuItem.CALL,
|
| + ChromeContextMenuItem.SEND_MESSAGE, ChromeContextMenuItem.ADD_TO_CONTACTS,
|
| + ChromeContextMenuItem.COPY, ChromeContextMenuItem.COPY_LINK_TEXT,
|
| + ChromeContextMenuItem.LOAD_ORIGINAL_IMAGE, ChromeContextMenuItem.SAVE_LINK_AS,
|
| + ChromeContextMenuItem.SAVE_IMAGE, ChromeContextMenuItem.SHARE_IMAGE,
|
| + ChromeContextMenuItem.SAVE_VIDEO));
|
|
|
| // Items that are included for normal Chrome browser mode.
|
| - private static final Set<ContextMenuItem> NORMAL_MODE_WHITELIST =
|
| - Collections.unmodifiableSet(CollectionUtil.newHashSet(ContextMenuItem.OPEN_IN_NEW_TAB,
|
| - ContextMenuItem.OPEN_IN_OTHER_WINDOW, ContextMenuItem.OPEN_IN_INCOGNITO_TAB,
|
| - ContextMenuItem.SAVE_LINK_AS, ContextMenuItem.OPEN_IMAGE_IN_NEW_TAB,
|
| - ContextMenuItem.SEARCH_BY_IMAGE));
|
| + private static final Set<? extends ContextMenuItem> NORMAL_MODE_WHITELIST =
|
| + Collections.unmodifiableSet(CollectionUtil.newHashSet(
|
| + ChromeContextMenuItem.OPEN_IN_NEW_TAB,
|
| + ChromeContextMenuItem.OPEN_IN_OTHER_WINDOW,
|
| + ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB, ChromeContextMenuItem.SAVE_LINK_AS,
|
| + ChromeContextMenuItem.OPEN_IMAGE_IN_NEW_TAB,
|
| + ChromeContextMenuItem.SEARCH_BY_IMAGE));
|
|
|
| // Additional items for custom tabs mode.
|
| - private static final Set<ContextMenuItem> CUSTOM_TAB_MODE_WHITELIST =
|
| - Collections.unmodifiableSet(CollectionUtil.newHashSet(ContextMenuItem.OPEN_IMAGE,
|
| - ContextMenuItem.SEARCH_BY_IMAGE, ContextMenuItem.OPEN_IN_NEW_CHROME_TAB,
|
| - ContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB,
|
| - ContextMenuItem.OPEN_IN_BROWSER_ID));
|
| + private static final Set<? extends ContextMenuItem> CUSTOM_TAB_MODE_WHITELIST =
|
| + Collections.unmodifiableSet(CollectionUtil.newHashSet(ChromeContextMenuItem.OPEN_IMAGE,
|
| + ChromeContextMenuItem.SEARCH_BY_IMAGE,
|
| + ChromeContextMenuItem.OPEN_IN_NEW_CHROME_TAB,
|
| + ChromeContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB,
|
| + ChromeContextMenuItem.OPEN_IN_BROWSER_ID));
|
|
|
| // Additional items for fullscreen tabs mode.
|
| - private static final Set<ContextMenuItem> FULLSCREEN_TAB_MODE_WHITELIST =
|
| - Collections.unmodifiableSet(CollectionUtil.newHashSet(ContextMenuItem.OPEN_IN_CHROME));
|
| + private static final Set<? extends ContextMenuItem> FULLSCREEN_TAB_MODE_WHITELIST =
|
| + Collections.unmodifiableSet(
|
| + CollectionUtil.newHashSet(ChromeContextMenuItem.OPEN_IN_CHROME));
|
|
|
| // The order of the items within each lists determines the order of the context menu.
|
| - private static final List<ContextMenuItem> CUSTOM_TAB_GROUP = Collections.unmodifiableList(
|
| - CollectionUtil.newArrayList(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB,
|
| - ContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB,
|
| - ContextMenuItem.OPEN_IN_BROWSER_ID));
|
| -
|
| - private static final List<ContextMenuItem> LINK_GROUP =
|
| - Collections.unmodifiableList(CollectionUtil.newArrayList(
|
| - ContextMenuItem.OPEN_IN_OTHER_WINDOW, ContextMenuItem.OPEN_IN_NEW_TAB,
|
| - ContextMenuItem.OPEN_IN_INCOGNITO_TAB, ContextMenuItem.COPY_LINK_ADDRESS,
|
| - ContextMenuItem.COPY_LINK_TEXT, ContextMenuItem.SAVE_LINK_AS));
|
| -
|
| - private static final List<ContextMenuItem> IMAGE_GROUP =
|
| + private static final List<? extends ContextMenuItem> CUSTOM_TAB_GROUP =
|
| + Collections.unmodifiableList(
|
| + CollectionUtil.newArrayList(ChromeContextMenuItem.OPEN_IN_NEW_CHROME_TAB,
|
| + ChromeContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB,
|
| + ChromeContextMenuItem.OPEN_IN_BROWSER_ID));
|
| +
|
| + private static final List<? extends ContextMenuItem> LINK_GROUP = Collections.unmodifiableList(
|
| + CollectionUtil.newArrayList(ChromeContextMenuItem.OPEN_IN_OTHER_WINDOW,
|
| + ChromeContextMenuItem.OPEN_IN_NEW_TAB,
|
| + ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB,
|
| + ChromeContextMenuItem.COPY_LINK_ADDRESS, ChromeContextMenuItem.COPY_LINK_TEXT,
|
| + ChromeContextMenuItem.SAVE_LINK_AS));
|
| +
|
| + private static final List<? extends ContextMenuItem> IMAGE_GROUP =
|
| Collections.unmodifiableList(CollectionUtil.newArrayList(
|
| - ContextMenuItem.LOAD_ORIGINAL_IMAGE, ContextMenuItem.SAVE_IMAGE,
|
| - ContextMenuItem.OPEN_IMAGE, ContextMenuItem.OPEN_IMAGE_IN_NEW_TAB,
|
| - ContextMenuItem.SEARCH_BY_IMAGE, ContextMenuItem.SHARE_IMAGE));
|
| + ChromeContextMenuItem.LOAD_ORIGINAL_IMAGE, ChromeContextMenuItem.SAVE_IMAGE,
|
| + ChromeContextMenuItem.OPEN_IMAGE, ChromeContextMenuItem.OPEN_IMAGE_IN_NEW_TAB,
|
| + ChromeContextMenuItem.SEARCH_BY_IMAGE, ChromeContextMenuItem.SHARE_IMAGE));
|
|
|
| - private static final List<ContextMenuItem> MESSAGE_GROUP = Collections.unmodifiableList(
|
| - CollectionUtil.newArrayList(ContextMenuItem.CALL, ContextMenuItem.SEND_MESSAGE,
|
| - ContextMenuItem.ADD_TO_CONTACTS, ContextMenuItem.COPY));
|
| + private static final List<? extends ContextMenuItem> MESSAGE_GROUP =
|
| + Collections.unmodifiableList(CollectionUtil.newArrayList(ChromeContextMenuItem.CALL,
|
| + ChromeContextMenuItem.SEND_MESSAGE, ChromeContextMenuItem.ADD_TO_CONTACTS,
|
| + ChromeContextMenuItem.COPY));
|
|
|
| - private static final List<ContextMenuItem> VIDEO_GROUP =
|
| - Collections.unmodifiableList(CollectionUtil.newArrayList(ContextMenuItem.SAVE_VIDEO));
|
| + private static final List<? extends ContextMenuItem> VIDEO_GROUP = Collections.unmodifiableList(
|
| + CollectionUtil.newArrayList(ChromeContextMenuItem.SAVE_VIDEO));
|
|
|
| - private static final List<ContextMenuItem> OTHER_GROUP = Collections.unmodifiableList(
|
| - CollectionUtil.newArrayList(ContextMenuItem.OPEN_IN_CHROME));
|
| + private static final List<? extends ContextMenuItem> OTHER_GROUP = Collections.unmodifiableList(
|
| + CollectionUtil.newArrayList(ChromeContextMenuItem.OPEN_IN_CHROME));
|
|
|
| private final ContextMenuItemDelegate mDelegate;
|
| private final int mMode;
|
| @@ -259,9 +266,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| supportedOptions.addAll(NORMAL_MODE_WHITELIST);
|
| }
|
| } else {
|
| - supportedOptions.add(ContextMenuItem.COPY_LINK_ADDRESS);
|
| - supportedOptions.add(ContextMenuItem.COPY_LINK_TEXT);
|
| - supportedOptions.add(ContextMenuItem.COPY);
|
| + supportedOptions.add(ChromeContextMenuItem.COPY_LINK_ADDRESS);
|
| + supportedOptions.add(ChromeContextMenuItem.COPY_LINK_TEXT);
|
| + supportedOptions.add(ChromeContextMenuItem.COPY);
|
| }
|
|
|
| Set<ContextMenuItem> disabledOptions = getDisabledOptions(params);
|
| @@ -345,8 +352,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| itemGroups.add(new Pair<>(titleResId, items));
|
| }
|
|
|
| - private void addValidItems(List<ContextMenuItem> validItems, List<ContextMenuItem> allItems,
|
| - Set<ContextMenuItem> supportedOptions, Set<ContextMenuItem> disabledOptions) {
|
| + private static void addValidItems(List<ContextMenuItem> validItems,
|
| + List<? extends ContextMenuItem> allItems, Set<ContextMenuItem> supportedOptions,
|
| + Set<ContextMenuItem> disabledOptions) {
|
| for (int i = 0; i < allItems.size(); i++) {
|
| ContextMenuItem item = allItems.get(i);
|
| if (supportedOptions.contains(item) && !disabledOptions.contains(item)) {
|
| @@ -361,10 +369,10 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| * given for example (a, b, c) will be added to list d, e f, as a, b, c, d, e, f not
|
| * c, b, a, d, e, f.
|
| */
|
| - private void addValidItemsToFront(List<ContextMenuItem> validItems,
|
| - List<ContextMenuItem> allItems, Set<ContextMenuItem> supportedOptions,
|
| + private static void addValidItemsToFront(List<ContextMenuItem> validItems,
|
| + List<? extends ContextMenuItem> allItems, Set<ContextMenuItem> supportedOptions,
|
| Set<ContextMenuItem> disabledOptions) {
|
| - for (int i = allItems.size() - 1; i >= 0; i--) {
|
| + for (int i = 0; i < allItems.size(); i++) {
|
| ContextMenuItem item = allItems.get(i);
|
| if (supportedOptions.contains(item) && !disabledOptions.contains(item)) {
|
| assert !validItems.contains(item);
|
| @@ -395,83 +403,83 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| }
|
|
|
| if (params.isAnchor() && !mDelegate.isOpenInOtherWindowSupported()) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_OTHER_WINDOW);
|
| }
|
|
|
| if (mDelegate.isIncognito() || !mDelegate.isIncognitoSupported()) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB);
|
| }
|
|
|
| if (params.getLinkText().trim().isEmpty() || params.isImage()) {
|
| - disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT);
|
| + disabledOptions.add(ChromeContextMenuItem.COPY_LINK_TEXT);
|
| }
|
|
|
| if (params.isAnchor() && !isAcceptedScheme(params.getLinkUrl())) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_OTHER_WINDOW);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_NEW_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB);
|
| }
|
|
|
| if (isEmptyUrl(params.getLinkUrl())) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_OTHER_WINDOW);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_NEW_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB);
|
| }
|
|
|
| if (MailTo.isMailTo(params.getLinkUrl())) {
|
| - disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT);
|
| - disabledOptions.add(ContextMenuItem.COPY_LINK_ADDRESS);
|
| + disabledOptions.add(ChromeContextMenuItem.COPY_LINK_TEXT);
|
| + disabledOptions.add(ChromeContextMenuItem.COPY_LINK_ADDRESS);
|
| if (!mDelegate.supportsSendEmailMessage()) {
|
| - disabledOptions.add(ContextMenuItem.SEND_MESSAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SEND_MESSAGE);
|
| }
|
| if (TextUtils.isEmpty(MailTo.parse(params.getLinkUrl()).getTo())
|
| || !mDelegate.supportsAddToContacts()) {
|
| - disabledOptions.add(ContextMenuItem.ADD_TO_CONTACTS);
|
| + disabledOptions.add(ChromeContextMenuItem.ADD_TO_CONTACTS);
|
| }
|
| - disabledOptions.add(ContextMenuItem.CALL);
|
| + disabledOptions.add(ChromeContextMenuItem.CALL);
|
| } else if (UrlUtilities.isTelScheme(params.getLinkUrl())) {
|
| - disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT);
|
| - disabledOptions.add(ContextMenuItem.COPY_LINK_ADDRESS);
|
| + disabledOptions.add(ChromeContextMenuItem.COPY_LINK_TEXT);
|
| + disabledOptions.add(ChromeContextMenuItem.COPY_LINK_ADDRESS);
|
| if (!mDelegate.supportsCall()) {
|
| - disabledOptions.add(ContextMenuItem.CALL);
|
| + disabledOptions.add(ChromeContextMenuItem.CALL);
|
| }
|
| if (!mDelegate.supportsSendTextMessage()) {
|
| - disabledOptions.add(ContextMenuItem.SEND_MESSAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SEND_MESSAGE);
|
| }
|
| if (!mDelegate.supportsAddToContacts()) {
|
| - disabledOptions.add(ContextMenuItem.ADD_TO_CONTACTS);
|
| + disabledOptions.add(ChromeContextMenuItem.ADD_TO_CONTACTS);
|
| }
|
| }
|
|
|
| if (!isDownloadableScheme(params.getLinkUrl())) {
|
| - disabledOptions.add(ContextMenuItem.SAVE_LINK_AS);
|
| + disabledOptions.add(ChromeContextMenuItem.SAVE_LINK_AS);
|
| }
|
|
|
| boolean isSrcDownloadableScheme = isDownloadableScheme(params.getSrcUrl());
|
| if (params.isVideo()) {
|
| boolean saveableAndDownloadable = params.canSaveMedia() && isSrcDownloadableScheme;
|
| if (!saveableAndDownloadable) {
|
| - disabledOptions.add(ContextMenuItem.SAVE_VIDEO);
|
| + disabledOptions.add(ChromeContextMenuItem.SAVE_VIDEO);
|
| }
|
| } else if (params.isImage() && params.imageWasFetchedLoFi()) {
|
| DataReductionProxyUma.previewsLoFiContextMenuAction(
|
| DataReductionProxyUma.ACTION_LOFI_LOAD_IMAGE_CONTEXT_MENU_SHOWN);
|
| // All image context menu items other than "Load image," "Open original image in
|
| // new tab," and "Copy image URL" should be disabled on Lo-Fi images.
|
| - disabledOptions.add(ContextMenuItem.SAVE_IMAGE);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IMAGE);
|
| - disabledOptions.add(ContextMenuItem.SEARCH_BY_IMAGE);
|
| - disabledOptions.add(ContextMenuItem.SHARE_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SAVE_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SEARCH_BY_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SHARE_IMAGE);
|
| } else if (params.isImage() && !params.imageWasFetchedLoFi()) {
|
| - disabledOptions.add(ContextMenuItem.LOAD_ORIGINAL_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.LOAD_ORIGINAL_IMAGE);
|
|
|
| if (!isSrcDownloadableScheme) {
|
| - disabledOptions.add(ContextMenuItem.SAVE_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SAVE_IMAGE);
|
| }
|
|
|
| // Avoid showing open image option for same image which is already opened.
|
| if (mDelegate.getPageUrl().equals(params.getSrcUrl())) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IMAGE);
|
| }
|
| final TemplateUrlService templateUrlServiceInstance = getTemplateUrlService();
|
| final boolean isSearchByImageAvailable = isSrcDownloadableScheme
|
| @@ -480,7 +488,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| && templateUrlServiceInstance.getDefaultSearchEngineTemplateUrl() != null;
|
|
|
| if (!isSearchByImageAvailable) {
|
| - disabledOptions.add(ContextMenuItem.SEARCH_BY_IMAGE);
|
| + disabledOptions.add(ChromeContextMenuItem.SEARCH_BY_IMAGE);
|
| }
|
| }
|
|
|
| @@ -488,17 +496,17 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
| try {
|
| URI uri = new URI(getUrl(params));
|
| if (UrlUtilities.isInternalScheme(uri) || isEmptyUrl(getUrl(params))) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_BROWSER_ID);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_NEW_CHROME_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_BROWSER_ID);
|
| } else if (ChromePreferenceManager.getInstance().getCachedChromeDefaultBrowser()) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_BROWSER_ID);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_BROWSER_ID);
|
| if (!mDelegate.isIncognitoSupported()) {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB);
|
| }
|
| } else {
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB);
|
| - disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_NEW_CHROME_TAB);
|
| + disabledOptions.add(ChromeContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB);
|
| }
|
| } catch (URISyntaxException e) {
|
| return disabledOptions;
|
|
|