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

Commit bf1c535

Browse files
keianhzobluemarvin
authored andcommitted
Remove the send tabs menu item for private mode page (#2659)
1 parent badff03 commit bf1c535

4 files changed

Lines changed: 55 additions & 19 deletions

File tree

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

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.mozilla.vrbrowser.utils.AnimationHelper;
4949
import org.mozilla.vrbrowser.utils.ConnectivityReceiver;
5050
import org.mozilla.vrbrowser.utils.ServoUtils;
51+
import org.mozilla.vrbrowser.utils.UrlUtils;
5152

5253
import java.util.ArrayList;
5354
import java.util.Arrays;
@@ -1141,6 +1142,10 @@ private void startWidgetResize() {
11411142
}
11421143

11431144
private void showMenu() {
1145+
if (mAttachedWindow.getSession() == null) {
1146+
return;
1147+
}
1148+
11441149
if (mHamburgerMenu != null && mHamburgerMenu.isVisible()) {
11451150
// Release current selection menu to recreate it with different actions.
11461151
hideMenu();
@@ -1167,21 +1172,24 @@ public void onResize() {
11671172

11681173
@Override
11691174
public void onSwitchMode() {
1170-
int uaMode = mAttachedWindow.getSession().getUaMode();
1171-
if (uaMode == GeckoSessionSettings.USER_AGENT_MODE_DESKTOP) {
1172-
mHamburgerMenu.setUAMode(GeckoSessionSettings.USER_AGENT_MODE_MOBILE);
1173-
mAttachedWindow.getSession().setUaMode(GeckoSessionSettings.USER_AGENT_MODE_MOBILE);
1174-
1175-
} else {
1176-
mHamburgerMenu.setUAMode(GeckoSessionSettings.USER_AGENT_MODE_DESKTOP);
1177-
mAttachedWindow.getSession().setUaMode(GeckoSessionSettings.USER_AGENT_MODE_DESKTOP);
1175+
if (mAttachedWindow.getSession() != null) {
1176+
int uaMode = mAttachedWindow.getSession().getUaMode();
1177+
if (uaMode == GeckoSessionSettings.USER_AGENT_MODE_DESKTOP) {
1178+
mHamburgerMenu.setUAMode(GeckoSessionSettings.USER_AGENT_MODE_MOBILE);
1179+
mAttachedWindow.getSession().setUaMode(GeckoSessionSettings.USER_AGENT_MODE_MOBILE);
1180+
1181+
} else {
1182+
mHamburgerMenu.setUAMode(GeckoSessionSettings.USER_AGENT_MODE_DESKTOP);
1183+
mAttachedWindow.getSession().setUaMode(GeckoSessionSettings.USER_AGENT_MODE_DESKTOP);
1184+
}
11781185
}
11791186

11801187
hideMenu();
11811188
}
11821189
});
11831190
}
11841191

1192+
mHamburgerMenu.setSendTabEnabled(!UrlUtils.isPrivateAboutPage(getContext(), mAttachedWindow.getSession().getCurrentUri()));
11851193
mHamburgerMenu.setUAMode(mAttachedWindow.getSession().getUaMode());
11861194
mHamburgerMenu.show(UIWidget.KEEP_FOCUS);
11871195
}

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

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.mozilla.vrbrowser.ui.widgets.menus;
22

3+
import android.annotation.SuppressLint;
34
import android.content.Context;
45
import android.view.View;
56

@@ -13,6 +14,7 @@
1314
import org.mozilla.vrbrowser.utils.ViewUtils;
1415

1516
import java.util.ArrayList;
17+
import java.util.HashMap;
1618
import java.util.Optional;
1719

1820
public class HamburgerMenuWidget extends MenuWidget implements WidgetManagerDelegate.FocusChangeListener {
@@ -29,14 +31,14 @@ public interface MenuDelegate {
2931
public static final int WINDOW_RESIZE = 1;
3032
public static final int SWITCH_MODE = 2;
3133

32-
ArrayList<MenuItem> mItems;
34+
HashMap<Integer, MenuItem> mItems;
3335
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
3436
Optional<MenuDelegate> mMenuDelegate;
37+
boolean mSendTabEnabled = true;
3538

3639
public HamburgerMenuWidget(Context aContext) {
3740
super(aContext, R.layout.hamburger_menu);
3841
initialize();
39-
createMenuItems();
4042
}
4143

4244
private void initialize() {
@@ -45,6 +47,8 @@ private void initialize() {
4547
R.drawable.context_menu_item_background,
4648
R.drawable.context_menu_item_background_single);
4749
mAdapter.updateLayoutId(R.layout.hamburger_menu_item);
50+
51+
updateMenuItems();
4852
}
4953

5054
@Override
@@ -94,31 +98,39 @@ public void setMenuDelegate(MenuDelegate delegate) {
9498
mMenuDelegate = Optional.ofNullable(delegate);
9599
}
96100

97-
private void createMenuItems() {
98-
mItems = new ArrayList<>();
101+
@SuppressLint("UseSparseArrays")
102+
private void updateMenuItems() {
103+
mItems = new HashMap<>();
99104

100-
mItems.add(SEND_TAB,
101-
new MenuItem(getContext().getString(R.string.hamburger_menu_send_tab),
102-
R.drawable.ic_icon_tabs_sendtodevice,
103-
() -> mMenuDelegate.ifPresent(MenuDelegate::onSendTab)));
105+
if (mSendTabEnabled) {
106+
mItems.put(SEND_TAB,
107+
new MenuItem(getContext().getString(R.string.hamburger_menu_send_tab),
108+
R.drawable.ic_icon_tabs_sendtodevice,
109+
() -> mMenuDelegate.ifPresent(MenuDelegate::onSendTab)));
110+
}
104111

105-
mItems.add(WINDOW_RESIZE,
112+
mItems.put(WINDOW_RESIZE,
106113
new MenuItem(getContext().getString(R.string.hamburger_menu_resize),
107114
R.drawable.ic_icon_resize,
108115
() -> mMenuDelegate.ifPresent(MenuDelegate::onResize)));
109116

110-
mItems.add(SWITCH_MODE,
117+
mItems.put(SWITCH_MODE,
111118
new MenuItem(getContext().getString(R.string.hamburger_menu_switch_to_desktop),
112119
R.drawable.ic_icon_ua_default,
113120
() -> mMenuDelegate.ifPresent(MenuDelegate::onSwitchMode)));
114121

115-
super.updateMenuItems(mItems);
122+
super.updateMenuItems(new ArrayList<>(mItems.values()));
116123

117124
mWidgetPlacement.height = mItems.size() * WidgetPlacement.dpDimension(getContext(), R.dimen.hamburger_menu_item_height);
118125
mWidgetPlacement.height += mBorderWidth * 2;
119126
mWidgetPlacement.height += WidgetPlacement.dpDimension(getContext(), R.dimen.hamburger_menu_triangle_height);
120127
}
121128

129+
public void setSendTabEnabled(boolean value) {
130+
mSendTabEnabled = value;
131+
updateMenuItems();
132+
}
133+
122134
// FocusChangeListener
123135

124136
@Override

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,10 @@ public boolean onHover(View view, MotionEvent event) {
183183
return false;
184184
}
185185

186+
if (mItems.size() <= position) {
187+
return false;
188+
}
189+
186190
MenuItem item = mItems.get(position);
187191
if (item.mCallback == null) {
188192
return false;

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55

66
package org.mozilla.vrbrowser.utils;
77

8+
import android.content.Context;
9+
import android.util.Base64;
10+
11+
import androidx.annotation.NonNull;
812
import androidx.annotation.Nullable;
913

14+
import org.mozilla.vrbrowser.R;
15+
1016
import java.util.regex.Pattern;
1117

1218

@@ -61,4 +67,10 @@ public static String stripProtocol(@Nullable String host) {
6167
public static boolean isDomain(String text) {
6268
return domainPattern.matcher(text).find();
6369
}
70+
71+
public static boolean isPrivateAboutPage(@NonNull Context context, @NonNull String uri) {
72+
InternalPages.PageResources pageResources = InternalPages.PageResources.create(R.raw.private_mode, R.raw.private_style);
73+
byte[] privatePageBytes = InternalPages.createAboutPage(context, pageResources);
74+
return uri.equals("data:text/html;base64," + Base64.encodeToString(privatePageBytes, Base64.NO_WRAP));
75+
}
6476
}

0 commit comments

Comments
 (0)