Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 69a4df6

Browse files
authored
Fixes #3168 Context menu fixes (#3207)
* Don't show context menu for blob elements * Context menu fixes
1 parent 79098ed commit 69a4df6

3 files changed

Lines changed: 33 additions & 18 deletions

File tree

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,6 +1589,11 @@ public void onFullScreen(@NonNull GeckoSession session, boolean aFullScreen) {
15891589
public void onContextMenu(GeckoSession session, int screenX, int screenY, ContextElement element) {
15901590
hideContextMenus();
15911591

1592+
// We don't show the menu for blobs
1593+
if (UrlUtils.isBlobUri(element.srcUri)) {
1594+
return;
1595+
}
1596+
15921597
mContextMenu = new ContextMenuWidget(getContext());
15931598
mContextMenu.mWidgetPlacement.parentHandle = getHandle();
15941599
mContextMenu.setDismissCallback(this::hideContextMenus);

app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/menus/ContextMenuWidget.java

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import android.content.Context;
1111
import android.content.res.Configuration;
1212
import android.net.Uri;
13+
import android.webkit.URLUtil;
1314

1415
import androidx.annotation.StringRes;
1516

@@ -20,6 +21,7 @@
2021
import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate;
2122
import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement;
2223
import org.mozilla.vrbrowser.utils.StringUtils;
24+
import org.mozilla.vrbrowser.utils.UrlUtils;
2325

2426
import java.util.ArrayList;
2527

@@ -79,32 +81,36 @@ public void setDismissCallback(Runnable aCallback) {
7981

8082
public void setContextElement(ContextElement aContextElement) {
8183
mItems = new ArrayList<>();
82-
mItems.add(new MenuWidget.MenuItem(aContextElement.linkUri, 0, null));
8384
final WidgetManagerDelegate widgetManager = mWidgetManager;
84-
if (mWidgetManager.canOpenNewWindow()) {
85-
mItems.add(new MenuWidget.MenuItem(getContext().getString(R.string.context_menu_open_new_window_1), 0, () -> {
85+
if (aContextElement.linkUri != null && !aContextElement.linkUri.isEmpty()) {
86+
mItems.add(new MenuWidget.MenuItem(aContextElement.linkUri, 0, null));
87+
if (mWidgetManager.canOpenNewWindow()) {
88+
mItems.add(new MenuWidget.MenuItem(getContext().getString(R.string.context_menu_open_new_window_1), 0, () -> {
89+
if (!StringUtils.isEmpty(aContextElement.linkUri)) {
90+
widgetManager.openNewWindow(aContextElement.linkUri);
91+
}
92+
onDismiss();
93+
}));
94+
}
95+
mItems.add(new MenuWidget.MenuItem(getContext().getString(R.string.context_menu_open_new_tab_1), 0, () -> {
8696
if (!StringUtils.isEmpty(aContextElement.linkUri)) {
87-
widgetManager.openNewWindow(aContextElement.linkUri);
97+
widgetManager.openNewTab(aContextElement.linkUri);
98+
GleanMetricsService.Tabs.openedCounter(GleanMetricsService.Tabs.TabSource.CONTEXT_MENU);
8899
}
89100
onDismiss();
90101
}));
91-
}
92-
mItems.add(new MenuWidget.MenuItem(getContext().getString(R.string.context_menu_open_new_tab_1), 0, () -> {
93102
if (!StringUtils.isEmpty(aContextElement.linkUri)) {
94-
widgetManager.openNewTab(aContextElement.linkUri);
95-
GleanMetricsService.Tabs.openedCounter(GleanMetricsService.Tabs.TabSource.CONTEXT_MENU);
103+
mItems.add(new MenuWidget.MenuItem(getContext().getString(R.string.context_menu_download_link), 0, () -> {
104+
DownloadJob job = DownloadJob.fromLink(aContextElement);
105+
widgetManager.getFocusedWindow().startDownload(job, false);
106+
// TODO Add Download from context menu Telemetry
107+
onDismiss();
108+
}));
96109
}
97-
onDismiss();
98-
}));
99-
if (!StringUtils.isEmpty(aContextElement.linkUri)) {
100-
mItems.add(new MenuWidget.MenuItem(getContext().getString(R.string.context_menu_download_link), 0, () -> {
101-
DownloadJob job = DownloadJob.fromLink(aContextElement);
102-
widgetManager.getFocusedWindow().startDownload(job, false);
103-
// TODO Add Download from context menu Telemetry
104-
onDismiss();
105-
}));
110+
} else {
111+
mItems.add(new MenuWidget.MenuItem(aContextElement.srcUri, 0, null));
106112
}
107-
if (!StringUtils.isEmpty(aContextElement.srcUri)) {
113+
if (URLUtil.isHttpUrl(aContextElement.srcUri) || URLUtil.isHttpsUrl(aContextElement.srcUri)) {
108114
@StringRes int srcText;
109115
switch (aContextElement.type) {
110116
case ContextElement.TYPE_IMAGE:

app/src/common/shared/org/mozilla/vrbrowser/utils/UrlUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ public static Boolean isFileUri(@Nullable String aUri) {
114114
return aUri != null && aUri.startsWith("file");
115115
}
116116

117+
public static Boolean isBlobUri(@Nullable String aUri) {
118+
return aUri != null && aUri.startsWith("blob");
119+
}
120+
117121
public static Boolean isBlankUri(@Nullable Context context, @Nullable String aUri) {
118122
return context != null && aUri != null && aUri.equals(context.getString(R.string.about_blank));
119123
}

0 commit comments

Comments
 (0)