From c9f36b70e4d71f1b16d346b23897cc6ad2024c25 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Thu, 30 Apr 2020 23:12:55 +0200 Subject: [PATCH] Fixes #3291 Update URL bar icons visibility based on permissions state (#3292) * Update url bar icons visibility based on state change * Update the URL bar before the location change. --- .../vrbrowser/ui/viewmodel/WindowViewModel.java | 16 ++++++++++------ .../vrbrowser/ui/views/NavigationURLBar.java | 2 ++ app/src/main/res/layout/navigation_url.xml | 4 ++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/viewmodel/WindowViewModel.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/viewmodel/WindowViewModel.java index 992cfbde8..f4c50d4f0 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/viewmodel/WindowViewModel.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/viewmodel/WindowViewModel.java @@ -168,7 +168,10 @@ public WindowViewModel(Application application) { isDrmUsed = new MutableLiveData<>(new ObservableBoolean(false)); isUrlBarButtonsVisible = new MediatorLiveData<>(); - isUrlBarButtonsVisible.addSource(url, mIsUrlBarButtonsVisibleObserver); + isUrlBarButtonsVisible.addSource(isTrackingEnabled, mIsUrlBarButtonsVisibleObserver); + isUrlBarButtonsVisible.addSource(isDrmUsed, mIsUrlBarButtonsVisibleObserver); + isUrlBarButtonsVisible.addSource(isPopUpAvailable, mIsUrlBarButtonsVisibleObserver); + isUrlBarButtonsVisible.addSource(isWebXRUsed, mIsUrlBarButtonsVisibleObserver); isUrlBarButtonsVisible.setValue(new ObservableBoolean(false)); isUrlBarIconsVisible = new MediatorLiveData<>(); @@ -310,15 +313,16 @@ public void onChanged(Spannable aUrl) { } }; - private Observer mIsUrlBarButtonsVisibleObserver = new Observer() { + private Observer mIsUrlBarButtonsVisibleObserver = new Observer() { @Override - public void onChanged(Spannable aUrl) { + public void onChanged(ObservableBoolean o) { + String aUrl = url.getValue().toString(); isUrlBarButtonsVisible.postValue(new ObservableBoolean( !isFocused.getValue().get() && !isLibraryVisible.getValue().get() && - !UrlUtils.isContentFeed(getApplication(), aUrl.toString()) && - !UrlUtils.isPrivateAboutPage(getApplication(), aUrl.toString()) && - (URLUtil.isHttpUrl(aUrl.toString()) || URLUtil.isHttpsUrl(aUrl.toString())) && + !UrlUtils.isContentFeed(getApplication(), aUrl) && + !UrlUtils.isPrivateAboutPage(getApplication(), aUrl) && + (URLUtil.isHttpUrl(aUrl) || URLUtil.isHttpsUrl(aUrl)) && ( (SettingsStore.getInstance(getApplication()).getTrackingProtectionLevel() != ContentBlocking.EtpLevel.NONE) || isPopUpAvailable.getValue().get() || diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/NavigationURLBar.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/NavigationURLBar.java index 56b0ea4e4..faf3f3296 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/NavigationURLBar.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/NavigationURLBar.java @@ -375,6 +375,8 @@ public void handleURLEdit(String text) { GleanMetricsService.urlBarEvent(false); } + mViewModel.setUrl(url); + mSession.loadUri(url); if (mDelegate != null) { diff --git a/app/src/main/res/layout/navigation_url.xml b/app/src/main/res/layout/navigation_url.xml index a0ef0bc25..4f9cec9b8 100644 --- a/app/src/main/res/layout/navigation_url.xml +++ b/app/src/main/res/layout/navigation_url.xml @@ -51,6 +51,7 @@ android:paddingTop="6dp" android:paddingBottom="6dp" android:src="@{viewmodel.isTrackingEnabled ? @drawable/ic_icon_tracking_enabled : @drawable/ic_icon_tracking_disabled}" + tools:src="@drawable/ic_icon_tracking_enabled" app:privateMode="@{viewmodel.isPrivateSession}" android:tint="@color/fog" app:visibleGone="@{!UrlUtils.isPrivateAboutPage(context, viewmodel.url.toString()) && settingsViewmodel.isTrackingProtectionEnabled && !UrlUtils.isContentFeed(context, viewmodel.url.toString())}" @@ -79,6 +80,7 @@ android:paddingStart="@{settingsViewmodel.isTrackingProtectionEnabled ? @dimen/navigation_bar_icon_padding_small : @dimen/navigation_bar_icon_padding_big}" android:paddingEnd="2dp" android:src="@{settingsViewmodel.isDrmEnabled ? @drawable/ic_icon_drm_allowed : @drawable/ic_icon_drm_blocked}" + tools:src="@drawable/ic_icon_drm_allowed" android:tint="@color/fog" android:tooltipText="@{settingsViewmodel.isDrmEnabled ? @string/drm_enabled_tooltip : @string/drm_disabled_tooltip}" app:privateMode="@{viewmodel.isPrivateSession}" /> @@ -107,6 +109,7 @@ android:paddingStart="@{settingsViewmodel.isTrackingProtectionEnabled || (settingsViewmodel.isDrmEnabled && viewmodel.isDrmUsed) ? @dimen/navigation_bar_icon_padding_small : @dimen/navigation_bar_icon_padding_big}" android:paddingEnd="2dp" android:src="@{viewmodel.isPopUpBlocked ? @drawable/ic_icon_popup_blocked : @drawable/ic_icon_popup}" + tools:src="@drawable/ic_icon_popup_blocked" android:tint="@color/fog" android:tooltipText="@string/popup_tooltip" app:privateMode="@{viewmodel.isPrivateSession}" /> @@ -135,6 +138,7 @@ android:paddingStart="@{settingsViewmodel.isTrackingProtectionEnabled || (settingsViewmodel.isPopUpBlockingEnabled && viewmodel.isPopUpBlocked) || (settingsViewmodel.isDrmEnabled && viewmodel.isDrmUsed) ? @dimen/navigation_bar_icon_padding_small : @dimen/navigation_bar_icon_padding_big}" android:paddingEnd="2dp" android:src="@{viewmodel.isWebXRBlocked ? @drawable/ic_icon_webxr_blocked : @drawable/ic_icon_webxr_allowed}" + tools:src="@drawable/ic_icon_webxr_blocked" app:privateMode="@{viewmodel.isPrivateSession}" android:tint="@color/fog" android:tooltipText="@{viewmodel.isWebXRBlocked ? @string/webxr_blocked_tooltip : @string/webxr_allowed_tooltip}" />