Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(666)

Unified Diff: net/proxy/proxy_resolver_v8.cc

Issue 11959029: Make the v8 Isolate used in the proxy resolver explicit. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed component build Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/proxy/proxy_resolver_v8.cc
diff --git a/net/proxy/proxy_resolver_v8.cc b/net/proxy/proxy_resolver_v8.cc
index 51503170ae7b64e8ffa3a3fa57c921644d6c7054..d8f2add743d57c2684b46edfe9d93b426ee7bcd8 100644
--- a/net/proxy/proxy_resolver_v8.cc
+++ b/net/proxy/proxy_resolver_v8.cc
@@ -335,14 +335,16 @@ bool IsInNetEx(const std::string& ip_address, const std::string& ip_prefix) {
class ProxyResolverV8::Context {
public:
- explicit Context(ProxyResolverJSBindings* js_bindings)
+ explicit Context(ProxyResolverJSBindings* js_bindings,
eroman 2013/01/18 19:21:14 nit: no more need for constructor to be marked exp
Sven Panne 2013/01/21 08:50:06 Done.
+ v8::Isolate* v8_default_isolate)
: is_resolving_host_(false),
- js_bindings_(js_bindings) {
+ js_bindings_(js_bindings),
+ v8_default_isolate_(v8_default_isolate) {
DCHECK(js_bindings != NULL);
}
~Context() {
- v8::Locker locked;
+ v8::Locker locked(v8_default_isolate_);
v8_this_.Dispose();
v8_context_.Dispose();
@@ -355,7 +357,7 @@ class ProxyResolverV8::Context {
}
int ResolveProxy(const GURL& query_url, ProxyInfo* results) {
- v8::Locker locked;
+ v8::Locker locked(v8_default_isolate_);
v8::HandleScope scope;
v8::Context::Scope function_scope(v8_context_);
@@ -406,7 +408,7 @@ class ProxyResolverV8::Context {
}
int InitV8(const scoped_refptr<ProxyResolverScriptData>& pac_script) {
- v8::Locker locked;
+ v8::Locker locked(v8_default_isolate_);
v8::HandleScope scope;
v8_this_ = v8::Persistent<v8::External>::New(v8::External::New(this));
@@ -488,7 +490,7 @@ class ProxyResolverV8::Context {
}
void PurgeMemory() {
- v8::Locker locked;
+ v8::Locker locked(v8_default_isolate_);
v8::V8::LowMemoryNotification();
}
@@ -595,7 +597,7 @@ class ProxyResolverV8::Context {
bool success;
{
- v8::Unlocker unlocker;
+ v8::Unlocker unlocker(args.GetIsolate());
ScopedHostResolve scoped_host_resolve(context);
// We shouldn't be called with any arguments, but will not complain if
@@ -618,7 +620,7 @@ class ProxyResolverV8::Context {
bool success;
{
- v8::Unlocker unlocker;
+ v8::Unlocker unlocker(args.GetIsolate());
ScopedHostResolve scoped_host_resolve(context);
// We shouldn't be called with any arguments, but will not complain if
@@ -645,7 +647,7 @@ class ProxyResolverV8::Context {
bool success;
{
- v8::Unlocker unlocker;
+ v8::Unlocker unlocker(args.GetIsolate());
ScopedHostResolve scoped_host_resolve(context);
success = context->js_bindings_->DnsResolve(hostname, &ip_address);
}
@@ -667,7 +669,7 @@ class ProxyResolverV8::Context {
bool success;
{
- v8::Unlocker unlocker;
+ v8::Unlocker unlocker(args.GetIsolate());
ScopedHostResolve scoped_host_resolve(context);
success = context->js_bindings_->DnsResolveEx(hostname, &ip_address_list);
}
@@ -714,6 +716,7 @@ class ProxyResolverV8::Context {
mutable base::Lock lock_;
bool is_resolving_host_;
ProxyResolverJSBindings* js_bindings_;
+ v8::Isolate* v8_default_isolate_;
v8::Persistent<v8::External> v8_this_;
v8::Persistent<v8::Context> v8_context_;
};
@@ -721,9 +724,11 @@ class ProxyResolverV8::Context {
// ProxyResolverV8 ------------------------------------------------------------
ProxyResolverV8::ProxyResolverV8(
- ProxyResolverJSBindings* custom_js_bindings)
+ ProxyResolverJSBindings* custom_js_bindings,
+ v8::Isolate* v8_default_isolate)
: ProxyResolver(true /*expects_pac_bytes*/),
- js_bindings_(custom_js_bindings) {
+ js_bindings_(custom_js_bindings),
+ v8_default_isolate_(v8_default_isolate) {
}
ProxyResolverV8::~ProxyResolverV8() {}
@@ -794,7 +799,8 @@ int ProxyResolverV8::SetPacScript(
return ERR_PAC_SCRIPT_FAILED;
// Try parsing the PAC script.
- scoped_ptr<Context> context(new Context(js_bindings_.get()));
+ scoped_ptr<Context> context(new Context(js_bindings_.get(),
+ v8_default_isolate_));
int rv = context->InitV8(script_data);
if (rv == OK)
context_.reset(context.release());

Powered by Google App Engine
This is Rietveld 408576698