WebViewとEmulatorとProxy

Android Platform 1.6 (API Level4)では問題無いのだが、2.0(API Level 5)、2.0.1(API Level 6)では相変わらずプロキシを通してインターネットに繋がらない。SDKのせいなのかエミュレータのせいなのか、さっぱりわからない。

ならばAndroidのViewであるWebViewはどうだろうとソースコードを追ったのだが、


android.webkit.WebView#loadUrl(url)
 -> android.webkit.WebViewCore#sendMessage(EventHub.LOAD_URL, url)
  -> android.webkit.BrowserFrame#loadUrl(url)
   -> BrowserFrame#nativeLoadUrl(url) -> とここでネィティブコードにあたった。

  • WebCoreFrameBridge.cpp
static void LoadUrl(JNIEnv *env, jobject obj, jstring url)
{
    #ifdef ANDROID_INSTRUMENT
        TimeCounterAuto counter(TimeCounter::NativeCallbackTimeCounter);
    #endif
        WebCore::Frame* pFrame = GET_NATIVE_FRAME(env, obj);
        LOG_ASSERT(pFrame, "nativeLoadUrl must take a valid frame pointer!");

        WebCore::String webcoreUrl = to_string(env, url);
        WebCore::ResourceRequest request(webcoreUrl);
        LOGV("LoadUrl %s", webcoreUrl.latin1().data());
        pFrame->loader()->load(request);
}

もう少し調べてみるが、今の所、Android自身で設定したプロキシ情報は参照していないぽいな。