Loading core/java/android/webkit/JWebCoreJavaBridge.java +1 −0 Original line number Diff line number Diff line Loading @@ -307,4 +307,5 @@ final class JWebCoreJavaBridge extends Handler { public native void addPackageNames(Set<String> packageNames); public native void addPackageName(String packageName); public native void removePackageName(String packageName); public native void updateProxy(String newProxy); } core/java/android/webkit/WebView.java +39 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,8 @@ import android.graphics.RectF; import android.graphics.Region; import android.graphics.Shader; import android.graphics.drawable.Drawable; import android.net.Proxy; import android.net.ProxyProperties; import android.net.Uri; import android.net.http.SslCertificate; import android.os.AsyncTask; Loading Loading @@ -981,6 +983,7 @@ public class WebView extends AbsoluteLayout */ init(); setupPackageListener(context); setupProxyListener(context); updateMultiTouchSupport(context); if (privateBrowsing) { Loading @@ -990,6 +993,42 @@ public class WebView extends AbsoluteLayout mAutoFillData = new WebViewCore.AutoFillData(); } private static class ProxyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) { handleProxyBroadcast(intent); } } } private static void setupProxyListener(Context context) { IntentFilter filter = new IntentFilter(); filter.addAction(Proxy.PROXY_CHANGE_ACTION); Intent currentProxy = context.registerReceiver(new ProxyReceiver(), filter); if (currentProxy != null) { handleProxyBroadcast(currentProxy); } } private static void handleProxyBroadcast(Intent intent) { ProxyProperties proxyProperties = (ProxyProperties)intent.getExtra(Proxy.EXTRA_PROXY_INFO); if (proxyProperties == null) { WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, ""); return; } String host = proxyProperties.getHost(); int port = proxyProperties.getPort(); host += ": " + port; // TODO: Handle exclusion list // The plan is to make an AndroidProxyResolver, and handle the blacklist // there String exclusionList = proxyProperties.getExclusionList(); WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, host); } /* * A variable to track if there is a receiver added for ACTION_PACKAGE_ADDED * or ACTION_PACKAGE_REMOVED. Loading core/java/android/webkit/WebViewCore.java +10 −0 Original line number Diff line number Diff line Loading @@ -684,6 +684,14 @@ final class WebViewCore { } BrowserFrame.sJavaBridge.removePackageName((String) msg.obj); break; case EventHub.PROXY_CHANGED: if (BrowserFrame.sJavaBridge == null) { throw new IllegalStateException( "No WebView has been created in this process!"); } BrowserFrame.sJavaBridge.updateProxy((String) msg.obj); break; } } }; Loading Loading @@ -983,6 +991,8 @@ final class WebViewCore { static final int AUTOFILL_FORM = 192; static final int PROXY_CHANGED = 193; // private message ids private static final int DESTROY = 200; Loading Loading
core/java/android/webkit/JWebCoreJavaBridge.java +1 −0 Original line number Diff line number Diff line Loading @@ -307,4 +307,5 @@ final class JWebCoreJavaBridge extends Handler { public native void addPackageNames(Set<String> packageNames); public native void addPackageName(String packageName); public native void removePackageName(String packageName); public native void updateProxy(String newProxy); }
core/java/android/webkit/WebView.java +39 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,8 @@ import android.graphics.RectF; import android.graphics.Region; import android.graphics.Shader; import android.graphics.drawable.Drawable; import android.net.Proxy; import android.net.ProxyProperties; import android.net.Uri; import android.net.http.SslCertificate; import android.os.AsyncTask; Loading Loading @@ -981,6 +983,7 @@ public class WebView extends AbsoluteLayout */ init(); setupPackageListener(context); setupProxyListener(context); updateMultiTouchSupport(context); if (privateBrowsing) { Loading @@ -990,6 +993,42 @@ public class WebView extends AbsoluteLayout mAutoFillData = new WebViewCore.AutoFillData(); } private static class ProxyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) { handleProxyBroadcast(intent); } } } private static void setupProxyListener(Context context) { IntentFilter filter = new IntentFilter(); filter.addAction(Proxy.PROXY_CHANGE_ACTION); Intent currentProxy = context.registerReceiver(new ProxyReceiver(), filter); if (currentProxy != null) { handleProxyBroadcast(currentProxy); } } private static void handleProxyBroadcast(Intent intent) { ProxyProperties proxyProperties = (ProxyProperties)intent.getExtra(Proxy.EXTRA_PROXY_INFO); if (proxyProperties == null) { WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, ""); return; } String host = proxyProperties.getHost(); int port = proxyProperties.getPort(); host += ": " + port; // TODO: Handle exclusion list // The plan is to make an AndroidProxyResolver, and handle the blacklist // there String exclusionList = proxyProperties.getExclusionList(); WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, host); } /* * A variable to track if there is a receiver added for ACTION_PACKAGE_ADDED * or ACTION_PACKAGE_REMOVED. Loading
core/java/android/webkit/WebViewCore.java +10 −0 Original line number Diff line number Diff line Loading @@ -684,6 +684,14 @@ final class WebViewCore { } BrowserFrame.sJavaBridge.removePackageName((String) msg.obj); break; case EventHub.PROXY_CHANGED: if (BrowserFrame.sJavaBridge == null) { throw new IllegalStateException( "No WebView has been created in this process!"); } BrowserFrame.sJavaBridge.updateProxy((String) msg.obj); break; } } }; Loading Loading @@ -983,6 +991,8 @@ final class WebViewCore { static final int AUTOFILL_FORM = 192; static final int PROXY_CHANGED = 193; // private message ids private static final int DESTROY = 200; Loading