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

Commit d4af5a0

Browse files
authoredMar 25, 2020
Reload WebXR sites when settings are changed (#3031)
1 parent f5e424d commit d4af5a0

File tree

4 files changed

+36
-5
lines changed

4 files changed

+36
-5
lines changed
 

‎app/src/common/shared/org/mozilla/vrbrowser/browser/engine/Session.java

+4
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,10 @@ public void setWebXRState(@SessionState.WebXRState int aWebXRState) {
794794
}
795795
}
796796

797+
public @SessionState.WebXRState int getWebXRState() {
798+
return mState.mWebXRState;
799+
}
800+
797801
// Session Settings
798802

799803
protected void setServo(final boolean enabled) {

‎app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/SitePermissionAdapter.java

+4
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ public void setSites(@NonNull List<SitePermission> sites) {
6060
}
6161
}
6262

63+
public List<SitePermission> getSites() {
64+
return mDisplayList;
65+
}
66+
6367
private void notifyDiff(List<SitePermission> newDisplayList) {
6468
DiffUtil.DiffResult result = DiffUtil.calculateDiff(new DiffUtil.Callback() {
6569
@Override

‎app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/PrivacyOptionsView.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@
2222
import org.mozilla.geckoview.StorageController;
2323
import org.mozilla.vrbrowser.R;
2424
import org.mozilla.vrbrowser.browser.SettingsStore;
25+
import org.mozilla.vrbrowser.browser.engine.SessionState;
2526
import org.mozilla.vrbrowser.browser.engine.SessionStore;
2627
import org.mozilla.vrbrowser.databinding.OptionsPrivacyBinding;
2728
import org.mozilla.vrbrowser.db.SitePermission;
2829
import org.mozilla.vrbrowser.ui.views.settings.SwitchSetting;
2930
import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate;
3031
import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement;
32+
import org.mozilla.vrbrowser.ui.widgets.WindowWidget;
3133
import org.mozilla.vrbrowser.utils.DeviceType;
3234

3335
import java.util.ArrayList;
@@ -36,8 +38,6 @@ class PrivacyOptionsView extends SettingsView {
3638

3739
private OptionsPrivacyBinding mBinding;
3840
private ArrayList<Pair<SwitchSetting, String>> mPermissionButtons;
39-
private SettingsView mPopUpsBlockingExceptions;
40-
private SettingsView mWebXRSitesExceptions;
4141

4242
public PrivacyOptionsView(Context aContext, WidgetManagerDelegate aWidgetManager) {
4343
super(aContext, aWidgetManager);
@@ -87,9 +87,6 @@ protected void updateUI() {
8787
TextView permissionsTitleText = findViewById(R.id.permissionsTitle);
8888
permissionsTitleText.setText(getContext().getString(R.string.security_options_permissions_title, getContext().getString(R.string.app_name)));
8989

90-
mPopUpsBlockingExceptions = new SitePermissionsOptionsView(getContext(), mWidgetManager, SitePermission.SITE_PERMISSION_POPUP);
91-
mWebXRSitesExceptions = new SitePermissionsOptionsView(getContext(), mWidgetManager, SitePermission.SITE_PERMISSION_WEBXR);
92-
9390
mPermissionButtons = new ArrayList<>();
9491
mPermissionButtons.add(Pair.create(findViewById(R.id.cameraPermissionSwitch), Manifest.permission.CAMERA));
9592
mPermissionButtons.add(Pair.create(findViewById(R.id.microphonePermissionSwitch), Manifest.permission.RECORD_AUDIO));
@@ -323,6 +320,9 @@ private void setWebXR(boolean value, boolean doApply) {
323320

324321
if (doApply) {
325322
SettingsStore.getInstance(getContext()).setWebXREnabled(value);
323+
for (WindowWidget window: mWidgetManager.getWindows().getCurrentWindows()) {
324+
window.getSession().reload(GeckoSession.LOAD_FLAGS_BYPASS_CACHE);
325+
}
326326
}
327327
}
328328

‎app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/SitePermissionsOptionsView.java

+23
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,18 @@
1414
import androidx.databinding.DataBindingUtil;
1515
import androidx.lifecycle.Observer;
1616

17+
import org.mozilla.geckoview.GeckoSession;
1718
import org.mozilla.vrbrowser.R;
19+
import org.mozilla.vrbrowser.browser.engine.Session;
1820
import org.mozilla.vrbrowser.databinding.OptionsExceptionsBinding;
1921
import org.mozilla.vrbrowser.db.SitePermission;
2022
import org.mozilla.vrbrowser.ui.adapters.SitePermissionAdapter;
2123
import org.mozilla.vrbrowser.ui.callbacks.PermissionSiteItemCallback;
2224
import org.mozilla.vrbrowser.ui.viewmodel.SitePermissionViewModel;
2325
import org.mozilla.vrbrowser.ui.widgets.WidgetManagerDelegate;
2426
import org.mozilla.vrbrowser.ui.widgets.WidgetPlacement;
27+
import org.mozilla.vrbrowser.ui.widgets.WindowWidget;
28+
import org.mozilla.vrbrowser.utils.UrlUtils;
2529

2630
import java.util.List;
2731

@@ -102,7 +106,13 @@ public Point getDimensions() {
102106

103107
@Override
104108
protected boolean reset() {
109+
List<SitePermission> sites = mAdapter.getSites();
105110
mViewModel.deleteAll(mCategory);
111+
if (sites != null) {
112+
for (SitePermission site: sites) {
113+
reloadIfSameDomain(site.url);
114+
}
115+
}
106116
return true;
107117
}
108118

@@ -150,6 +160,19 @@ public void onChanged(List<SitePermission> sites) {
150160
@Override
151161
public void onDelete(@NonNull SitePermission item) {
152162
mViewModel.deleteSite(item);
163+
reloadIfSameDomain(item.url);
153164
}
154165
};
166+
167+
private void reloadIfSameDomain(String aHost) {
168+
if (mCategory != SitePermission.SITE_PERMISSION_WEBXR) {
169+
return;
170+
}
171+
for (WindowWidget window: mWidgetManager.getWindows().getCurrentWindows()) {
172+
Session session = window.getSession();
173+
if (aHost.equalsIgnoreCase(UrlUtils.getHost(session.getCurrentUri()))) {
174+
session.reload(GeckoSession.LOAD_FLAGS_BYPASS_CACHE);
175+
}
176+
}
177+
}
155178
}

0 commit comments

Comments
 (0)
This repository has been archived.