Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16572080 authored by vichang's avatar vichang Committed by android-build-merger
Browse files

Merge changes from topic "libpac_C_api" am: c0f3daa1 am: ac97a1a7

am: 4e850bbc

Change-Id: If4fd930bf00df8449f72e59d73aaf7d87214f4a9
parents d22cbef1 4e850bbc
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

#define LOG_TAG "PacProcessor"

#include <stdlib.h>
#include <string>

#include <utils/Log.h>
@@ -25,11 +26,11 @@
#include "jni.h"
#include <nativehelper/JNIHelp.h>

#include "proxy_resolver_v8.h"
#include "proxy_resolver_v8_wrapper.h"

namespace android {

net::ProxyResolverV8* proxyResolver = NULL;
ProxyResolverV8Handle* proxyResolver = NULL;
bool pacSet = false;

std::u16string jstringToString16(JNIEnv* env, jstring jstr) {
@@ -50,7 +51,7 @@ jstring string16ToJstring(JNIEnv* env, std::u16string string) {
static jboolean com_android_pacprocessor_PacNative_createV8ParserNativeLocked(JNIEnv* /* env */,
        jobject) {
    if (proxyResolver == NULL) {
        proxyResolver = new net::ProxyResolverV8(net::ProxyResolverJSBindings::CreateDefault());
        proxyResolver = ProxyResolverV8Handle_new();
        pacSet = false;
        return JNI_FALSE;
    }
@@ -60,7 +61,7 @@ static jboolean com_android_pacprocessor_PacNative_createV8ParserNativeLocked(JN
static jboolean com_android_pacprocessor_PacNative_destroyV8ParserNativeLocked(JNIEnv* /* env */,
        jobject) {
    if (proxyResolver != NULL) {
        delete proxyResolver;
        ProxyResolverV8Handle_delete(proxyResolver);
        proxyResolver = NULL;
        return JNI_FALSE;
    }
@@ -76,7 +77,7 @@ static jboolean com_android_pacprocessor_PacNative_setProxyScriptNativeLocked(JN
        return JNI_TRUE;
    }

    if (proxyResolver->SetPacScript(script16) != OK) {
    if (ProxyResolverV8Handle_SetPacScript(proxyResolver, script16.data()) != OK) {
        ALOGE("Unable to set PAC script");
        return JNI_TRUE;
    }
@@ -89,7 +90,6 @@ static jstring com_android_pacprocessor_PacNative_makeProxyRequestNativeLocked(J
        jstring url, jstring host) {
    std::u16string url16 = jstringToString16(env, url);
    std::u16string host16 = jstringToString16(env, host);
    std::u16string ret;

    if (proxyResolver == NULL) {
        ALOGE("V8 Parser not initialized when running PAC script");
@@ -101,12 +101,14 @@ static jstring com_android_pacprocessor_PacNative_makeProxyRequestNativeLocked(J
        return NULL;
    }

    if (proxyResolver->GetProxyForURL(url16, host16, &ret) != OK) {
        String8 ret8(ret.data());
        ALOGE("Error Running PAC: %s", ret8.string());
    std::unique_ptr<char16_t, decltype(&free)> result = std::unique_ptr<char16_t, decltype(&free)>(
        ProxyResolverV8Handle_GetProxyForURL(proxyResolver, url16.data(), host16.data()), &free);
    if (result.get() == NULL) {
        ALOGE("Error Running PAC");
        return NULL;
    }

    std::u16string ret(result.get());
    jstring jret = string16ToJstring(env, ret);

    return jret;