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

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

Issue 7767011: Split extension_base.* out of bindings_utils.*. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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/bindings_utils.h ('k') | chrome/renderer/extensions/event_bindings.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/extensions/bindings_utils.cc
diff --git a/chrome/renderer/extensions/bindings_utils.cc b/chrome/renderer/extensions/bindings_utils.cc
index ed8bb301fdf9d52db70de487c08c93756d61ca4c..c836d9ac867dcf1028833458e05e76a1076d1445 100644
--- a/chrome/renderer/extensions/bindings_utils.cc
+++ b/chrome/renderer/extensions/bindings_utils.cc
@@ -4,16 +4,10 @@
#include "chrome/renderer/extensions/bindings_utils.h"
-#include "base/logging.h"
#include "base/lazy_instance.h"
-#include "base/stringprintf.h"
#include "base/string_split.h"
#include "base/string_util.h"
-#include "chrome/common/extensions/extension.h"
-#include "chrome/common/extensions/extension_set.h"
-#include "chrome/renderer/extensions/extension_dispatcher.h"
#include "content/renderer/render_view.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
#include "v8/include/v8.h"
@@ -33,101 +27,6 @@ struct SingletonData {
static base::LazyInstance<SingletonData> g_singleton_data(
base::LINKER_INITIALIZED);
-typedef std::map<int, std::string> StringMap;
-static base::LazyInstance<StringMap> g_string_map(base::LINKER_INITIALIZED);
-
-const char* GetStringResource(int resource_id) {
- StringMap* strings = g_string_map.Pointer();
- StringMap::iterator it = strings->find(resource_id);
- if (it == strings->end()) {
- it = strings->insert(std::make_pair(
- resource_id,
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- resource_id).as_string())).first;
- }
- return it->second.c_str();
-}
-
-// ExtensionBase
-
-const Extension* ExtensionBase::GetExtensionForCurrentContext() const {
- RenderView* renderview = bindings_utils::GetRenderViewForCurrentContext();
- if (!renderview)
- return NULL; // this can happen as a tab is closing.
-
- GURL url = renderview->webview()->mainFrame()->document().url();
- const ExtensionSet* extensions = extension_dispatcher_->extensions();
- if (!extensions->ExtensionBindingsAllowed(url))
- return NULL;
-
- return extensions->GetByURL(url);
-}
-
-bool ExtensionBase::CheckPermissionForCurrentContext(
- const std::string& function_name) const {
- const ::Extension* extension = GetExtensionForCurrentContext();
- if (extension &&
- extension_dispatcher_->IsExtensionActive(extension->id()) &&
- extension->HasAPIPermission(function_name))
- return true;
-
- static const char kMessage[] =
- "You do not have permission to use '%s'. Be sure to declare"
- " in your manifest what permissions you need.";
- std::string error_msg = base::StringPrintf(kMessage, function_name.c_str());
-
- v8::ThrowException(v8::Exception::Error(v8::String::New(error_msg.c_str())));
- return false;
-}
-
-v8::Handle<v8::FunctionTemplate>
- ExtensionBase::GetNativeFunction(v8::Handle<v8::String> name) {
- if (name->Equals(v8::String::New("GetChromeHidden"))) {
- return v8::FunctionTemplate::New(GetChromeHidden);
- }
-
- if (name->Equals(v8::String::New("Print"))) {
- return v8::FunctionTemplate::New(Print);
- }
-
- return v8::Handle<v8::FunctionTemplate>();
-}
-
-v8::Handle<v8::Value> ExtensionBase::GetChromeHidden(
- const v8::Arguments& args) {
- v8::Local<v8::Context> context = v8::Context::GetCurrent();
- v8::Local<v8::Object> global = context->Global();
- v8::Local<v8::Value> hidden = global->GetHiddenValue(
- v8::String::New(kChromeHidden));
-
- if (hidden.IsEmpty() || hidden->IsUndefined()) {
- hidden = v8::Object::New();
- global->SetHiddenValue(v8::String::New(kChromeHidden), hidden);
-
-#ifndef NDEBUG
- // Tell extension_process_bindings.js to validate callbacks and events
- // against their schema definitions in api/extension_api.json.
- v8::Local<v8::Object>::Cast(hidden)
- ->Set(v8::String::New(kValidateCallbacks), v8::True());
-#endif
- }
-
- DCHECK(hidden->IsObject());
- return hidden;
-}
-
-v8::Handle<v8::Value> ExtensionBase::Print(const v8::Arguments& args) {
- if (args.Length() < 1)
- return v8::Undefined();
-
- std::vector<std::string> components;
- for (int i = 0; i < args.Length(); ++i)
- components.push_back(*v8::String::Utf8Value(args[i]->ToString()));
-
- LOG(ERROR) << JoinString(components, ',');
- return v8::Undefined();
-}
-
ContextInfo::ContextInfo(v8::Persistent<v8::Context> context,
const std::string& extension_id,
WebFrame* frame)
@@ -157,6 +56,28 @@ ContextInfo* GetInfoForCurrentContext() {
return context_iter->get();
}
+v8::Handle<v8::Object> GetChromeHiddenForContext(
+ v8::Handle<v8::Context> context) {
+ v8::Local<v8::Object> global = context->Global();
+ v8::Local<v8::Value> hidden = global->GetHiddenValue(
+ v8::String::New(kChromeHidden));
+
+ if (hidden.IsEmpty() || hidden->IsUndefined()) {
+ hidden = v8::Object::New();
+ global->SetHiddenValue(v8::String::New(kChromeHidden), hidden);
+
+#ifndef NDEBUG
+ // Tell extension_process_bindings.js to validate callbacks and events
+ // against their schema definitions in api/extension_api.json.
+ v8::Local<v8::Object>::Cast(hidden)
+ ->Set(v8::String::New(kValidateCallbacks), v8::True());
+#endif
+ }
+
+ DCHECK(hidden->IsObject());
+ return v8::Local<v8::Object>::Cast(hidden);
+}
+
PendingRequest::PendingRequest(v8::Persistent<v8::Context> context,
const std::string& name)
: context(context), name(name) {
« no previous file with comments | « chrome/renderer/extensions/bindings_utils.h ('k') | chrome/renderer/extensions/event_bindings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698