Commit 5485843a authored by Anna Malova's avatar Anna Malova Committed by Commit Bot

Add method to initialize thread pool in AwPacProcessor.

Thread pool is required for correct work of V8.
A new added method is called during initialization.

Check whether pac_resolver is created when proxy request comes.

Bug: 1045049
Change-Id: I5cb2bd6abfb1872b1d73f4f3e7a1daf0a6491682
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2038736
Commit-Queue: Richard Coles <torne@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#739345}
parent e152860f
......@@ -18,6 +18,7 @@
#include "base/logging.h"
#include "base/no_destructor.h"
#include "base/task/post_task.h"
#include "base/task/thread_pool/thread_pool_instance.h"
#include "base/threading/thread_restrictions.h"
#include "net/base/completion_once_callback.h"
#include "net/base/net_errors.h"
......@@ -271,9 +272,13 @@ void AwPacProcessor::MakeProxyRequestNative(
net::CompletionOnceCallback complete) {
DCHECK(task_runner_->BelongsToCurrentThread());
proxy_resolver_->GetProxyForURL(GURL(url), net::NetworkIsolationKey(),
proxy_info, std::move(complete), request,
std::make_unique<Bindings>());
if (proxy_resolver_) {
proxy_resolver_->GetProxyForURL(GURL(url), net::NetworkIsolationKey(),
proxy_info, std::move(complete), request,
std::make_unique<Bindings>());
} else {
std::move(complete).Run(net::ERR_FAILED);
}
}
bool AwPacProcessor::SetProxyScript(std::string script) {
......@@ -307,4 +312,9 @@ ScopedJavaLocalRef<jstring> AwPacProcessor::MakeProxyRequest(
static jlong JNI_AwPacProcessor_GetDefaultPacProcessor(JNIEnv* env) {
return reinterpret_cast<intptr_t>(AwPacProcessor::Get());
}
} // namespace android_webview
\ No newline at end of file
static void JNI_AwPacProcessor_InitializeEnvironment(JNIEnv* env) {
base::ThreadPoolInstance::CreateAndStartWithDefaultParams("AwPacProcessor");
}
} // namespace android_webview
......@@ -6,6 +6,7 @@
#include "android_webview/browser/aw_pac_processor.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "base/test/task_environment.h"
namespace android_webview {
......@@ -27,6 +28,8 @@ const std::string kRequestUrl = "http://testurl.test";
class AwPacProcessorTest : public testing::Test {
protected:
base::test::TaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
AwPacProcessor* pac_processor_ = AwPacProcessor::Get();
};
......
......@@ -34,8 +34,13 @@ public class AwPacProcessor {
return AwPacProcessorJni.get().makeProxyRequest(mNativePacProcessor, this, url);
}
public static void initializeEnvironment() {
AwPacProcessorJni.get().initializeEnvironment();
}
@NativeMethods
interface Natives {
void initializeEnvironment();
long getDefaultPacProcessor();
boolean setProxyScript(long nativeAwPacProcessor, AwPacProcessor caller, String script);
String makeProxyRequest(long nativeAwPacProcessor, AwPacProcessor caller, String url);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment