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

Commit 1f805d7

Browse files
authored
Fixes #3169 Hide Tracking icon for file URIs (#3206)
* Hide ETP icon for file URIs * Show file name in the title bar for file URIs
1 parent 69a4df6 commit 1f805d7

File tree

3 files changed

+71
-15
lines changed

3 files changed

+71
-15
lines changed

app/src/common/shared/org/mozilla/vrbrowser/ui/viewmodel/WindowViewModel.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import androidx.lifecycle.MutableLiveData;
1616
import androidx.lifecycle.Observer;
1717

18+
import org.mozilla.geckoview.ContentBlocking;
1819
import org.mozilla.vrbrowser.R;
1920
import org.mozilla.vrbrowser.browser.SettingsStore;
2021
import org.mozilla.vrbrowser.ui.widgets.Windows;
@@ -67,6 +68,8 @@ public class WindowViewModel extends AndroidViewModel {
6768
private MutableLiveData<ObservableBoolean> isWebXRBlocked;
6869
private MutableLiveData<ObservableBoolean> isTrackingEnabled;
6970
private MutableLiveData<ObservableBoolean> isDrmUsed;
71+
private MediatorLiveData<ObservableBoolean> isUrlBarButtonsVisible;
72+
private MediatorLiveData<ObservableBoolean> isUrlBarIconsVisible;
7073

7174
public WindowViewModel(Application application) {
7275
super(application);
@@ -162,6 +165,15 @@ public WindowViewModel(Application application) {
162165

163166
isTrackingEnabled = new MutableLiveData<>(new ObservableBoolean(true));
164167
isDrmUsed = new MutableLiveData<>(new ObservableBoolean(false));
168+
169+
isUrlBarButtonsVisible = new MediatorLiveData<>();
170+
isUrlBarButtonsVisible.addSource(url, mIsUrlBarButtonsVisibleObserver);
171+
isUrlBarButtonsVisible.setValue(new ObservableBoolean(false));
172+
173+
isUrlBarIconsVisible = new MediatorLiveData<>();
174+
isUrlBarIconsVisible.addSource(isLoading, mIsUrlBarIconsVisibleObserver);
175+
isUrlBarIconsVisible.addSource(isInsecureVisible, mIsUrlBarIconsVisibleObserver);
176+
isUrlBarIconsVisible.setValue(new ObservableBoolean(false));
165177
}
166178

167179
private Observer<ObservableBoolean> mIsTopBarVisibleObserver = new Observer<ObservableBoolean>() {
@@ -297,6 +309,34 @@ public void onChanged(Spannable aUrl) {
297309
}
298310
};
299311

312+
private Observer<Spannable> mIsUrlBarButtonsVisibleObserver = new Observer<Spannable>() {
313+
@Override
314+
public void onChanged(Spannable aUrl) {
315+
isUrlBarButtonsVisible.postValue(new ObservableBoolean(
316+
!isFocused.getValue().get() &&
317+
!isLibraryVisible.getValue().get() &&
318+
!UrlUtils.isContentFeed(getApplication(), aUrl.toString()) &&
319+
!UrlUtils.isFileUri(aUrl.toString()) &&
320+
(
321+
(SettingsStore.getInstance(getApplication()).getTrackingProtectionLevel() != ContentBlocking.EtpLevel.NONE) ||
322+
isPopUpAvailable.getValue().get() ||
323+
isDrmUsed.getValue().get() ||
324+
isWebXRUsed.getValue().get()
325+
)
326+
));
327+
}
328+
};
329+
330+
private Observer<ObservableBoolean> mIsUrlBarIconsVisibleObserver = new Observer<ObservableBoolean>() {
331+
@Override
332+
public void onChanged(ObservableBoolean o) {
333+
isUrlBarIconsVisible.postValue(new ObservableBoolean(
334+
isLoading.getValue().get() ||
335+
isInsecureVisible.getValue().get()
336+
));
337+
}
338+
};
339+
300340
public void refresh() {
301341
url.postValue(url.getValue());
302342
hint.postValue(getHintValue());
@@ -730,4 +770,14 @@ public MutableLiveData<ObservableBoolean> getIsDrmUsed() {
730770
public void setIsDrmUsed(boolean isEnabled) {
731771
this.isDrmUsed.postValue(new ObservableBoolean(isEnabled));
732772
}
773+
774+
@NonNull
775+
public MutableLiveData<ObservableBoolean> getIsUrlBarButtonsVisible() {
776+
return isUrlBarButtonsVisible;
777+
}
778+
779+
@NonNull
780+
public MutableLiveData<ObservableBoolean> getIsUrlBarIconsVisible() {
781+
return isUrlBarIconsVisible;
782+
}
733783
}

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

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.mozilla.vrbrowser.R;
1616
import org.mozilla.vrbrowser.browser.SettingsStore;
1717

18+
import java.io.File;
1819
import java.net.MalformedURLException;
1920
import java.net.URI;
2021
import java.net.URL;
@@ -128,16 +129,22 @@ public static String titleBarUrl(@Nullable String aUri) {
128129
}
129130

130131
if (URLUtil.isValidUrl(aUri)) {
131-
try {
132-
URI uri = URI.create(aUri);
133-
URL url = new URL(
134-
uri.getScheme() != null ? uri.getScheme() : "",
135-
uri.getAuthority() != null ? uri.getAuthority() : "",
136-
"");
137-
return url.toString();
138-
139-
} catch (MalformedURLException | IllegalArgumentException e) {
140-
return "";
132+
if (UrlUtils.isFileUri(aUri)) {
133+
File file = new File(aUri);
134+
return file.getName();
135+
136+
} else {
137+
try {
138+
URI uri = URI.create(aUri);
139+
URL url = new URL(
140+
uri.getScheme() != null ? uri.getScheme() : "",
141+
uri.getAuthority() != null ? uri.getAuthority() : "",
142+
"");
143+
return url.toString();
144+
145+
} catch (MalformedURLException | IllegalArgumentException e) {
146+
return "";
147+
}
141148
}
142149

143150
} else {

app/src/main/res/layout/navigation_url.xml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
android:layout_marginStart="2dp"
4242
android:addStatesFromChildren="true"
4343
android:orientation="horizontal"
44-
app:visibleGone="@{!viewmodel.isLibraryVisible &amp;&amp; !UrlUtils.isContentFeed(context, viewmodel.url.toString())}">
44+
app:visibleGone="@{!viewmodel.isFocused &amp;&amp; viewmodel.isUrlBarButtonsVisible}">
4545

4646
<org.mozilla.vrbrowser.ui.views.UIButton
4747
android:id="@+id/tracking"
@@ -143,16 +143,15 @@
143143
<View
144144
android:layout_width="4dp"
145145
android:layout_height="match_parent"
146-
app:visibleGone="@{!UrlUtils.isHomeUri(context, viewmodel.url.toString())}"/>
147-
146+
app:visibleGone="@{!viewmodel.isUrlBarIconsVisible}"/>
148147
</LinearLayout>
149148

150149
<View
151150
android:id="@+id/padding"
152151
android:layout_width="15dp"
153152
android:layout_height="match_parent"
154153
android:layout_toEndOf="@id/startButtonsLayout"
155-
app:visibleGone="@{(!settingsViewmodel.isTrackingProtectionEnabled &amp;&amp; !viewmodel.isPopUpAvailable &amp;&amp; !viewmodel.isWebXRUsed) || viewmodel.isLibraryVisible || UrlUtils.isHomeUri(context, viewmodel.url.toString())}"/>
154+
app:visibleGone="@{!viewmodel.isUrlBarButtonsVisible || viewmodel.isFocused}"/>
156155

157156
<LinearLayout
158157
android:id="@+id/icons"
@@ -161,7 +160,7 @@
161160
android:orientation="horizontal"
162161
android:layout_toEndOf="@id/padding"
163162
android:layout_centerVertical="true"
164-
app:visibleGone="@{!viewmodel.isFocused}">
163+
app:visibleGone="@{viewmodel.isUrlBarIconsVisible &amp;&amp; !viewmodel.isFocused}">
165164
<ImageView
166165
android:id="@+id/loadingView"
167166
android:layout_width="24dp"

0 commit comments

Comments
 (0)