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

Unified Diff: chrome/renderer/extensions/chrome_v8_extension.cc

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: android compilation Created 7 years, 9 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
« no previous file with comments | « chrome/renderer/extensions/chrome_v8_extension.h ('k') | chrome/renderer/extensions/content_watcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/extensions/chrome_v8_extension.cc
diff --git a/chrome/renderer/extensions/chrome_v8_extension.cc b/chrome/renderer/extensions/chrome_v8_extension.cc
index a5cbf03e98d2b8b3acb3215c397b20e8d76d97dd..2a3e7d6db138e85f81628674ef347bcb9f79911d 100644
--- a/chrome/renderer/extensions/chrome_v8_extension.cc
+++ b/chrome/renderer/extensions/chrome_v8_extension.cc
@@ -25,61 +25,28 @@ using WebKit::WebView;
namespace extensions {
-namespace {
-
-static base::LazyInstance<ChromeV8Extension::InstanceSet> g_instances =
- LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
-// static
-content::RenderView* ChromeV8Extension::GetCurrentRenderView() {
- WebFrame* webframe = WebFrame::frameForCurrentContext();
- DCHECK(webframe) << "RetrieveCurrentFrame called when not in a V8 context.";
- if (!webframe)
- return NULL;
-
- WebView* webview = webframe->view();
- if (!webview)
- return NULL; // can happen during closing
-
- content::RenderView* renderview = content::RenderView::FromWebView(webview);
- DCHECK(renderview) << "Encountered a WebView without a WebViewDelegate";
- return renderview;
-}
-
-ChromeV8Extension::ChromeV8Extension(Dispatcher* dispatcher)
- // TODO(svenpanne) It would be nice to remove the GetCurrent() call and use
- // an additional constructor parameter instead, but this would involve too
- // many changes for now.
- : NativeHandler(v8::Isolate::GetCurrent()),
+ChromeV8Extension::ChromeV8Extension(Dispatcher* dispatcher,
+ v8::Handle<v8::Context> context)
+ : ObjectBackedNativeHandler(context),
dispatcher_(dispatcher) {
- g_instances.Get().insert(this);
+ CHECK(dispatcher);
}
ChromeV8Extension::~ChromeV8Extension() {
- g_instances.Get().erase(this);
}
-// static
-const ChromeV8Extension::InstanceSet& ChromeV8Extension::GetAll() {
- return g_instances.Get();
+ChromeV8Context* ChromeV8Extension::GetContext() {
+ return dispatcher_->v8_context_set().GetByV8Context(v8_context());
}
-const Extension* ChromeV8Extension::GetExtensionForCurrentRenderView() const {
- content::RenderView* renderview = GetCurrentRenderView();
- if (!renderview)
- return NULL; // this can happen as a tab is closing.
-
- WebDocument document = renderview->GetWebView()->mainFrame()->document();
- GURL url = document.url();
- const ExtensionSet* extensions = dispatcher_->extensions();
- if (!extensions->ExtensionBindingsAllowed(
- ExtensionURLInfo(document.securityOrigin(), url)))
- return NULL;
+content::RenderView* ChromeV8Extension::GetRenderView() {
+ ChromeV8Context* context = GetContext();
+ return context ? context->GetRenderView() : NULL;
+}
- return extensions->GetExtensionOrAppByURL(
- ExtensionURLInfo(document.securityOrigin(), url));
+const Extension* ChromeV8Extension::GetExtensionForRenderView() {
+ ChromeV8Context* context = GetContext();
+ return context ? context->extension() : NULL;
}
} // namespace extensions
« no previous file with comments | « chrome/renderer/extensions/chrome_v8_extension.h ('k') | chrome/renderer/extensions/content_watcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698