OSDN Git Service

Fix for bug 4144936: [Proxy setting]: traffic to a bypass domain doesn't bypass proxy...
authorKristian Monsen <kristianm@google.com>
Mon, 23 May 2011 13:25:27 +0000 (14:25 +0100)
committerKristian Monsen <kristianm@google.com>
Tue, 24 May 2011 17:58:51 +0000 (18:58 +0100)
This is the WebView part, passing the bypass list to
the native side.

Moved some code to JWebCoreJavaBridge.java because
because sendStaticMessage only takes one argument.

Needs CL in external/webkit:
https://android-git.corp.google.com/g/#change,111108

Needs following CL in external/chromium:
https://android-git.corp.google.com/g/#change,111107

Change-Id: Ib548bdcbc9eb22bbb8f2754808840052bd3ec80e

core/java/android/webkit/JWebCoreJavaBridge.java
core/java/android/webkit/WebView.java
core/java/android/webkit/WebViewCore.java

index 976e786..053d3c8 100644 (file)
@@ -16,6 +16,7 @@
 
 package android.webkit;
 
+import android.net.ProxyProperties;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Message;
@@ -297,6 +298,20 @@ final class JWebCoreJavaBridge extends Handler {
         mContentUriToFilePathMap.put(contentUri, path);
     }
 
+    public void updateProxy(ProxyProperties proxyProperties) {
+        if (proxyProperties == null) {
+            nativeUpdateProxy("", "");
+            return;
+        }
+
+        String host = proxyProperties.getHost();
+        int port = proxyProperties.getPort();
+        if (port != 0)
+            host += ":" + port;
+
+        nativeUpdateProxy(host, proxyProperties.getExclusionList());
+    }
+
     private native void nativeConstructor();
     private native void nativeFinalize();
     private native void sharedTimerFired();
@@ -307,5 +322,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);
+    public native void nativeUpdateProxy(String newProxy, String exclusionList);
 }
index cf83456..0d34ff6 100644 (file)
@@ -1045,20 +1045,10 @@ public class WebView extends AbsoluteLayout
     private static void handleProxyBroadcast(Intent intent) {
         ProxyProperties proxyProperties = (ProxyProperties)intent.getExtra(Proxy.EXTRA_PROXY_INFO);
         if (proxyProperties == null || proxyProperties.getHost() == null) {
-            WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, "");
+            WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, null);
             return;
         }
-
-        String host = proxyProperties.getHost();
-        int port = proxyProperties.getPort();
-        if (port != 0)
-            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);
+        WebViewCore.sendStaticMessage(EventHub.PROXY_CHANGED, proxyProperties);
     }
 
     /*
index 0271695..5d53554 100644 (file)
@@ -24,6 +24,7 @@ import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.media.MediaFile;
+import android.net.ProxyProperties;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
@@ -705,7 +706,7 @@ final class WebViewCore {
                                     throw new IllegalStateException(
                                             "No WebView has been created in this process!");
                                 }
-                                BrowserFrame.sJavaBridge.updateProxy((String) msg.obj);
+                                BrowserFrame.sJavaBridge.updateProxy((ProxyProperties)msg.obj);
                                 break;
                         }
                     }