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

Commit f5e424d

Browse files
authored
Toggle quick permission dialog when clicking the URL bar icons (#3036)
* Toggle quick permission dialog when clicking the URL bar icons * Reload affected sessions on all windows
1 parent 28cd676 commit f5e424d

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

app/src/common/shared/org/mozilla/vrbrowser/browser/PermissionDelegate.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.mozilla.vrbrowser.db.SitePermission;
2121
import org.mozilla.vrbrowser.ui.viewmodel.SitePermissionViewModel;
2222
import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate;
23+
import org.mozilla.vrbrowser.ui.widgets.WindowWidget;
2324
import org.mozilla.vrbrowser.ui.widgets.dialogs.PermissionWidget;
2425
import org.mozilla.vrbrowser.utils.SystemUtils;
2526
import org.mozilla.vrbrowser.utils.UrlUtils;
@@ -286,11 +287,20 @@ public void setPermissionAllowed(String uri, @SitePermission.Category int catego
286287
mSitePermissionModel.deleteSite(site);
287288
} else {
288289
if (site == null) {
289-
site = new SitePermission(uri, false, SitePermission.SITE_PERMISSION_WEBXR);
290+
site = new SitePermission(uri, false, category);
290291
mSitePermissions.add(site);
291292
}
292293
site.allowed = false;
293294
mSitePermissionModel.insertSite(site);
294295
}
296+
297+
// Reload URIs with the same domain
298+
for (WindowWidget window: mWidgetManager.getWindows().getCurrentWindows()) {
299+
Session session = window.getSession();
300+
if (uri.equalsIgnoreCase(UrlUtils.getHost(session.getCurrentUri()))) {
301+
session.reload(GeckoSession.LOAD_FLAGS_BYPASS_CACHE);
302+
}
303+
}
304+
295305
}
296306
}

app/src/common/shared/org/mozilla/vrbrowser/ui/views/NavigationURLBar.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,6 @@ public void setClickable(boolean clickable) {
404404
mAudio.playSound(AudioEngine.Sound.CLICK);
405405
}
406406

407-
view.requestFocusFromTouch();
408407
if (mDelegate != null) {
409408
mDelegate.onWebXRButtonClicked();
410409
}

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import android.util.Pair;
1717
import android.view.LayoutInflater;
1818
import android.view.View;
19-
import android.webkit.URLUtil;
2019
import android.widget.EditText;
2120

2221
import androidx.annotation.NonNull;
@@ -37,7 +36,6 @@
3736
import org.mozilla.vrbrowser.browser.SessionChangeListener;
3837
import org.mozilla.vrbrowser.browser.SettingsStore;
3938
import org.mozilla.vrbrowser.browser.engine.Session;
40-
import org.mozilla.vrbrowser.browser.engine.SessionState;
4139
import org.mozilla.vrbrowser.browser.engine.SessionStore;
4240
import org.mozilla.vrbrowser.databinding.NavigationBarBinding;
4341
import org.mozilla.vrbrowser.db.SitePermission;
@@ -918,7 +916,7 @@ public void onPopUpButtonClicked() {
918916

919917
@Override
920918
public void onWebXRButtonClicked() {
921-
showQuickPermission(mBinding.navigationBarNavigation.urlBar.getWebxRButton(),
919+
toggleQuickPermission(mBinding.navigationBarNavigation.urlBar.getWebxRButton(),
922920
SitePermission.SITE_PERMISSION_WEBXR,
923921
mViewModel.getIsWebXRBlocked().getValue().get());
924922
}
@@ -1151,6 +1149,9 @@ private void showNotification(int notificationId, @NotificationPosition int posi
11511149

11521150
public void hideAllNotifications() {
11531151
NotificationManager.hideAll();
1152+
if (mQuickPermissionWidget != null && mQuickPermissionWidget.isVisible()) {
1153+
mQuickPermissionWidget.hide(KEEP_WIDGET);
1154+
}
11541155
}
11551156

11561157
private void hideNotification(int notificationId) {
@@ -1163,26 +1164,29 @@ private void hideNotification(int notificationId) {
11631164
}
11641165
};
11651166

1166-
private void showQuickPermission(UIButton target, @SitePermission.Category int aCategory, boolean aBlocked) {
1167+
private void toggleQuickPermission(UIButton target, @SitePermission.Category int aCategory, boolean aBlocked) {
11671168
if (mQuickPermissionWidget == null) {
11681169
mQuickPermissionWidget = new QuickPermissionWidget(getContext());
11691170
}
11701171

1172+
if (mQuickPermissionWidget.isVisible() && mQuickPermissionWidget.getCategory() == aCategory) {
1173+
mQuickPermissionWidget.hide(KEEP_WIDGET);
1174+
return;
1175+
}
1176+
11711177
String uri = UrlUtils.getHost(mAttachedWindow.getSession().getCurrentUri());
11721178
mQuickPermissionWidget.setData(uri, aCategory, aBlocked);
11731179
mQuickPermissionWidget.setDelegate(new QuickPermissionWidget.Delegate() {
11741180
@Override
11751181
public void onBlock() {
11761182
SessionStore.get().setPermissionAllowed(uri, aCategory, false);
11771183
mQuickPermissionWidget.onDismiss();
1178-
mAttachedWindow.getSession().reload();
11791184
}
11801185

11811186
@Override
11821187
public void onAllow() {
11831188
SessionStore.get().setPermissionAllowed(uri, aCategory, true);
11841189
mQuickPermissionWidget.onDismiss();
1185-
mAttachedWindow.getSession().reload();
11861190
}
11871191
});
11881192
mQuickPermissionWidget.getPlacement().parentHandle = getHandle();

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ public void updateUI() {
6464
mBinding.executePendingBindings();
6565
}
6666

67+
public @SitePermission.Category int getCategory() {
68+
return mCategory;
69+
}
70+
6771
@Override
6872
public void onConfigurationChanged(Configuration newConfig) {
6973
super.onConfigurationChanged(newConfig);

0 commit comments

Comments
 (0)