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

Unified Diff: chrome/renderer/extensions/v8_schema_registry.h

Issue 9616055: Make a process-wide cache for the v8::Value representation of extension APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, go back to old method Created 8 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
Index: chrome/renderer/extensions/v8_schema_registry.h
diff --git a/chrome/renderer/extensions/v8_schema_registry.h b/chrome/renderer/extensions/v8_schema_registry.h
new file mode 100644
index 0000000000000000000000000000000000000000..987f48ea7af40f63218b1044cbd22409158cbc2f
--- /dev/null
+++ b/chrome/renderer/extensions/v8_schema_registry.h
@@ -0,0 +1,44 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_EXTENSIONS_V8_SCHEMA_REGISTRY_H_
+#define CHROME_RENDERER_EXTENSIONS_V8_SCHEMA_REGISTRY_H_
+#pragma once
+
+#include <map>
+#include <set>
+#include <string>
+
+#include "base/basictypes.h"
+#include "v8/include/v8.h"
+
+namespace extensions {
+
+// A registry for the v8::Value representations of extension API schemas.
+// In a way, the v8 counterpart to ExtensionAPI.
+class V8SchemaRegistry {
+ public:
+ V8SchemaRegistry();
+ ~V8SchemaRegistry();
+
+ // Returns a v8::Array with all the schemas for the APIs in |apis|.
+ v8::Handle<v8::Array> GetSchemas(const std::set<std::string>& apis);
+
+ private:
+ // Returns a v8::Object for the schema for |api|, possibly from the cache.
+ v8::Handle<v8::Object> GetSchema(const std::string& api);
+
+ // Cache of schemas.
+ typedef std::map<std::string, v8::Persistent<v8::Object> > SchemaCache;
+ SchemaCache schema_cache_;
+
+ // Single per-instance v8::Context to create v8::Values.
+ v8::Persistent<v8::Context> context_;
+
+ DISALLOW_COPY_AND_ASSIGN(V8SchemaRegistry);
+};
+
+} // namespace extensions
+
+#endif // CHROME_RENDERER_EXTENSIONS_V8_SCHEMA_REGISTRY_H_
« no previous file with comments | « chrome/renderer/extensions/schema_generated_bindings.cc ('k') | chrome/renderer/extensions/v8_schema_registry.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698