mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Allow forcing local handling of certain requests
This commit is contained in:
committed by
Arjan Schrijver
parent
15f404f2f9
commit
11e18c0a63
+13
-9
@@ -44,13 +44,9 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.greenrobot.dao.query.Query;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.URLFilterEntry;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.URLFilterEntryDao;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.weather.Weather;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.weather.WeatherMapper;
|
||||
@@ -58,10 +54,9 @@ import nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton;
|
||||
|
||||
public class GBWebClient extends WebViewClient {
|
||||
|
||||
private String[] AllowedDomains = new String[]{
|
||||
private String[] LocallySupportedDomains = new String[]{
|
||||
"openweathermap.org", //for weather :)
|
||||
"rawgit.com", //for trekvolle
|
||||
"tagesschau.de" //for internal watchapp tests
|
||||
};
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GBWebClient.class);
|
||||
|
||||
@@ -86,7 +81,8 @@ public class GBWebClient extends WebViewClient {
|
||||
}
|
||||
|
||||
private WebResourceResponse mimicReply(Uri requestedUri) {
|
||||
boolean urlIsAllowed = StringUtils.indexOfAny(requestedUri.getHost(), AllowedDomains) != -1;
|
||||
boolean locallySupported = StringUtils.indexOfAny(requestedUri.getHost(), LocallySupportedDomains) != -1;
|
||||
boolean urlIsAllowed = locallySupported;
|
||||
List<URLFilterEntry> urlFilterEntries = DBHelper.getURLFilterEntries();
|
||||
|
||||
// Search for matches
|
||||
@@ -99,10 +95,18 @@ public class GBWebClient extends WebViewClient {
|
||||
}
|
||||
}
|
||||
|
||||
// Handle OpenWeatherMap locally
|
||||
boolean forceLocal = false;
|
||||
SharedPreferences sharedPreferences = GBApplication.getPrefs().getPreferences();
|
||||
if (locallySupported && sharedPreferences.getBoolean("pref_key_internethelper_force_local", true)) {
|
||||
matchFound = true;
|
||||
urlIsAllowed = true;
|
||||
forceLocal = true;
|
||||
}
|
||||
|
||||
// Add to database if missing
|
||||
if (requestedUri.getHost() != null && !requestedUri.toString().startsWith("file://") && !matchFound) {
|
||||
LOG.info("URL not matched with URLFilterEntry, storing new entry");
|
||||
SharedPreferences sharedPreferences = GBApplication.getPrefs().getPreferences();
|
||||
String defaultAction = sharedPreferences.getString("pref_key_internethelper_new_url_action", "deny");
|
||||
urlIsAllowed = defaultAction.equals("allow");
|
||||
URLFilterEntry filterEntry = new URLFilterEntry();
|
||||
@@ -113,7 +117,7 @@ public class GBWebClient extends WebViewClient {
|
||||
|
||||
// Handle request
|
||||
if (requestedUri.getHost() != null && !requestedUri.toString().startsWith("file://") && urlIsAllowed) {
|
||||
if (WebViewSingleton.getInstance().ensureInternetHelperBound()) {
|
||||
if (!forceLocal && WebViewSingleton.getInstance().ensureInternetHelperBound()) {
|
||||
LOG.debug("WEBVIEW forwarding request to the internet helper");
|
||||
try {
|
||||
return WebViewSingleton.getInstance().send(requestedUri);
|
||||
|
||||
@@ -17,6 +17,13 @@
|
||||
android:summary="Set the default action to take when a URL is requested that isn't already in the list below."
|
||||
android:title="New URL action"
|
||||
app:iconSpaceReserved="false" />
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="true"
|
||||
android:key="pref_key_internethelper_force_local"
|
||||
android:layout="@layout/preference_checkbox"
|
||||
android:title="Intercept supported requests"
|
||||
android:summary="Some internet requests can be intercepted and responded to locally without sending anything to the internet."
|
||||
app:iconSpaceReserved="false" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:key="pref_key_internethelper_url_list"
|
||||
|
||||
Reference in New Issue
Block a user