Repository navigation
Expand file tree
/
Copy pathEnhancedWebViewClient.java
More file actions
69 lines (54 loc) · 2.22 KB
/
Copy pathEnhancedWebViewClient.java
File metadata and controls
69 lines (54 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.viaadvancedbrowser.browser;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.viaadvancedbrowser.network.AdBlocker;
import com.viaadvancedbrowser.network.HTTPSEverywhere;
import com.viaadvancedbrowser.password.PasswordManager;
import com.viaadvancedbrowser.script.ScriptManager;
public class EnhancedWebViewClient extends WebViewClient {
private ScriptManager scriptManager;
private PasswordManager passwordManager;
private HTTPSEverywhere httpsEverywhere;
private AdBlocker adBlocker;
public EnhancedWebViewClient(ScriptManager scriptManager, PasswordManager passwordManager) {
this.scriptManager = scriptManager;
this.passwordManager = passwordManager;
this.httpsEverywhere = new HTTPSEverywhere();
this.adBlocker = new AdBlocker();
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
// Ad blocking
if (adBlocker.isAd(url)) {
return new WebResourceResponse("text/plain", "UTF-8", null);
}
// HTTPS upgrades
String upgradedUrl = httpsEverywhere.upgradeToHTTPS(url);
if (!upgradedUrl.equals(url)) {
// Handle HTTPS upgrade
}
return super.shouldInterceptRequest(view, request);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Inject user scripts
scriptManager.injectScripts(view, url);
// Auto-fill passwords if available
passwordManager.autoFill(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
// Apply HTTPS everywhere
String secureUrl = httpsEverywhere.upgradeToHTTPS(url);
if (!secureUrl.equals(url)) {
view.loadUrl(secureUrl);
return true;
}
return super.shouldOverrideUrlLoading(view, request);
}
}