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

Unified Diff: content/renderer/pepper/host_var_tracker.h

Issue 400823004: gin (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | « content/content_renderer.gypi ('k') | content/renderer/pepper/host_var_tracker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/pepper/host_var_tracker.h
diff --git a/content/renderer/pepper/host_var_tracker.h b/content/renderer/pepper/host_var_tracker.h
index 6abbf869765c06a6c180d3a0181a82807369eab4..e412bedb2cb52cbea2884513a937a3fd6fee3c93 100644
--- a/content/renderer/pepper/host_var_tracker.h
+++ b/content/renderer/pepper/host_var_tracker.h
@@ -18,40 +18,34 @@
#include "ppapi/shared_impl/host_resource.h"
#include "ppapi/shared_impl/resource_tracker.h"
#include "ppapi/shared_impl/var_tracker.h"
-
-typedef struct NPObject NPObject;
+#include "v8/include/v8.h"
namespace ppapi {
class ArrayBufferVar;
-class NPObjectVar;
+class V8ObjectVar;
class Var;
}
namespace content {
-// Adds NPObject var tracking to the standard PPAPI VarTracker for use in the
-// renderer.
class HostVarTracker : public ppapi::VarTracker {
public:
HostVarTracker();
virtual ~HostVarTracker();
- // Tracks all live NPObjectVar. This is so we can map between instance +
- // NPObject and get the NPObjectVar corresponding to it. This Add/Remove
- // function is called by the NPObjectVar when it is created and
- // destroyed.
- void AddNPObjectVar(ppapi::NPObjectVar* object_var);
- void RemoveNPObjectVar(ppapi::NPObjectVar* object_var);
+ // Tracks all live V8ObjectVar. This is so we can map between instance +
+ // V8Object and get the V8ObjectVar corresponding to it. This Add/Remove
+ // function is called by the V8ObjectVar when it is created and destroyed.
+ void AddV8ObjectVar(ppapi::V8ObjectVar* object_var);
+ void RemoveV8ObjectVar(ppapi::V8ObjectVar* object_var);
- // Looks up a previously registered NPObjectVar for the given NPObject and
- // instance. Returns NULL if there is no NPObjectVar corresponding to the
- // given NPObject for the given instance. See AddNPObjectVar above.
- ppapi::NPObjectVar* NPObjectVarForNPObject(PP_Instance instance,
- NPObject* np_object);
+ // Creates or retrieves a V8ObjectVar.
+ PP_Var V8ObjectVarForV8Object(PP_Instance instance,
+ v8::Handle<v8::Object> object);
- // Returns the number of NPObjectVar's associated with the given instance.
+ // Returns the number of AddV8ObjectVar's associated with the given instance.
// Returns 0 if the instance isn't known.
- CONTENT_EXPORT int GetLiveNPObjectVarsForInstance(PP_Instance instance) const;
+ CONTENT_EXPORT int GetLiveV8ObjectVarsForInstance(PP_Instance instance) const;
// VarTracker public implementation.
virtual PP_Var MakeResourcePPVarFromMessage(
@@ -80,20 +74,24 @@ class HostVarTracker : public ppapi::VarTracker {
// Clear the reference count of the given object and remove it from
// live_vars_.
- void ForceReleaseNPObject(ppapi::NPObjectVar* object_var);
-
- typedef std::map<NPObject*, ppapi::NPObjectVar*> NPObjectToNPObjectVarMap;
-
- // Lists all known NPObjects, first indexed by the corresponding instance,
- // then by the NPObject*. This allows us to look up an NPObjectVar given
- // these two pieces of information.
- //
- // The instance map is lazily managed, so we'll add the
- // NPObjectToNPObjectVarMap lazily when the first NPObject var is created,
- // and delete it when it's empty.
- typedef std::map<PP_Instance, linked_ptr<NPObjectToNPObjectVarMap> >
- InstanceMap;
- InstanceMap instance_map_;
+ void ForceReleaseV8Object(ppapi::V8ObjectVar* object_var);
+
+ struct V8ObjectVarKey {
+ explicit V8ObjectVarKey(ppapi::V8ObjectVar* object_var);
+ V8ObjectVarKey(PP_Instance i, v8::Handle<v8::Object> object);
+ ~V8ObjectVarKey();
+
+ bool operator<(const V8ObjectVarKey& other) const;
+ bool operator==(const V8ObjectVarKey& other) const;
+
+ PP_Instance instance;
+ int hash;
+ };
+ typedef std::multimap<V8ObjectVarKey, ppapi::V8ObjectVar*> ObjectMap;
+ ObjectMap::const_iterator GetForV8Object(PP_Instance instance,
+ v8::Handle<v8::Object> object) const;
+
+ ObjectMap object_map_;
// Tracks all shared memory handles used for transmitting array buffers.
struct SharedMemoryMapEntry {
« no previous file with comments | « content/content_renderer.gypi ('k') | content/renderer/pepper/host_var_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698