summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/renderer/extensions/api_activity_logger.cc5
-rw-r--r--chrome/renderer/extensions/api_activity_logger.h3
-rw-r--r--chrome/renderer/extensions/api_definitions_natives.cc3
-rw-r--r--chrome/renderer/extensions/api_definitions_natives.h3
-rw-r--r--chrome/renderer/extensions/app_bindings.cc28
-rw-r--r--chrome/renderer/extensions/app_runtime_custom_bindings.cc2
-rw-r--r--chrome/renderer/extensions/app_runtime_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/app_window_custom_bindings.cc2
-rw-r--r--chrome/renderer/extensions/app_window_custom_bindings.h3
-rw-r--r--chrome/renderer/extensions/chrome_v8_extension.cc12
-rw-r--r--chrome/renderer/extensions/chrome_v8_extension.h4
-rw-r--r--chrome/renderer/extensions/content_watcher.cc10
-rw-r--r--chrome/renderer/extensions/content_watcher.h2
-rw-r--r--chrome/renderer/extensions/context_menus_custom_bindings.cc4
-rw-r--r--chrome/renderer/extensions/context_menus_custom_bindings.h3
-rw-r--r--chrome/renderer/extensions/dispatcher.cc98
-rw-r--r--chrome/renderer/extensions/event_bindings.cc47
-rw-r--r--chrome/renderer/extensions/event_bindings.h3
-rw-r--r--chrome/renderer/extensions/extension_custom_bindings.cc5
-rw-r--r--chrome/renderer/extensions/extension_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/file_browser_handler_custom_bindings.cc5
-rw-r--r--chrome/renderer/extensions/file_browser_handler_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/file_browser_private_custom_bindings.cc6
-rw-r--r--chrome/renderer/extensions/file_browser_private_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/file_system_natives.cc9
-rw-r--r--chrome/renderer/extensions/file_system_natives.h2
-rw-r--r--chrome/renderer/extensions/i18n_custom_bindings.cc2
-rw-r--r--chrome/renderer/extensions/i18n_custom_bindings.h3
-rw-r--r--chrome/renderer/extensions/media_galleries_custom_bindings.cc4
-rw-r--r--chrome/renderer/extensions/media_galleries_custom_bindings.h3
-rw-r--r--chrome/renderer/extensions/miscellaneous_bindings.cc4
-rw-r--r--chrome/renderer/extensions/miscellaneous_bindings.h2
-rw-r--r--chrome/renderer/extensions/module_system.cc14
-rw-r--r--chrome/renderer/extensions/module_system.h3
-rw-r--r--chrome/renderer/extensions/module_system_unittest.cc6
-rw-r--r--chrome/renderer/extensions/object_backed_native_handler.cc16
-rw-r--r--chrome/renderer/extensions/object_backed_native_handler.h9
-rw-r--r--chrome/renderer/extensions/page_actions_custom_bindings.cc4
-rw-r--r--chrome/renderer/extensions/page_actions_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/page_capture_custom_bindings.cc2
-rw-r--r--chrome/renderer/extensions/page_capture_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/runtime_custom_bindings.cc11
-rw-r--r--chrome/renderer/extensions/runtime_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/send_request_natives.cc10
-rw-r--r--chrome/renderer/extensions/send_request_natives.h2
-rw-r--r--chrome/renderer/extensions/set_icon_natives.cc7
-rw-r--r--chrome/renderer/extensions/set_icon_natives.h2
-rw-r--r--chrome/renderer/extensions/sync_file_system_custom_bindings.cc7
-rw-r--r--chrome/renderer/extensions/sync_file_system_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/tabs_custom_bindings.cc2
-rw-r--r--chrome/renderer/extensions/tabs_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/tts_custom_bindings.cc4
-rw-r--r--chrome/renderer/extensions/tts_custom_bindings.h2
-rw-r--r--chrome/renderer/extensions/web_request_custom_bindings.cc5
-rw-r--r--chrome/renderer/extensions/web_request_custom_bindings.h3
-rw-r--r--chrome/renderer/extensions/webstore_bindings.cc8
-rw-r--r--chrome/test/base/module_system_test.cc13
-rw-r--r--chrome/test/base/module_system_test.h3
58 files changed, 200 insertions, 228 deletions
diff --git a/chrome/renderer/extensions/api_activity_logger.cc b/chrome/renderer/extensions/api_activity_logger.cc
index 2055a12..8f8b2a8 100644
--- a/chrome/renderer/extensions/api_activity_logger.cc
+++ b/chrome/renderer/extensions/api_activity_logger.cc
@@ -15,8 +15,8 @@ using content::V8ValueConverter;
namespace extensions {
APIActivityLogger::APIActivityLogger(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("LogEvent", base::Bind(&APIActivityLogger::LogEvent));
RouteFunction("LogAPICall", base::Bind(&APIActivityLogger::LogAPICall));
}
@@ -81,4 +81,3 @@ void APIActivityLogger::LogBlockedCall(const std::string& extension_id,
} // namespace extensions
-
diff --git a/chrome/renderer/extensions/api_activity_logger.h b/chrome/renderer/extensions/api_activity_logger.h
index 9616d4a..86240e9 100644
--- a/chrome/renderer/extensions/api_activity_logger.h
+++ b/chrome/renderer/extensions/api_activity_logger.h
@@ -17,7 +17,7 @@ namespace extensions {
// recording and display.
class APIActivityLogger : public ChromeV8Extension {
public:
- APIActivityLogger(Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context);
+ APIActivityLogger(Dispatcher* dispatcher, ChromeV8Context* context);
// This is ultimately invoked in schema_generated_bindings.js with
// JavaScript arguments. Logged as an APIAction.
@@ -57,4 +57,3 @@ class APIActivityLogger : public ChromeV8Extension {
} // namespace extensions
#endif // CHROME_RENDERER_EXTENSIONS_API_ACTIVITY_LOGGER_H_
-
diff --git a/chrome/renderer/extensions/api_definitions_natives.cc b/chrome/renderer/extensions/api_definitions_natives.cc
index 6004c7a..6052350 100644
--- a/chrome/renderer/extensions/api_definitions_natives.cc
+++ b/chrome/renderer/extensions/api_definitions_natives.cc
@@ -16,8 +16,7 @@ namespace extensions {
ApiDefinitionsNatives::ApiDefinitionsNatives(Dispatcher* dispatcher,
ChromeV8Context* context)
- : ChromeV8Extension(dispatcher, context->v8_context()),
- context_(context) {
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetExtensionAPIDefinitions",
base::Bind(&ApiDefinitionsNatives::GetExtensionAPIDefinitions,
base::Unretained(this)));
diff --git a/chrome/renderer/extensions/api_definitions_natives.h b/chrome/renderer/extensions/api_definitions_natives.h
index 00f6d64..e0c19cb 100644
--- a/chrome/renderer/extensions/api_definitions_natives.h
+++ b/chrome/renderer/extensions/api_definitions_natives.h
@@ -22,9 +22,6 @@ class ApiDefinitionsNatives : public ChromeV8Extension {
private:
// Returns the list of all schemas that are available to the calling context.
v8::Handle<v8::Value> GetExtensionAPIDefinitions(const v8::Arguments& args);
-
- ChromeV8Context* context_;
-
DISALLOW_COPY_AND_ASSIGN(ApiDefinitionsNatives);
};
diff --git a/chrome/renderer/extensions/app_bindings.cc b/chrome/renderer/extensions/app_bindings.cc
index b036bb2..c6c5abc 100644
--- a/chrome/renderer/extensions/app_bindings.cc
+++ b/chrome/renderer/extensions/app_bindings.cc
@@ -57,7 +57,7 @@ const char* kInvalidCallbackIdError = "Invalid callbackId";
} // namespace
AppBindings::AppBindings(Dispatcher* dispatcher, ChromeV8Context* context)
- : ChromeV8Extension(dispatcher, context->v8_context()),
+ : ChromeV8Extension(dispatcher, context),
ChromeV8ExtensionHandler(context) {
RouteFunction("GetIsInstalled",
base::Bind(&AppBindings::GetIsInstalled, base::Unretained(this)));
@@ -73,7 +73,7 @@ AppBindings::AppBindings(Dispatcher* dispatcher, ChromeV8Context* context)
v8::Handle<v8::Value> AppBindings::GetIsInstalled(
const v8::Arguments& args) {
- const Extension* extension = context_->extension();
+ const Extension* extension = context()->extension();
// TODO(aa): Why only hosted app?
bool result = extension && extension->is_hosted_app() &&
@@ -83,14 +83,14 @@ v8::Handle<v8::Value> AppBindings::GetIsInstalled(
v8::Handle<v8::Value> AppBindings::GetDetails(
const v8::Arguments& args) {
- CHECK(context_->web_frame());
- return GetDetailsForFrameImpl(context_->web_frame());
+ CHECK(context()->web_frame());
+ return GetDetailsForFrameImpl(context()->web_frame());
}
v8::Handle<v8::Value> AppBindings::GetDetailsForFrame(
const v8::Arguments& args) {
- CHECK(context_->web_frame());
- if (!CheckAccessToAppDetails(context_->web_frame()))
+ CHECK(context()->web_frame());
+ if (!CheckAccessToAppDetails(context()->web_frame()))
return v8::Undefined();
if (args.Length() < 0)
@@ -143,11 +143,11 @@ v8::Handle<v8::Value> AppBindings::GetInstallState(const v8::Arguments& args) {
callback_id = args[0]->Int32Value();
}
- content::RenderView* render_view = context_->GetRenderView();
+ content::RenderView* render_view = context()->GetRenderView();
CHECK(render_view);
Send(new ExtensionHostMsg_GetAppInstallState(
- render_view->GetRoutingID(), context_->web_frame()->document().url(),
+ render_view->GetRoutingID(), context()->web_frame()->document().url(),
GetRoutingID(), callback_id));
return v8::Undefined();
}
@@ -155,7 +155,7 @@ v8::Handle<v8::Value> AppBindings::GetInstallState(const v8::Arguments& args) {
v8::Handle<v8::Value> AppBindings::GetRunningState(const v8::Arguments& args) {
// To distinguish between ready_to_run and cannot_run states, we need the top
// level frame.
- const WebFrame* parent_frame = context_->web_frame();
+ const WebFrame* parent_frame = context()->web_frame();
while (parent_frame->parent())
parent_frame = parent_frame->parent();
@@ -166,8 +166,8 @@ v8::Handle<v8::Value> AppBindings::GetRunningState(const v8::Arguments& args) {
ExtensionURLInfo(parent_frame->document().url()));
// The app associated with this frame.
- const Extension* this_app = extensions->GetHostedAppByURL(
- ExtensionURLInfo(context_->web_frame()->document().url()));
+ const Extension* this_app = extensions->GetHostedAppByURL(ExtensionURLInfo(
+ context()->web_frame()->document().url()));
if (!this_app || !parent_app)
return v8::String::New(extension_misc::kAppStateCannotRun);
@@ -199,12 +199,12 @@ bool AppBindings::OnMessageReceived(const IPC::Message& message) {
void AppBindings::OnAppInstallStateResponse(
const std::string& state, int callback_id) {
v8::HandleScope handle_scope;
- v8::Context::Scope context_scope(context_->v8_context());
+ v8::Context::Scope context_scope(context()->v8_context());
v8::Handle<v8::Value> argv[2];
argv[0] = v8::String::New(state.c_str());
argv[1] = v8::Integer::New(callback_id);
- CHECK(context_->CallChromeHiddenMethod("app.onInstallStateResponse",
- arraysize(argv), argv, NULL));
+ CHECK(context()->CallChromeHiddenMethod(
+ "app.onInstallStateResponse", arraysize(argv), argv, NULL));
}
} // namespace extensions
diff --git a/chrome/renderer/extensions/app_runtime_custom_bindings.cc b/chrome/renderer/extensions/app_runtime_custom_bindings.cc
index e9fbabb..812f8a0 100644
--- a/chrome/renderer/extensions/app_runtime_custom_bindings.cc
+++ b/chrome/renderer/extensions/app_runtime_custom_bindings.cc
@@ -58,7 +58,7 @@ namespace extensions {
AppRuntimeCustomBindings::AppRuntimeCustomBindings(
Dispatcher* dispatcher,
- v8::Handle<v8::Context> context) : ChromeV8Extension(dispatcher, context) {
+ ChromeV8Context* context) : ChromeV8Extension(dispatcher, context) {
RouteFunction("DeserializeString", base::Bind(&DeserializeString));
RouteFunction("SerializeToString", base::Bind(&SerializeToString));
RouteFunction("CreateBlob", base::Bind(&CreateBlob));
diff --git a/chrome/renderer/extensions/app_runtime_custom_bindings.h b/chrome/renderer/extensions/app_runtime_custom_bindings.h
index c691300..2d63ded 100644
--- a/chrome/renderer/extensions/app_runtime_custom_bindings.h
+++ b/chrome/renderer/extensions/app_runtime_custom_bindings.h
@@ -13,7 +13,7 @@ namespace extensions {
class AppRuntimeCustomBindings : public ChromeV8Extension {
public:
AppRuntimeCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
private:
DISALLOW_COPY_AND_ASSIGN(AppRuntimeCustomBindings);
diff --git a/chrome/renderer/extensions/app_window_custom_bindings.cc b/chrome/renderer/extensions/app_window_custom_bindings.cc
index 060dc5a..5ff47fc88 100644
--- a/chrome/renderer/extensions/app_window_custom_bindings.cc
+++ b/chrome/renderer/extensions/app_window_custom_bindings.cc
@@ -52,7 +52,7 @@ class DidCreateDocumentElementObserver : public content::RenderViewObserver {
AppWindowCustomBindings::AppWindowCustomBindings(
Dispatcher* dispatcher,
- v8::Handle<v8::Context> context) : ChromeV8Extension(dispatcher, context) {
+ ChromeV8Context* context) : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetView",
base::Bind(&AppWindowCustomBindings::GetView,
base::Unretained(this)));
diff --git a/chrome/renderer/extensions/app_window_custom_bindings.h b/chrome/renderer/extensions/app_window_custom_bindings.h
index be84aa0..f94aa74 100644
--- a/chrome/renderer/extensions/app_window_custom_bindings.h
+++ b/chrome/renderer/extensions/app_window_custom_bindings.h
@@ -13,8 +13,7 @@ class Dispatcher;
// Implements custom bindings for the app.window API.
class AppWindowCustomBindings : public ChromeV8Extension {
public:
- AppWindowCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ AppWindowCustomBindings(Dispatcher* dispatcher, ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetView(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/chrome_v8_extension.cc b/chrome/renderer/extensions/chrome_v8_extension.cc
index 2a3e7d6d..018addc 100644
--- a/chrome/renderer/extensions/chrome_v8_extension.cc
+++ b/chrome/renderer/extensions/chrome_v8_extension.cc
@@ -26,7 +26,7 @@ using WebKit::WebView;
namespace extensions {
ChromeV8Extension::ChromeV8Extension(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ ChromeV8Context* context)
: ObjectBackedNativeHandler(context),
dispatcher_(dispatcher) {
CHECK(dispatcher);
@@ -35,18 +35,12 @@ ChromeV8Extension::ChromeV8Extension(Dispatcher* dispatcher,
ChromeV8Extension::~ChromeV8Extension() {
}
-ChromeV8Context* ChromeV8Extension::GetContext() {
- return dispatcher_->v8_context_set().GetByV8Context(v8_context());
-}
-
content::RenderView* ChromeV8Extension::GetRenderView() {
- ChromeV8Context* context = GetContext();
- return context ? context->GetRenderView() : NULL;
+ return context() ? context()->GetRenderView() : NULL;
}
const Extension* ChromeV8Extension::GetExtensionForRenderView() {
- ChromeV8Context* context = GetContext();
- return context ? context->extension() : NULL;
+ return context() ? context()->extension() : NULL;
}
} // namespace extensions
diff --git a/chrome/renderer/extensions/chrome_v8_extension.h b/chrome/renderer/extensions/chrome_v8_extension.h
index b6fc050..25ef15c 100644
--- a/chrome/renderer/extensions/chrome_v8_extension.h
+++ b/chrome/renderer/extensions/chrome_v8_extension.h
@@ -35,13 +35,11 @@ class Extension;
// Custom bindings should extend ObjectBackedNativeHandler.
class ChromeV8Extension : public ObjectBackedNativeHandler {
public:
- ChromeV8Extension(Dispatcher* dispatcher, v8::Handle<v8::Context> context);
+ ChromeV8Extension(Dispatcher* dispatcher, ChromeV8Context* context);
virtual ~ChromeV8Extension();
Dispatcher* dispatcher() { return dispatcher_; }
- ChromeV8Context* GetContext();
-
// Shortcuts through to the context's render view and extension.
content::RenderView* GetRenderView();
const Extension* GetExtensionForRenderView();
diff --git a/chrome/renderer/extensions/content_watcher.cc b/chrome/renderer/extensions/content_watcher.cc
index 72c3334..d19960e 100644
--- a/chrome/renderer/extensions/content_watcher.cc
+++ b/chrome/renderer/extensions/content_watcher.cc
@@ -20,9 +20,9 @@ namespace {
class MutationHandler : public ChromeV8Extension {
public:
explicit MutationHandler(Dispatcher* dispatcher,
- v8::Handle<v8::Context> v8_context,
+ ChromeV8Context* context,
base::WeakPtr<ContentWatcher> content_watcher)
- : ChromeV8Extension(dispatcher, v8_context),
+ : ChromeV8Extension(dispatcher, context),
content_watcher_(content_watcher) {
RouteFunction("FrameMutated",
base::Bind(&MutationHandler::FrameMutated,
@@ -33,7 +33,7 @@ class MutationHandler : public ChromeV8Extension {
v8::Handle<v8::Value> FrameMutated(const v8::Arguments& args) {
if (content_watcher_.get()) {
content_watcher_->ScanAndNotify(
- WebKit::WebFrame::frameForContext(v8_context()));
+ WebKit::WebFrame::frameForContext(context()->v8_context()));
}
return v8::Undefined();
}
@@ -49,9 +49,9 @@ ContentWatcher::ContentWatcher(Dispatcher* dispatcher)
ContentWatcher::~ContentWatcher() {}
scoped_ptr<NativeHandler> ContentWatcher::MakeNatives(
- v8::Handle<v8::Context> v8_context) {
+ ChromeV8Context* context) {
return scoped_ptr<NativeHandler>(new MutationHandler(
- dispatcher_, v8_context, weak_ptr_factory_.GetWeakPtr()));
+ dispatcher_, context, weak_ptr_factory_.GetWeakPtr()));
}
void ContentWatcher::OnWatchPages(
diff --git a/chrome/renderer/extensions/content_watcher.h b/chrome/renderer/extensions/content_watcher.h
index beefee5..8ef9d48 100644
--- a/chrome/renderer/extensions/content_watcher.h
+++ b/chrome/renderer/extensions/content_watcher.h
@@ -36,7 +36,7 @@ class ContentWatcher {
~ContentWatcher();
// Returns the callback to call on a frame change.
- scoped_ptr<NativeHandler> MakeNatives(v8::Handle<v8::Context> v8_context);
+ scoped_ptr<NativeHandler> MakeNatives(ChromeV8Context* context);
// Handler for ExtensionMsg_WatchPages.
void OnWatchPages(const std::vector<std::string>& css_selectors);
diff --git a/chrome/renderer/extensions/context_menus_custom_bindings.cc b/chrome/renderer/extensions/context_menus_custom_bindings.cc
index 0043307..05c0c54 100644
--- a/chrome/renderer/extensions/context_menus_custom_bindings.cc
+++ b/chrome/renderer/extensions/context_menus_custom_bindings.cc
@@ -24,8 +24,8 @@ v8::Handle<v8::Value> GetNextContextMenuId(const v8::Arguments& args) {
namespace extensions {
ContextMenusCustomBindings::ContextMenusCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetNextContextMenuId", base::Bind(&GetNextContextMenuId));
}
diff --git a/chrome/renderer/extensions/context_menus_custom_bindings.h b/chrome/renderer/extensions/context_menus_custom_bindings.h
index b4c378c..3d5a828 100644
--- a/chrome/renderer/extensions/context_menus_custom_bindings.h
+++ b/chrome/renderer/extensions/context_menus_custom_bindings.h
@@ -12,8 +12,7 @@ namespace extensions {
// Implements custom bindings for the contextMenus API.
class ContextMenusCustomBindings : public ChromeV8Extension {
public:
- ContextMenusCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> v8_context);
+ ContextMenusCustomBindings(Dispatcher* dispatcher, ChromeV8Context* context);
};
} // extensions
diff --git a/chrome/renderer/extensions/dispatcher.cc b/chrome/renderer/extensions/dispatcher.cc
index ea89a3f..60ae92c 100644
--- a/chrome/renderer/extensions/dispatcher.cc
+++ b/chrome/renderer/extensions/dispatcher.cc
@@ -119,7 +119,7 @@ static v8::Handle<v8::Object> GetOrCreateChrome(
class TestFeaturesNativeHandler : public ObjectBackedNativeHandler {
public:
- explicit TestFeaturesNativeHandler(v8::Handle<v8::Context> context)
+ explicit TestFeaturesNativeHandler(ChromeV8Context* context)
: ObjectBackedNativeHandler(context) {
RouteFunction("GetAPIFeatures",
base::Bind(&TestFeaturesNativeHandler::GetAPIFeatures,
@@ -133,14 +133,14 @@ class TestFeaturesNativeHandler : public ObjectBackedNativeHandler {
IDR_EXTENSION_API_FEATURES).as_string());
scoped_ptr<content::V8ValueConverter> converter(
content::V8ValueConverter::create());
- return converter->ToV8Value(value, v8_context());
+ return converter->ToV8Value(value, context()->v8_context());
}
};
class SchemaRegistryNativeHandler : public ObjectBackedNativeHandler {
public:
SchemaRegistryNativeHandler(V8SchemaRegistry* registry,
- v8::Handle<v8::Context> context)
+ ChromeV8Context* context)
: ObjectBackedNativeHandler(context),
registry_(registry) {
RouteFunction("GetSchema",
@@ -159,7 +159,7 @@ class SchemaRegistryNativeHandler : public ObjectBackedNativeHandler {
class V8ContextNativeHandler : public ObjectBackedNativeHandler {
public:
V8ContextNativeHandler(ChromeV8Context* context, Dispatcher* dispatcher)
- : ObjectBackedNativeHandler(context->v8_context()),
+ : ObjectBackedNativeHandler(context),
context_(context),
dispatcher_(dispatcher) {
RouteFunction("GetAvailability",
@@ -200,7 +200,7 @@ class V8ContextNativeHandler : public ObjectBackedNativeHandler {
class ChromeHiddenNativeHandler : public ObjectBackedNativeHandler {
public:
- explicit ChromeHiddenNativeHandler(v8::Handle<v8::Context> context)
+ explicit ChromeHiddenNativeHandler(ChromeV8Context* context)
: ObjectBackedNativeHandler(context) {
RouteFunction("GetChromeHidden",
base::Bind(&ChromeHiddenNativeHandler::GetChromeHidden,
@@ -208,26 +208,26 @@ class ChromeHiddenNativeHandler : public ObjectBackedNativeHandler {
}
v8::Handle<v8::Value> GetChromeHidden(const v8::Arguments& args) {
- return ChromeV8Context::GetOrCreateChromeHidden(v8_context());
+ return ChromeV8Context::GetOrCreateChromeHidden(context()->v8_context());
}
};
class ChromeNativeHandler : public ObjectBackedNativeHandler {
public:
- explicit ChromeNativeHandler(v8::Handle<v8::Context> context)
+ explicit ChromeNativeHandler(ChromeV8Context* context)
: ObjectBackedNativeHandler(context) {
RouteFunction("GetChrome",
base::Bind(&ChromeNativeHandler::GetChrome, base::Unretained(this)));
}
v8::Handle<v8::Value> GetChrome(const v8::Arguments& args) {
- return GetOrCreateChrome(v8_context());
+ return GetOrCreateChrome(context()->v8_context());
}
};
class PrintNativeHandler : public ObjectBackedNativeHandler {
public:
- explicit PrintNativeHandler(v8::Handle<v8::Context> context)
+ explicit PrintNativeHandler(ChromeV8Context* context)
: ObjectBackedNativeHandler(context) {
RouteFunction("Print",
base::Bind(&PrintNativeHandler::Print,
@@ -250,7 +250,7 @@ class PrintNativeHandler : public ObjectBackedNativeHandler {
class LazyBackgroundPageNativeHandler : public ChromeV8Extension {
public:
LazyBackgroundPageNativeHandler(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction("IncrementKeepaliveCount",
base::Bind(&LazyBackgroundPageNativeHandler::IncrementKeepaliveCount,
@@ -261,12 +261,10 @@ class LazyBackgroundPageNativeHandler : public ChromeV8Extension {
}
v8::Handle<v8::Value> IncrementKeepaliveCount(const v8::Arguments& args) {
- ChromeV8Context* context =
- dispatcher()->v8_context_set().GetByV8Context(v8_context());
- if (!context)
+ if (!context())
return v8::Undefined();
- RenderView* render_view = context->GetRenderView();
- if (IsContextLazyBackgroundPage(render_view, context->extension())) {
+ RenderView* render_view = context()->GetRenderView();
+ if (IsContextLazyBackgroundPage(render_view, context()->extension())) {
render_view->Send(new ExtensionHostMsg_IncrementLazyKeepaliveCount(
render_view->GetRoutingID()));
}
@@ -274,12 +272,10 @@ class LazyBackgroundPageNativeHandler : public ChromeV8Extension {
}
v8::Handle<v8::Value> DecrementKeepaliveCount(const v8::Arguments& args) {
- ChromeV8Context* context =
- dispatcher()->v8_context_set().GetByV8Context(v8_context());
- if (!context)
+ if (!context())
return v8::Undefined();
- RenderView* render_view = context->GetRenderView();
- if (IsContextLazyBackgroundPage(render_view, context->extension())) {
+ RenderView* render_view = context()->GetRenderView();
+ if (IsContextLazyBackgroundPage(render_view, context()->extension())) {
render_view->Send(new ExtensionHostMsg_DecrementLazyKeepaliveCount(
render_view->GetRoutingID()));
}
@@ -301,7 +297,7 @@ class LazyBackgroundPageNativeHandler : public ChromeV8Extension {
class ProcessInfoNativeHandler : public ChromeV8Extension {
public:
ProcessInfoNativeHandler(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context,
+ ChromeV8Context* context,
const std::string& extension_id,
const std::string& context_type,
bool is_incognito_context,
@@ -365,7 +361,7 @@ class ProcessInfoNativeHandler : public ChromeV8Extension {
class LoggingNativeHandler : public ObjectBackedNativeHandler {
public:
- explicit LoggingNativeHandler(v8::Handle<v8::Context> context)
+ explicit LoggingNativeHandler(ChromeV8Context* context)
: ObjectBackedNativeHandler(context) {
RouteFunction("DCHECK",
base::Bind(&LoggingNativeHandler::Dcheck, base::Unretained(this)));
@@ -789,12 +785,10 @@ void Dispatcher::RegisterSchemaGeneratedBindings(
void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
ChromeV8Context* context) {
- v8::Handle<v8::Context> v8_context = context->v8_context();
-
module_system->RegisterNativeHandler("event_bindings",
- scoped_ptr<NativeHandler>(EventBindings::Create(this, v8_context)));
+ scoped_ptr<NativeHandler>(EventBindings::Create(this, context)));
module_system->RegisterNativeHandler("miscellaneous_bindings",
- scoped_ptr<NativeHandler>(MiscellaneousBindings::Get(this, v8_context)));
+ scoped_ptr<NativeHandler>(MiscellaneousBindings::Get(this, context)));
module_system->RegisterNativeHandler("apiDefinitions",
scoped_ptr<NativeHandler>(new ApiDefinitionsNatives(this, context)));
module_system->RegisterNativeHandler("sendRequest",
@@ -805,59 +799,59 @@ void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
new SetIconNatives(this, request_sender_.get(), context)));
module_system->RegisterNativeHandler(
"contentWatcherNative",
- content_watcher_->MakeNatives(v8_context));
+ content_watcher_->MakeNatives(context));
module_system->RegisterNativeHandler("activityLogger",
- scoped_ptr<NativeHandler>(new APIActivityLogger(this, v8_context)));
+ scoped_ptr<NativeHandler>(new APIActivityLogger(this, context)));
// Natives used by multiple APIs.
module_system->RegisterNativeHandler("file_system_natives",
- scoped_ptr<NativeHandler>(new FileSystemNatives(v8_context)));
+ scoped_ptr<NativeHandler>(new FileSystemNatives(context)));
// Custom bindings.
module_system->RegisterNativeHandler("app",
scoped_ptr<NativeHandler>(new AppBindings(this, context)));
module_system->RegisterNativeHandler("app_runtime",
scoped_ptr<NativeHandler>(
- new AppRuntimeCustomBindings(this, v8_context)));
+ new AppRuntimeCustomBindings(this, context)));
module_system->RegisterNativeHandler("app_window",
scoped_ptr<NativeHandler>(
- new AppWindowCustomBindings(this, v8_context)));
+ new AppWindowCustomBindings(this, context)));
module_system->RegisterNativeHandler("context_menus",
scoped_ptr<NativeHandler>(
- new ContextMenusCustomBindings(this, v8_context)));
+ new ContextMenusCustomBindings(this, context)));
module_system->RegisterNativeHandler("extension",
scoped_ptr<NativeHandler>(
- new ExtensionCustomBindings(this, v8_context)));
+ new ExtensionCustomBindings(this, context)));
module_system->RegisterNativeHandler("sync_file_system",
scoped_ptr<NativeHandler>(
- new SyncFileSystemCustomBindings(this, v8_context)));
+ new SyncFileSystemCustomBindings(this, context)));
module_system->RegisterNativeHandler("file_browser_handler",
scoped_ptr<NativeHandler>(new FileBrowserHandlerCustomBindings(
- this, v8_context)));
+ this, context)));
module_system->RegisterNativeHandler("file_browser_private",
scoped_ptr<NativeHandler>(new FileBrowserPrivateCustomBindings(
- this, v8_context)));
+ this, context)));
module_system->RegisterNativeHandler("i18n",
scoped_ptr<NativeHandler>(
- new I18NCustomBindings(this, v8_context)));
+ new I18NCustomBindings(this, context)));
module_system->RegisterNativeHandler("mediaGalleries",
scoped_ptr<NativeHandler>(
- new MediaGalleriesCustomBindings(this, v8_context)));
+ new MediaGalleriesCustomBindings(this, context)));
module_system->RegisterNativeHandler("page_actions",
scoped_ptr<NativeHandler>(
- new PageActionsCustomBindings(this, v8_context)));
+ new PageActionsCustomBindings(this, context)));
module_system->RegisterNativeHandler("page_capture",
scoped_ptr<NativeHandler>(
- new PageCaptureCustomBindings(this, v8_context)));
+ new PageCaptureCustomBindings(this, context)));
module_system->RegisterNativeHandler("runtime",
scoped_ptr<NativeHandler>(new RuntimeCustomBindings(this, context)));
module_system->RegisterNativeHandler("tabs",
- scoped_ptr<NativeHandler>(new TabsCustomBindings(this, v8_context)));
+ scoped_ptr<NativeHandler>(new TabsCustomBindings(this, context)));
module_system->RegisterNativeHandler("tts",
- scoped_ptr<NativeHandler>(new TTSCustomBindings(this, v8_context)));
+ scoped_ptr<NativeHandler>(new TTSCustomBindings(this, context)));
module_system->RegisterNativeHandler("web_request",
scoped_ptr<NativeHandler>(
- new WebRequestCustomBindings(this, v8_context)));
+ new WebRequestCustomBindings(this, context)));
module_system->RegisterNativeHandler("webstore",
scoped_ptr<NativeHandler>(new WebstoreBindings(this, context)));
}
@@ -1018,7 +1012,7 @@ void Dispatcher::DidCreateScriptContext(
new ChromeV8Context(v8_context, frame, extension, context_type);
v8_context_set_.Add(context);
- scoped_ptr<ModuleSystem> module_system(new ModuleSystem(v8_context,
+ scoped_ptr<ModuleSystem> module_system(new ModuleSystem(context,
&source_map_));
// Enable natives in startup.
ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system.get());
@@ -1026,23 +1020,23 @@ void Dispatcher::DidCreateScriptContext(
RegisterNativeHandlers(module_system.get(), context);
module_system->RegisterNativeHandler("chrome",
- scoped_ptr<NativeHandler>(new ChromeNativeHandler(v8_context)));
+ scoped_ptr<NativeHandler>(new ChromeNativeHandler(context)));
module_system->RegisterNativeHandler("chrome_hidden",
- scoped_ptr<NativeHandler>(new ChromeHiddenNativeHandler(v8_context)));
+ scoped_ptr<NativeHandler>(new ChromeHiddenNativeHandler(context)));
module_system->RegisterNativeHandler("print",
- scoped_ptr<NativeHandler>(new PrintNativeHandler(v8_context)));
+ scoped_ptr<NativeHandler>(new PrintNativeHandler(context)));
module_system->RegisterNativeHandler("lazy_background_page",
scoped_ptr<NativeHandler>(
- new LazyBackgroundPageNativeHandler(this, v8_context)));
+ new LazyBackgroundPageNativeHandler(this, context)));
module_system->RegisterNativeHandler("logging",
- scoped_ptr<NativeHandler>(new LoggingNativeHandler(v8_context)));
+ scoped_ptr<NativeHandler>(new LoggingNativeHandler(context)));
module_system->RegisterNativeHandler("schema_registry",
scoped_ptr<NativeHandler>(
- new SchemaRegistryNativeHandler(v8_schema_registry(), v8_context)));
+ new SchemaRegistryNativeHandler(v8_schema_registry(), context)));
module_system->RegisterNativeHandler("v8_context",
scoped_ptr<NativeHandler>(new V8ContextNativeHandler(context, this)));
module_system->RegisterNativeHandler("test_features",
- scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(v8_context)));
+ scoped_ptr<NativeHandler>(new TestFeaturesNativeHandler(context)));
int manifest_version = extension ? extension->manifest_version() : 1;
bool send_request_disabled =
@@ -1050,7 +1044,7 @@ void Dispatcher::DidCreateScriptContext(
BackgroundInfo::HasLazyBackgroundPage(extension));
module_system->RegisterNativeHandler("process",
scoped_ptr<NativeHandler>(new ProcessInfoNativeHandler(
- this, v8_context, context->GetExtensionID(),
+ this, context, context->GetExtensionID(),
context->GetContextTypeDescription(),
ChromeRenderProcessObserver::is_incognito_process(),
manifest_version, send_request_disabled)));
diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc
index 6a25aaa..ce40cb7 100644
--- a/chrome/renderer/extensions/event_bindings.cc
+++ b/chrome/renderer/extensions/event_bindings.cc
@@ -70,9 +70,8 @@ base::LazyInstance<EventFilter> g_event_filter = LAZY_INSTANCE_INITIALIZER;
// TODO(koz): Merge this into EventBindings.
class ExtensionImpl : public ChromeV8Extension {
public:
- explicit ExtensionImpl(Dispatcher* dispatcher,
- v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ explicit ExtensionImpl(Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("AttachEvent",
base::Bind(&ExtensionImpl::AttachEvent, base::Unretained(this)));
RouteFunction("DetachEvent",
@@ -98,14 +97,12 @@ class ExtensionImpl : public ChromeV8Extension {
if (args[0]->IsString()) {
std::string event_name = *v8::String::AsciiValue(args[0]->ToString());
- const ChromeV8ContextSet& context_set = dispatcher_->v8_context_set();
- ChromeV8Context* context = context_set.GetByV8Context(v8_context());
- CHECK(context);
+ CHECK(context());
- if (!dispatcher_->CheckContextAccessToExtensionAPI(event_name, context))
+ if (!dispatcher_->CheckContextAccessToExtensionAPI(event_name, context()))
return v8::Undefined();
- std::string extension_id = context->GetExtensionID();
+ std::string extension_id = context()->GetExtensionID();
EventListenerCounts& listener_counts =
g_listener_counts.Get()[extension_id];
if (++listener_counts[event_name] == 1) {
@@ -116,7 +113,7 @@ class ExtensionImpl : public ChromeV8Extension {
// This is called the first time the page has added a listener. Since
// the background page is the only lazy page, we know this is the first
// time this listener has been registered.
- if (IsLazyBackgroundPage(GetRenderView(), context->extension())) {
+ if (IsLazyBackgroundPage(GetRenderView(), context()->extension())) {
content::RenderThread::Get()->Send(
new ExtensionHostMsg_AddLazyListener(extension_id, event_name));
}
@@ -133,12 +130,10 @@ class ExtensionImpl : public ChromeV8Extension {
std::string event_name = *v8::String::AsciiValue(args[0]->ToString());
bool is_manual = args[1]->BooleanValue();
- const ChromeV8ContextSet& context_set = dispatcher_->v8_context_set();
- ChromeV8Context* context = context_set.GetByV8Context(v8_context());
- if (!context)
+ if (!context())
return v8::Undefined();
- std::string extension_id = context->GetExtensionID();
+ std::string extension_id = context()->GetExtensionID();
EventListenerCounts& listener_counts =
g_listener_counts.Get()[extension_id];
@@ -152,7 +147,7 @@ class ExtensionImpl : public ChromeV8Extension {
// last listener manually, then we assume that it is no longer interested
// in being awakened for this event.
if (is_manual && IsLazyBackgroundPage(GetRenderView(),
- context->extension())) {
+ context()->extension())) {
content::RenderThread::Get()->Send(
new ExtensionHostMsg_RemoveLazyListener(extension_id, event_name));
}
@@ -170,18 +165,16 @@ class ExtensionImpl : public ChromeV8Extension {
DCHECK(args[0]->IsString());
DCHECK(args[1]->IsObject());
- const ChromeV8ContextSet& context_set = dispatcher_->v8_context_set();
- ChromeV8Context* context = context_set.GetByV8Context(v8_context());
- DCHECK(context);
- if (!context)
+ DCHECK(context());
+ if (!context())
return v8::Integer::New(-1);
std::string event_name = *v8::String::AsciiValue(args[0]);
// This method throws an exception if it returns false.
- if (!dispatcher_->CheckContextAccessToExtensionAPI(event_name, context))
+ if (!dispatcher_->CheckContextAccessToExtensionAPI(event_name, context()))
return v8::Undefined();
- std::string extension_id = context->GetExtensionID();
+ std::string extension_id = context()->GetExtensionID();
if (extension_id.empty())
return v8::Integer::New(-1);
@@ -191,7 +184,7 @@ class ExtensionImpl : public ChromeV8Extension {
base::DictionaryValue* filter_dict = NULL;
base::Value* filter_value =
- converter->FromV8Value(args[1]->ToObject(), context->v8_context());
+ converter->FromV8Value(args[1]->ToObject(), context()->v8_context());
if (!filter_value)
return v8::Integer::New(-1);
if (!filter_value->GetAsDictionary(&filter_dict)) {
@@ -206,7 +199,7 @@ class ExtensionImpl : public ChromeV8Extension {
// Only send IPCs the first time a filter gets added.
if (AddFilter(event_name, extension_id, filter.get())) {
- bool lazy = IsLazyBackgroundPage(GetRenderView(), context->extension());
+ bool lazy = IsLazyBackgroundPage(GetRenderView(), context()->extension());
content::RenderThread::Get()->Send(
new ExtensionHostMsg_AddFilteredListener(extension_id, event_name,
*filter, lazy));
@@ -252,12 +245,10 @@ class ExtensionImpl : public ChromeV8Extension {
DCHECK(args[0]->IsInt32());
DCHECK(args[1]->IsBoolean());
bool is_manual = args[1]->BooleanValue();
- const ChromeV8ContextSet& context_set = dispatcher_->v8_context_set();
- ChromeV8Context* context = context_set.GetByV8Context(v8_context());
- if (!context)
+ if (!context())
return v8::Undefined();
- std::string extension_id = context->GetExtensionID();
+ std::string extension_id = context()->GetExtensionID();
if (extension_id.empty())
return v8::Undefined();
@@ -271,7 +262,7 @@ class ExtensionImpl : public ChromeV8Extension {
// Only send IPCs the last time a filter gets removed.
if (RemoveFilter(event_name, extension_id, event_matcher->value())) {
bool lazy = is_manual && IsLazyBackgroundPage(GetRenderView(),
- context->extension());
+ context()->extension());
content::RenderThread::Get()->Send(
new ExtensionHostMsg_RemoveFilteredListener(extension_id, event_name,
*event_matcher->value(),
@@ -331,7 +322,7 @@ class ExtensionImpl : public ChromeV8Extension {
// static
ChromeV8Extension* EventBindings::Create(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context) {
+ ChromeV8Context* context) {
return new ExtensionImpl(dispatcher, context);
}
diff --git a/chrome/renderer/extensions/event_bindings.h b/chrome/renderer/extensions/event_bindings.h
index a263ad3..c709953 100644
--- a/chrome/renderer/extensions/event_bindings.h
+++ b/chrome/renderer/extensions/event_bindings.h
@@ -8,6 +8,7 @@
#include "v8/include/v8.h"
namespace extensions {
+class ChromeV8Context;
class ChromeV8Extension;
class Dispatcher;
class EventFilter;
@@ -16,7 +17,7 @@ class EventFilter;
class EventBindings {
public:
static ChromeV8Extension* Create(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
};
} // namespace extensions
diff --git a/chrome/renderer/extensions/extension_custom_bindings.cc b/chrome/renderer/extensions/extension_custom_bindings.cc
index 7f6c6c2..66cfc1c 100644
--- a/chrome/renderer/extensions/extension_custom_bindings.cc
+++ b/chrome/renderer/extensions/extension_custom_bindings.cc
@@ -27,9 +27,8 @@ namespace {
} // namespace
-ExtensionCustomBindings::ExtensionCustomBindings(
- Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ExtensionCustomBindings::ExtensionCustomBindings(Dispatcher* dispatcher,
+ ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction("GetExtensionViews",
base::Bind(&ExtensionCustomBindings::GetExtensionViews,
diff --git a/chrome/renderer/extensions/extension_custom_bindings.h b/chrome/renderer/extensions/extension_custom_bindings.h
index fb52a27..1bb3ff3 100644
--- a/chrome/renderer/extensions/extension_custom_bindings.h
+++ b/chrome/renderer/extensions/extension_custom_bindings.h
@@ -14,7 +14,7 @@ class Dispatcher;
class ExtensionCustomBindings : public ChromeV8Extension {
public:
explicit ExtensionCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetExtensionViews(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/file_browser_handler_custom_bindings.cc b/chrome/renderer/extensions/file_browser_handler_custom_bindings.cc
index b29e90f..3c6b89c 100644
--- a/chrome/renderer/extensions/file_browser_handler_custom_bindings.cc
+++ b/chrome/renderer/extensions/file_browser_handler_custom_bindings.cc
@@ -8,6 +8,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
+#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "grit/renderer_resources.h"
#include "third_party/WebKit/public/platform/WebFileSystem.h"
#include "third_party/WebKit/public/platform/WebFileSystemType.h"
@@ -17,7 +18,7 @@
namespace extensions {
FileBrowserHandlerCustomBindings::FileBrowserHandlerCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> context)
+ Dispatcher* dispatcher, ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction(
"GetExternalFileEntry",
@@ -45,7 +46,7 @@ v8::Handle<v8::Value> FileBrowserHandlerCustomBindings::GetExternalFileEntry(
bool is_directory =
file_def->Get(v8::String::New("fileIsDirectory"))->ToBoolean()->Value();
WebKit::WebFrame* webframe =
- WebKit::WebFrame::frameForContext(v8_context());
+ WebKit::WebFrame::frameForContext(context()->v8_context());
return webframe->createFileEntry(
WebKit::WebFileSystemTypeExternal,
WebKit::WebString::fromUTF8(file_system_name.c_str()),
diff --git a/chrome/renderer/extensions/file_browser_handler_custom_bindings.h b/chrome/renderer/extensions/file_browser_handler_custom_bindings.h
index 7e9948e..c02e501 100644
--- a/chrome/renderer/extensions/file_browser_handler_custom_bindings.h
+++ b/chrome/renderer/extensions/file_browser_handler_custom_bindings.h
@@ -14,7 +14,7 @@ namespace extensions {
class FileBrowserHandlerCustomBindings : public ChromeV8Extension {
public:
FileBrowserHandlerCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetExternalFileEntry(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/file_browser_private_custom_bindings.cc b/chrome/renderer/extensions/file_browser_private_custom_bindings.cc
index 1263efc..fee6815 100644
--- a/chrome/renderer/extensions/file_browser_private_custom_bindings.cc
+++ b/chrome/renderer/extensions/file_browser_private_custom_bindings.cc
@@ -8,6 +8,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
+#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "grit/renderer_resources.h"
#include "third_party/WebKit/public/platform/WebFileSystem.h"
#include "third_party/WebKit/public/platform/WebFileSystemType.h"
@@ -17,7 +18,7 @@
namespace extensions {
FileBrowserPrivateCustomBindings::FileBrowserPrivateCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> context)
+ Dispatcher* dispatcher, ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction(
"GetLocalFileSystem",
@@ -33,7 +34,8 @@ v8::Handle<v8::Value> FileBrowserPrivateCustomBindings::GetLocalFileSystem(
std::string name(*v8::String::Utf8Value(args[0]));
std::string path(*v8::String::Utf8Value(args[1]));
- WebKit::WebFrame* webframe = WebKit::WebFrame::frameForContext(v8_context());
+ WebKit::WebFrame* webframe =
+ WebKit::WebFrame::frameForContext(context()->v8_context());
DCHECK(webframe);
return webframe->createFileSystem(
WebKit::WebFileSystemTypeExternal,
diff --git a/chrome/renderer/extensions/file_browser_private_custom_bindings.h b/chrome/renderer/extensions/file_browser_private_custom_bindings.h
index 9b3e84c..91065bb 100644
--- a/chrome/renderer/extensions/file_browser_private_custom_bindings.h
+++ b/chrome/renderer/extensions/file_browser_private_custom_bindings.h
@@ -14,7 +14,7 @@ namespace extensions {
class FileBrowserPrivateCustomBindings : public ChromeV8Extension {
public:
FileBrowserPrivateCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
v8::Handle<v8::Value> GetLocalFileSystem(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/file_system_natives.cc b/chrome/renderer/extensions/file_system_natives.cc
index 1d73be0..7b28e48 100644
--- a/chrome/renderer/extensions/file_system_natives.cc
+++ b/chrome/renderer/extensions/file_system_natives.cc
@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
#include "chrome/common/url_constants.h"
+#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "chrome/renderer/extensions/user_script_slave.h"
#include "extensions/common/constants.h"
#include "grit/renderer_resources.h"
@@ -21,7 +22,7 @@
namespace extensions {
-FileSystemNatives::FileSystemNatives(v8::Handle<v8::Context> context)
+FileSystemNatives::FileSystemNatives(ChromeV8Context* context)
: ObjectBackedNativeHandler(context) {
RouteFunction("GetFileEntry",
base::Bind(&FileSystemNatives::GetFileEntry, base::Unretained(this)));
@@ -38,7 +39,8 @@ v8::Handle<v8::Value> FileSystemNatives::GetIsolatedFileSystem(
DCHECK(args.Length() == 1 || args.Length() == 2);
DCHECK(args[0]->IsString());
std::string file_system_id(*v8::String::Utf8Value(args[0]));
- WebKit::WebFrame* webframe = WebKit::WebFrame::frameForContext(v8_context());
+ WebKit::WebFrame* webframe =
+ WebKit::WebFrame::frameForContext(context()->v8_context());
DCHECK(webframe);
GURL context_url =
@@ -91,7 +93,8 @@ v8::Handle<v8::Value> FileSystemNatives::GetFileEntry(
DCHECK(args[4]->IsBoolean());
bool is_directory = args[4]->BooleanValue();
- WebKit::WebFrame* webframe = WebKit::WebFrame::frameForContext(v8_context());
+ WebKit::WebFrame* webframe =
+ WebKit::WebFrame::frameForContext(context()->v8_context());
DCHECK(webframe);
return webframe->createFileEntry(
type,
diff --git a/chrome/renderer/extensions/file_system_natives.h b/chrome/renderer/extensions/file_system_natives.h
index 46a6f67..b3f9cbc 100644
--- a/chrome/renderer/extensions/file_system_natives.h
+++ b/chrome/renderer/extensions/file_system_natives.h
@@ -13,7 +13,7 @@ namespace extensions {
// Custom bindings for the nativeFileSystem API.
class FileSystemNatives : public ObjectBackedNativeHandler {
public:
- explicit FileSystemNatives(v8::Handle<v8::Context> context);
+ explicit FileSystemNatives(ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetFileEntry(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/i18n_custom_bindings.cc b/chrome/renderer/extensions/i18n_custom_bindings.cc
index bf86c59..eade2a6 100644
--- a/chrome/renderer/extensions/i18n_custom_bindings.cc
+++ b/chrome/renderer/extensions/i18n_custom_bindings.cc
@@ -14,7 +14,7 @@
namespace extensions {
I18NCustomBindings::I18NCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction("GetL10nMessage",
base::Bind(&I18NCustomBindings::GetL10nMessage, base::Unretained(this)));
diff --git a/chrome/renderer/extensions/i18n_custom_bindings.h b/chrome/renderer/extensions/i18n_custom_bindings.h
index 3f0e5c4..26d62a3 100644
--- a/chrome/renderer/extensions/i18n_custom_bindings.h
+++ b/chrome/renderer/extensions/i18n_custom_bindings.h
@@ -12,7 +12,7 @@ namespace extensions {
// Implements custom bindings for the i18n API.
class I18NCustomBindings : public ChromeV8Extension {
public:
- I18NCustomBindings(Dispatcher* dispatcher, v8::Handle<v8::Context> context);
+ I18NCustomBindings(Dispatcher* dispatcher, ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetL10nMessage(const v8::Arguments& args);
@@ -21,4 +21,3 @@ class I18NCustomBindings : public ChromeV8Extension {
} // extensions
#endif // CHROME_RENDERER_EXTENSIONS_I18N_CUSTOM_BINDINGS_H_
-
diff --git a/chrome/renderer/extensions/media_galleries_custom_bindings.cc b/chrome/renderer/extensions/media_galleries_custom_bindings.cc
index 6be473c..cf4e5f1 100644
--- a/chrome/renderer/extensions/media_galleries_custom_bindings.cc
+++ b/chrome/renderer/extensions/media_galleries_custom_bindings.cc
@@ -17,8 +17,8 @@
namespace extensions {
MediaGalleriesCustomBindings::MediaGalleriesCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction(
"GetMediaFileSystemObject",
base::Bind(&MediaGalleriesCustomBindings::GetMediaFileSystemObject,
diff --git a/chrome/renderer/extensions/media_galleries_custom_bindings.h b/chrome/renderer/extensions/media_galleries_custom_bindings.h
index 736c04e..3502843b 100644
--- a/chrome/renderer/extensions/media_galleries_custom_bindings.h
+++ b/chrome/renderer/extensions/media_galleries_custom_bindings.h
@@ -13,7 +13,7 @@ namespace extensions {
class MediaGalleriesCustomBindings : public ChromeV8Extension {
public:
MediaGalleriesCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
private:
// FileSystemObject GetMediaFileSystem(string file_system_url): construct
@@ -31,4 +31,3 @@ class MediaGalleriesCustomBindings : public ChromeV8Extension {
} // extensions
#endif // CHROME_RENDERER_EXTENSIONS_MEDIA_GALLERIES_CUSTOM_BINDINGS_H_
-
diff --git a/chrome/renderer/extensions/miscellaneous_bindings.cc b/chrome/renderer/extensions/miscellaneous_bindings.cc
index d40d517..0f37653 100644
--- a/chrome/renderer/extensions/miscellaneous_bindings.cc
+++ b/chrome/renderer/extensions/miscellaneous_bindings.cc
@@ -73,7 +73,7 @@ const char kReceivingEndDoesntExistError[] =
class ExtensionImpl : public extensions::ChromeV8Extension {
public:
explicit ExtensionImpl(extensions::Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ extensions::ChromeV8Context* context)
: extensions::ChromeV8Extension(dispatcher, context) {
RouteFunction("CloseChannel",
base::Bind(&ExtensionImpl::CloseChannel, base::Unretained(this)));
@@ -194,7 +194,7 @@ namespace extensions {
ChromeV8Extension* MiscellaneousBindings::Get(
Dispatcher* dispatcher,
- v8::Handle<v8::Context> context) {
+ ChromeV8Context* context) {
return new ExtensionImpl(dispatcher, context);
}
diff --git a/chrome/renderer/extensions/miscellaneous_bindings.h b/chrome/renderer/extensions/miscellaneous_bindings.h
index 33bb15e..8fb563e 100644
--- a/chrome/renderer/extensions/miscellaneous_bindings.h
+++ b/chrome/renderer/extensions/miscellaneous_bindings.h
@@ -34,7 +34,7 @@ class MiscellaneousBindings {
public:
// Creates an instance of the extension.
static ChromeV8Extension* Get(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
// Dispatches the Port.onConnect content script messaging event to some
// contexts in |contexts|. If |restrict_to_render_view| is specified, only
diff --git a/chrome/renderer/extensions/module_system.cc b/chrome/renderer/extensions/module_system.cc
index 85050a7..3f46ee1 100644
--- a/chrome/renderer/extensions/module_system.cc
+++ b/chrome/renderer/extensions/module_system.cc
@@ -69,7 +69,7 @@ void DumpException(const v8::TryCatch& try_catch) {
} // namespace
-ModuleSystem::ModuleSystem(v8::Handle<v8::Context> context,
+ModuleSystem::ModuleSystem(ChromeV8Context* context,
SourceMap* source_map)
: ObjectBackedNativeHandler(context),
source_map_(source_map),
@@ -79,7 +79,7 @@ ModuleSystem::ModuleSystem(v8::Handle<v8::Context> context,
RouteFunction("requireNative",
base::Bind(&ModuleSystem::RequireNative, base::Unretained(this)));
- v8::Handle<v8::Object> global(context->Global());
+ v8::Handle<v8::Object> global(context->v8_context()->Global());
global->SetHiddenValue(v8::String::New(kModulesField), v8::Object::New());
global->SetHiddenValue(v8::String::New(kModuleSystem),
v8::External::New(this));
@@ -97,7 +97,7 @@ void ModuleSystem::Invalidate() {
// and we use this as a signal in lazy handlers that we no longer exist.
{
v8::HandleScope scope;
- v8::Handle<v8::Object> global = v8_context()->Global();
+ v8::Handle<v8::Object> global = context()->v8_context()->Global();
global->DeleteHiddenValue(v8::String::New(kModulesField));
global->DeleteHiddenValue(v8::String::New(kModuleSystem));
}
@@ -144,9 +144,9 @@ v8::Handle<v8::Value> ModuleSystem::RequireForJs(const v8::Arguments& args) {
v8::Handle<v8::Value> ModuleSystem::RequireForJsInner(
v8::Handle<v8::String> module_name) {
v8::HandleScope handle_scope;
- v8::Context::Scope context_scope(v8_context());
+ v8::Context::Scope context_scope(context()->v8_context());
- v8::Handle<v8::Object> global(v8_context()->Global());
+ v8::Handle<v8::Object> global(context()->v8_context()->Global());
// The module system might have been deleted. This can happen if a different
// context keeps a reference to us, but our frame is destroyed (e.g.
@@ -236,7 +236,7 @@ v8::Local<v8::Value> ModuleSystem::CallModuleMethod(
v8::Handle<v8::Function> func =
v8::Handle<v8::Function>::Cast(value);
- v8::Handle<v8::Object> global(v8_context()->Global());
+ v8::Handle<v8::Object> global(context()->v8_context()->Global());
v8::Local<v8::Value> result;
{
WebKit::WebScopedMicrotaskSuppression suppression;
@@ -287,7 +287,7 @@ v8::Handle<v8::Value> ModuleSystem::LazyFieldGetterInner(
CHECK(info.Data()->IsObject());
v8::HandleScope handle_scope;
v8::Handle<v8::Object> parameters = v8::Handle<v8::Object>::Cast(info.Data());
- // This context should be the same as v8_context().
+ // This context should be the same as context()->v8_context().
v8::Handle<v8::Context> context = parameters->CreationContext();
v8::Handle<v8::Object> global(context->Global());
v8::Handle<v8::Value> module_system_value =
diff --git a/chrome/renderer/extensions/module_system.h b/chrome/renderer/extensions/module_system.h
index a3c9606..53205a0 100644
--- a/chrome/renderer/extensions/module_system.h
+++ b/chrome/renderer/extensions/module_system.h
@@ -8,6 +8,7 @@
#include "base/compiler_specific.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/scoped_ptr.h"
+#include "chrome/renderer/extensions/native_handler.h"
#include "chrome/renderer/extensions/object_backed_native_handler.h"
#include "v8/include/v8.h"
@@ -61,7 +62,7 @@ class ModuleSystem : public ObjectBackedNativeHandler {
};
// |source_map| is a weak pointer.
- ModuleSystem(v8::Handle<v8::Context> context, SourceMap* source_map);
+ ModuleSystem(ChromeV8Context* context, SourceMap* source_map);
virtual ~ModuleSystem();
// Require the specified module. This is the equivalent of calling
diff --git a/chrome/renderer/extensions/module_system_unittest.cc b/chrome/renderer/extensions/module_system_unittest.cc
index 461690b..b46411e 100644
--- a/chrome/renderer/extensions/module_system_unittest.cc
+++ b/chrome/renderer/extensions/module_system_unittest.cc
@@ -13,7 +13,7 @@ using extensions::ObjectBackedNativeHandler;
class CounterNatives : public ObjectBackedNativeHandler {
public:
- explicit CounterNatives(v8::Handle<v8::Context> context)
+ explicit CounterNatives(extensions::ChromeV8Context* context)
: ObjectBackedNativeHandler(context), counter_(0) {
RouteFunction("Get", base::Bind(&CounterNatives::Get,
base::Unretained(this)));
@@ -175,7 +175,7 @@ TEST_F(ModuleSystemTest, TestLazyFieldIsOnlyEvaledOnce) {
ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
module_system_->RegisterNativeHandler(
"counter",
- scoped_ptr<NativeHandler>(new CounterNatives(v8::Context::GetCurrent())));
+ scoped_ptr<NativeHandler>(new CounterNatives(context_.get())));
RegisterModule("lazy",
"requireNative('counter').Increment();"
"exports.x = 5;");
@@ -229,7 +229,7 @@ TEST_F(ModuleSystemTest, TestModulesOnlyGetEvaledOnce) {
ModuleSystem::NativesEnabledScope natives_enabled_scope(module_system_.get());
module_system_->RegisterNativeHandler(
"counter",
- scoped_ptr<NativeHandler>(new CounterNatives(v8::Context::GetCurrent())));
+ scoped_ptr<NativeHandler>(new CounterNatives(context_.get())));
RegisterModule("incrementsWhenEvaled",
"requireNative('counter').Increment();");
diff --git a/chrome/renderer/extensions/object_backed_native_handler.cc b/chrome/renderer/extensions/object_backed_native_handler.cc
index bb5f22b..a7eeeaf 100644
--- a/chrome/renderer/extensions/object_backed_native_handler.cc
+++ b/chrome/renderer/extensions/object_backed_native_handler.cc
@@ -6,6 +6,7 @@
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
+#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "chrome/renderer/extensions/console.h"
#include "chrome/renderer/extensions/module_system.h"
#include "v8/include/v8.h"
@@ -18,8 +19,8 @@ const char* kHandlerFunction = "handler_function";
} // namespace
ObjectBackedNativeHandler::ObjectBackedNativeHandler(
- v8::Handle<v8::Context> context)
- : v8_context_(context),
+ ChromeV8Context* context)
+ : context_(context),
object_template_(v8::ObjectTemplate::New()) {
}
@@ -55,9 +56,10 @@ void ObjectBackedNativeHandler::RouteFunction(
const std::string& name,
const HandlerFunction& handler_function) {
v8::HandleScope handle_scope;
- v8::Context::Scope context_scope(v8_context_.get());
+ v8::Context::Scope context_scope(context_->v8_context());
- v8::Persistent<v8::Object> data(v8_context_->GetIsolate(), v8::Object::New());
+ v8::Persistent<v8::Object> data(context_->v8_context()->GetIsolate(),
+ v8::Object::New());
data->Set(v8::String::New(kHandlerFunction),
v8::External::New(new HandlerFunction(handler_function)));
router_data_.push_back(data);
@@ -70,7 +72,7 @@ void ObjectBackedNativeHandler::Invalidate() {
if (!is_valid())
return;
v8::HandleScope handle_scope;
- v8::Context::Scope context_scope(v8_context_.get());
+ v8::Context::Scope context_scope(context_->v8_context());
for (RouterData::iterator it = router_data_.begin();
it != router_data_.end(); ++it) {
@@ -81,10 +83,10 @@ void ObjectBackedNativeHandler::Invalidate() {
delete static_cast<HandlerFunction*>(
handler_function_value.As<v8::External>()->Value());
data->Delete(v8::String::New(kHandlerFunction));
- data.Dispose(v8_context_->GetIsolate());
+ data.Dispose(context_->v8_context()->GetIsolate());
}
object_template_.reset();
- v8_context_.reset();
+ context_ = NULL;
NativeHandler::Invalidate();
}
diff --git a/chrome/renderer/extensions/object_backed_native_handler.h b/chrome/renderer/extensions/object_backed_native_handler.h
index 0439adf..78e893d 100644
--- a/chrome/renderer/extensions/object_backed_native_handler.h
+++ b/chrome/renderer/extensions/object_backed_native_handler.h
@@ -15,13 +15,14 @@
#include "v8/include/v8.h"
namespace extensions {
+class ChromeV8Context;
// An ObjectBackedNativeHandler is a factory for JS objects with functions on
// them that map to native C++ functions. Subclasses should call RouteFunction()
// in their constructor to define functions on the created JS objects.
class ObjectBackedNativeHandler : public NativeHandler {
public:
- explicit ObjectBackedNativeHandler(v8::Handle<v8::Context> context);
+ explicit ObjectBackedNativeHandler(ChromeV8Context* context);
virtual ~ObjectBackedNativeHandler();
// Create an object with bindings to the native functions defined through
@@ -38,7 +39,7 @@ class ObjectBackedNativeHandler : public NativeHandler {
void RouteFunction(const std::string& name,
const HandlerFunction& handler_function);
- v8::Handle<v8::Context> v8_context() { return v8_context_.get(); }
+ ChromeV8Context* context() { return context_; }
virtual void Invalidate() OVERRIDE;
@@ -63,9 +64,7 @@ class ObjectBackedNativeHandler : public NativeHandler {
typedef std::vector<v8::Persistent<v8::Object> > RouterData;
RouterData router_data_;
- // TODO(kalman): Just pass around a ChromeV8Context. It already has a
- // persistent handle to this context.
- ScopedPersistent<v8::Context> v8_context_;
+ ChromeV8Context* context_;
ScopedPersistent<v8::ObjectTemplate> object_template_;
diff --git a/chrome/renderer/extensions/page_actions_custom_bindings.cc b/chrome/renderer/extensions/page_actions_custom_bindings.cc
index 4c88f11..8326072 100644
--- a/chrome/renderer/extensions/page_actions_custom_bindings.cc
+++ b/chrome/renderer/extensions/page_actions_custom_bindings.cc
@@ -16,8 +16,8 @@
namespace extensions {
PageActionsCustomBindings::PageActionsCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetCurrentPageActions",
base::Bind(&PageActionsCustomBindings::GetCurrentPageActions,
base::Unretained(this)));
diff --git a/chrome/renderer/extensions/page_actions_custom_bindings.h b/chrome/renderer/extensions/page_actions_custom_bindings.h
index d0c105d..b8e8018 100644
--- a/chrome/renderer/extensions/page_actions_custom_bindings.h
+++ b/chrome/renderer/extensions/page_actions_custom_bindings.h
@@ -14,7 +14,7 @@ class Dispatcher;
class PageActionsCustomBindings : public ChromeV8Extension {
public:
PageActionsCustomBindings(Dispatcher* extension_dispatcher,
- v8::Handle<v8::Context> v8_context);
+ ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetCurrentPageActions(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/page_capture_custom_bindings.cc b/chrome/renderer/extensions/page_capture_custom_bindings.cc
index c6ad3ba..fd1950e 100644
--- a/chrome/renderer/extensions/page_capture_custom_bindings.cc
+++ b/chrome/renderer/extensions/page_capture_custom_bindings.cc
@@ -16,7 +16,7 @@ namespace extensions {
PageCaptureCustomBindings::PageCaptureCustomBindings(
Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction("CreateBlob",
base::Bind(&PageCaptureCustomBindings::CreateBlob,
diff --git a/chrome/renderer/extensions/page_capture_custom_bindings.h b/chrome/renderer/extensions/page_capture_custom_bindings.h
index a2faa61..60cb19c 100644
--- a/chrome/renderer/extensions/page_capture_custom_bindings.h
+++ b/chrome/renderer/extensions/page_capture_custom_bindings.h
@@ -13,7 +13,7 @@ namespace extensions {
class PageCaptureCustomBindings : public ChromeV8Extension {
public:
PageCaptureCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context);
+ ChromeV8Context* context);
private:
// Creates a Blob with the content of the specified file.
diff --git a/chrome/renderer/extensions/runtime_custom_bindings.cc b/chrome/renderer/extensions/runtime_custom_bindings.cc
index b41f43c..0f4801f 100644
--- a/chrome/renderer/extensions/runtime_custom_bindings.cc
+++ b/chrome/renderer/extensions/runtime_custom_bindings.cc
@@ -24,8 +24,7 @@ namespace extensions {
RuntimeCustomBindings::RuntimeCustomBindings(Dispatcher* dispatcher,
ChromeV8Context* context)
- : ChromeV8Extension(dispatcher, context->v8_context()),
- context_(context) {
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetManifest",
base::Bind(&RuntimeCustomBindings::GetManifest,
base::Unretained(this)));
@@ -68,7 +67,7 @@ v8::Handle<v8::Value> RuntimeCustomBindings::OpenChannelToNativeApp(
const v8::Arguments& args) {
// Verify that the extension has permission to use native messaging.
if (!dispatcher()->CheckContextAccessToExtensionAPI(
- "nativeMessaging", context_)) {
+ "nativeMessaging", context())) {
return v8::Undefined();
}
@@ -97,11 +96,11 @@ v8::Handle<v8::Value> RuntimeCustomBindings::OpenChannelToNativeApp(
v8::Handle<v8::Value> RuntimeCustomBindings::GetManifest(
const v8::Arguments& args) {
- CHECK(context_->extension());
+ CHECK(context()->extension());
scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
- return converter->ToV8Value(context_->extension()->manifest()->value(),
- context_->v8_context());
+ return converter->ToV8Value(context()->extension()->manifest()->value(),
+ context()->v8_context());
}
} // extensions
diff --git a/chrome/renderer/extensions/runtime_custom_bindings.h b/chrome/renderer/extensions/runtime_custom_bindings.h
index d800713..b7de030 100644
--- a/chrome/renderer/extensions/runtime_custom_bindings.h
+++ b/chrome/renderer/extensions/runtime_custom_bindings.h
@@ -29,8 +29,6 @@ class RuntimeCustomBindings : public ChromeV8Extension {
private:
v8::Handle<v8::Value> GetManifest(const v8::Arguments& args);
-
- ChromeV8Context* context_;
};
} // extensions
diff --git a/chrome/renderer/extensions/send_request_natives.cc b/chrome/renderer/extensions/send_request_natives.cc
index 6af9985..2ea83a0 100644
--- a/chrome/renderer/extensions/send_request_natives.cc
+++ b/chrome/renderer/extensions/send_request_natives.cc
@@ -15,9 +15,8 @@ namespace extensions {
SendRequestNatives::SendRequestNatives(Dispatcher* dispatcher,
RequestSender* request_sender,
ChromeV8Context* context)
- : ChromeV8Extension(dispatcher, context->v8_context()),
- request_sender_(request_sender),
- context_(context) {
+ : ChromeV8Extension(dispatcher, context),
+ request_sender_(request_sender) {
RouteFunction("GetNextRequestId",
base::Bind(&SendRequestNatives::GetNextRequestId,
base::Unretained(this)));
@@ -53,14 +52,15 @@ v8::Handle<v8::Value> SendRequestNatives::StartRequest(
if (!preserve_null_in_objects)
converter->SetStripNullFromObjects(true);
- scoped_ptr<Value> value_args(converter->FromV8Value(args[1], v8_context()));
+ scoped_ptr<Value> value_args(
+ converter->FromV8Value(args[1], context()->v8_context()));
if (!value_args.get() || !value_args->IsType(Value::TYPE_LIST)) {
NOTREACHED() << "Unable to convert args passed to StartRequest";
return v8::Undefined();
}
request_sender_->StartRequest(
- context_, name, request_id, has_callback, for_io_thread,
+ context(), name, request_id, has_callback, for_io_thread,
static_cast<ListValue*>(value_args.get()));
return v8::Undefined();
}
diff --git a/chrome/renderer/extensions/send_request_natives.h b/chrome/renderer/extensions/send_request_natives.h
index 1e3437a..54bc78f 100644
--- a/chrome/renderer/extensions/send_request_natives.h
+++ b/chrome/renderer/extensions/send_request_natives.h
@@ -34,8 +34,6 @@ class SendRequestNatives : public ChromeV8Extension {
RequestSender* request_sender_;
- ChromeV8Context* context_;
-
DISALLOW_COPY_AND_ASSIGN(SendRequestNatives);
};
diff --git a/chrome/renderer/extensions/set_icon_natives.cc b/chrome/renderer/extensions/set_icon_natives.cc
index 084c5a8..614bbb2 100644
--- a/chrome/renderer/extensions/set_icon_natives.cc
+++ b/chrome/renderer/extensions/set_icon_natives.cc
@@ -26,9 +26,8 @@ namespace extensions {
SetIconNatives::SetIconNatives(Dispatcher* dispatcher,
RequestSender* request_sender,
ChromeV8Context* context)
- : ChromeV8Extension(dispatcher, context->v8_context()),
- request_sender_(request_sender),
- context_(context) {
+ : ChromeV8Extension(dispatcher, context),
+ request_sender_(request_sender) {
RouteFunction(
"SetIconCommon",
base::Bind(&SetIconNatives::SetIconCommon, base::Unretained(this)));
@@ -138,7 +137,7 @@ v8::Handle<v8::Value> SetIconNatives::SetIconCommon(
bool has_callback = args[3]->BooleanValue();
bool for_io_thread = args[4]->BooleanValue();
- request_sender_->StartRequest(context_,
+ request_sender_->StartRequest(context(),
name,
request_id,
has_callback,
diff --git a/chrome/renderer/extensions/set_icon_natives.h b/chrome/renderer/extensions/set_icon_natives.h
index 7e0352a..6e3c6d1 100644
--- a/chrome/renderer/extensions/set_icon_natives.h
+++ b/chrome/renderer/extensions/set_icon_natives.h
@@ -33,8 +33,6 @@ class SetIconNatives : public ChromeV8Extension {
RequestSender* request_sender_;
- ChromeV8Context* context_;
-
DISALLOW_COPY_AND_ASSIGN(SetIconNatives);
};
diff --git a/chrome/renderer/extensions/sync_file_system_custom_bindings.cc b/chrome/renderer/extensions/sync_file_system_custom_bindings.cc
index da273df..90d860b 100644
--- a/chrome/renderer/extensions/sync_file_system_custom_bindings.cc
+++ b/chrome/renderer/extensions/sync_file_system_custom_bindings.cc
@@ -7,6 +7,7 @@
#include <string>
#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "v8/include/v8.h"
#include "webkit/common/fileapi/file_system_util.h"
@@ -14,8 +15,8 @@
namespace extensions {
SyncFileSystemCustomBindings::SyncFileSystemCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction(
"GetSyncFileSystemObject",
base::Bind(&SyncFileSystemCustomBindings::GetSyncFileSystemObject,
@@ -49,7 +50,7 @@ v8::Handle<v8::Value> SyncFileSystemCustomBindings::GetSyncFileSystemObject(
}
WebKit::WebFrame* webframe =
- WebKit::WebFrame::frameForContext(v8_context());
+ WebKit::WebFrame::frameForContext(context()->v8_context());
return webframe->createFileSystem(
WebKit::WebFileSystemTypeExternal,
WebKit::WebString::fromUTF8(name),
diff --git a/chrome/renderer/extensions/sync_file_system_custom_bindings.h b/chrome/renderer/extensions/sync_file_system_custom_bindings.h
index c5820c7..524f669 100644
--- a/chrome/renderer/extensions/sync_file_system_custom_bindings.h
+++ b/chrome/renderer/extensions/sync_file_system_custom_bindings.h
@@ -14,7 +14,7 @@ namespace extensions {
class SyncFileSystemCustomBindings : public ChromeV8Extension {
public:
SyncFileSystemCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> v8_context);
+ ChromeV8Context* context);
private:
// FileSystemObject GetSyncFileSystemObject(string name, string root_url):
diff --git a/chrome/renderer/extensions/tabs_custom_bindings.cc b/chrome/renderer/extensions/tabs_custom_bindings.cc
index 1d2bbad..7164e6b 100644
--- a/chrome/renderer/extensions/tabs_custom_bindings.cc
+++ b/chrome/renderer/extensions/tabs_custom_bindings.cc
@@ -15,7 +15,7 @@
namespace extensions {
TabsCustomBindings::TabsCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> context)
+ ChromeV8Context* context)
: ChromeV8Extension(dispatcher, context) {
RouteFunction("OpenChannelToTab",
base::Bind(&TabsCustomBindings::OpenChannelToTab,
diff --git a/chrome/renderer/extensions/tabs_custom_bindings.h b/chrome/renderer/extensions/tabs_custom_bindings.h
index 0eec4ea..9b501e7 100644
--- a/chrome/renderer/extensions/tabs_custom_bindings.h
+++ b/chrome/renderer/extensions/tabs_custom_bindings.h
@@ -12,7 +12,7 @@ namespace extensions {
// Implements custom bindings for the tabs API.
class TabsCustomBindings : public ChromeV8Extension {
public:
- TabsCustomBindings(Dispatcher* dispatcher, v8::Handle<v8::Context> context);
+ TabsCustomBindings(Dispatcher* dispatcher, ChromeV8Context* context);
private:
// Creates a new messaging channel to the tab with the given ID.
diff --git a/chrome/renderer/extensions/tts_custom_bindings.cc b/chrome/renderer/extensions/tts_custom_bindings.cc
index c2a0e9a..a2d0dca 100644
--- a/chrome/renderer/extensions/tts_custom_bindings.cc
+++ b/chrome/renderer/extensions/tts_custom_bindings.cc
@@ -13,8 +13,8 @@
namespace extensions {
TTSCustomBindings::TTSCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetNextTTSEventId",
base::Bind(&TTSCustomBindings::GetNextTTSEventId,
base::Unretained(this)));
diff --git a/chrome/renderer/extensions/tts_custom_bindings.h b/chrome/renderer/extensions/tts_custom_bindings.h
index c060431..e3a49a6 100644
--- a/chrome/renderer/extensions/tts_custom_bindings.h
+++ b/chrome/renderer/extensions/tts_custom_bindings.h
@@ -12,7 +12,7 @@ namespace extensions {
// Implements custom bindings for the tts API.
class TTSCustomBindings : public ChromeV8Extension {
public:
- TTSCustomBindings(Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context);
+ TTSCustomBindings(Dispatcher* dispatcher, ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetNextTTSEventId(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/web_request_custom_bindings.cc b/chrome/renderer/extensions/web_request_custom_bindings.cc
index 768733e..be606ea 100644
--- a/chrome/renderer/extensions/web_request_custom_bindings.cc
+++ b/chrome/renderer/extensions/web_request_custom_bindings.cc
@@ -14,8 +14,8 @@
namespace extensions {
WebRequestCustomBindings::WebRequestCustomBindings(
- Dispatcher* dispatcher, v8::Handle<v8::Context> v8_context)
- : ChromeV8Extension(dispatcher, v8_context) {
+ Dispatcher* dispatcher, ChromeV8Context* context)
+ : ChromeV8Extension(dispatcher, context) {
RouteFunction("GetUniqueSubEventName",
base::Bind(&WebRequestCustomBindings::GetUniqueSubEventName,
base::Unretained(this)));
@@ -34,4 +34,3 @@ v8::Handle<v8::Value> WebRequestCustomBindings::GetUniqueSubEventName(
}
} // extensions
-
diff --git a/chrome/renderer/extensions/web_request_custom_bindings.h b/chrome/renderer/extensions/web_request_custom_bindings.h
index 596a3ff..fddd624 100644
--- a/chrome/renderer/extensions/web_request_custom_bindings.h
+++ b/chrome/renderer/extensions/web_request_custom_bindings.h
@@ -12,8 +12,7 @@ namespace extensions {
// Implements custom bindings for the webRequest API.
class WebRequestCustomBindings : public ChromeV8Extension {
public:
- WebRequestCustomBindings(Dispatcher* dispatcher,
- v8::Handle<v8::Context> v8_context);
+ WebRequestCustomBindings(Dispatcher* dispatcher, ChromeV8Context* context);
private:
v8::Handle<v8::Value> GetUniqueSubEventName(const v8::Arguments& args);
diff --git a/chrome/renderer/extensions/webstore_bindings.cc b/chrome/renderer/extensions/webstore_bindings.cc
index 275c04e..6dd18f1 100644
--- a/chrome/renderer/extensions/webstore_bindings.cc
+++ b/chrome/renderer/extensions/webstore_bindings.cc
@@ -55,7 +55,7 @@ int g_next_install_id = 0;
WebstoreBindings::WebstoreBindings(Dispatcher* dispatcher,
ChromeV8Context* context)
- : ChromeV8Extension(dispatcher, context->v8_context()),
+ : ChromeV8Extension(dispatcher, context),
ChromeV8ExtensionHandler(context) {
RouteFunction("Install",
base::Bind(&WebstoreBindings::Install, base::Unretained(this)));
@@ -63,7 +63,7 @@ WebstoreBindings::WebstoreBindings(Dispatcher* dispatcher,
v8::Handle<v8::Value> WebstoreBindings::Install(
const v8::Arguments& args) {
- WebFrame* frame = WebFrame::frameForContext(v8_context());
+ WebFrame* frame = WebFrame::frameForContext(context()->v8_context());
if (!frame || !frame->view())
return v8::Undefined();
@@ -212,12 +212,12 @@ void WebstoreBindings::OnInlineWebstoreInstallResponse(
bool success,
const std::string& error) {
v8::HandleScope handle_scope;
- v8::Context::Scope context_scope(context_->v8_context());
+ v8::Context::Scope context_scope(context()->v8_context());
v8::Handle<v8::Value> argv[3];
argv[0] = v8::Integer::New(install_id);
argv[1] = v8::Boolean::New(success);
argv[2] = v8::String::New(error.c_str());
- context_->CallChromeHiddenMethod("webstore.onInstallResponse",
+ context()->CallChromeHiddenMethod("webstore.onInstallResponse",
arraysize(argv), argv, NULL);
}
diff --git a/chrome/test/base/module_system_test.cc b/chrome/test/base/module_system_test.cc
index 5602426..5382fed 100644
--- a/chrome/test/base/module_system_test.cc
+++ b/chrome/test/base/module_system_test.cc
@@ -20,7 +20,7 @@ using extensions::ObjectBackedNativeHandler;
// Native JS functions for doing asserts.
class AssertNatives : public ObjectBackedNativeHandler {
public:
- explicit AssertNatives(v8::Handle<v8::Context> context)
+ explicit AssertNatives(extensions::ChromeV8Context* context)
: ObjectBackedNativeHandler(context),
assertion_made_(false),
failed_(false) {
@@ -87,10 +87,15 @@ class FailsOnException : public ModuleSystem::ExceptionHandler {
ModuleSystemTest::ModuleSystemTest()
: isolate_(v8::Isolate::GetCurrent()),
handle_scope_(isolate_),
- context_(v8::Context::New(isolate_)),
+ context_(
+ new extensions::ChromeV8Context(
+ v8::Context::New(isolate_),
+ reinterpret_cast<WebKit::WebFrame*>(1),
+ NULL,
+ extensions::Feature::UNSPECIFIED_CONTEXT)),
source_map_(new StringSourceMap()),
should_assertions_be_made_(true) {
- context_->Enter();
+ context_->v8_context()->Enter();
assert_natives_ = new AssertNatives(context_.get());
module_system_.reset(new ModuleSystem(context_.get(), source_map_.get()));
module_system_->RegisterNativeHandler("assert", scoped_ptr<NativeHandler>(
@@ -101,7 +106,7 @@ ModuleSystemTest::ModuleSystemTest()
ModuleSystemTest::~ModuleSystemTest() {
module_system_.reset();
- context_->Exit();
+ context_->v8_context()->Exit();
}
void ModuleSystemTest::RegisterModule(const std::string& name,
diff --git a/chrome/test/base/module_system_test.h b/chrome/test/base/module_system_test.h
index ce3f654..3f2fcb3 100644
--- a/chrome/test/base/module_system_test.h
+++ b/chrome/test/base/module_system_test.h
@@ -5,6 +5,7 @@
#ifndef CHROME_TEST_BASE_MODULE_SYSTEM_TEST_H_
#define CHROME_TEST_BASE_MODULE_SYSTEM_TEST_H_
+#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "chrome/renderer/extensions/module_system.h"
#include "chrome/renderer/extensions/scoped_persistent.h"
#include "v8/include/v8.h"
@@ -53,7 +54,7 @@ class ModuleSystemTest : public testing::Test {
v8::Isolate* isolate_;
v8::HandleScope handle_scope_;
- extensions::ScopedPersistent<v8::Context> context_;
+ scoped_ptr<extensions::ChromeV8Context> context_;
AssertNatives* assert_natives_;
scoped_ptr<StringSourceMap> source_map_;
scoped_ptr<extensions::ModuleSystem> module_system_;