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

Side by Side Diff: gin/per_isolate_data.h

Issue 225413004: [gin] Add a v8::Platform implementation to allow for v8 posting tasks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GIN_PER_ISOLATE_DATA_H_ 5 #ifndef GIN_PER_ISOLATE_DATA_H_
6 #define GIN_PER_ISOLATE_DATA_H_ 6 #define GIN_PER_ISOLATE_DATA_H_
7 7
8 #include <map> 8 #include <map>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/memory/ref_counted.h"
11 #include "gin/gin_export.h" 12 #include "gin/gin_export.h"
12 #include "gin/public/wrapper_info.h" 13 #include "gin/public/wrapper_info.h"
13 #include "v8/include/v8.h" 14 #include "v8/include/v8.h"
14 15
16 namespace base {
17 class MessageLoopProxy;
18 }
19
15 namespace gin { 20 namespace gin {
16 21
17 class IndexedPropertyInterceptor; 22 class IndexedPropertyInterceptor;
18 class NamedPropertyInterceptor; 23 class NamedPropertyInterceptor;
19 class WrappableBase; 24 class WrappableBase;
20 25
21 // There is one instance of PerIsolateData per v8::Isolate managed by Gin. This 26 // There is one instance of PerIsolateData per v8::Isolate managed by Gin. This
22 // class stores all the Gin-related data that varies per isolate. 27 // class stores all the Gin-related data that varies per isolate.
23 class GIN_EXPORT PerIsolateData { 28 class GIN_EXPORT PerIsolateData {
24 public: 29 public:
(...skipping 28 matching lines...) Expand all
53 IndexedPropertyInterceptor* interceptor); 58 IndexedPropertyInterceptor* interceptor);
54 void ClearNamedPropertyInterceptor(WrappableBase* base, 59 void ClearNamedPropertyInterceptor(WrappableBase* base,
55 NamedPropertyInterceptor* interceptor); 60 NamedPropertyInterceptor* interceptor);
56 61
57 IndexedPropertyInterceptor* GetIndexedPropertyInterceptor( 62 IndexedPropertyInterceptor* GetIndexedPropertyInterceptor(
58 WrappableBase* base); 63 WrappableBase* base);
59 NamedPropertyInterceptor* GetNamedPropertyInterceptor(WrappableBase* base); 64 NamedPropertyInterceptor* GetNamedPropertyInterceptor(WrappableBase* base);
60 65
61 v8::Isolate* isolate() { return isolate_; } 66 v8::Isolate* isolate() { return isolate_; }
62 v8::ArrayBuffer::Allocator* allocator() { return allocator_; } 67 v8::ArrayBuffer::Allocator* allocator() { return allocator_; }
68 base::MessageLoopProxy* message_loop_proxy() {
69 return message_loop_proxy_.get();
70 }
63 71
64 private: 72 private:
65 typedef std::map< 73 typedef std::map<
66 WrapperInfo*, v8::Eternal<v8::ObjectTemplate> > ObjectTemplateMap; 74 WrapperInfo*, v8::Eternal<v8::ObjectTemplate> > ObjectTemplateMap;
67 typedef std::map< 75 typedef std::map<
68 WrapperInfo*, v8::Eternal<v8::FunctionTemplate> > FunctionTemplateMap; 76 WrapperInfo*, v8::Eternal<v8::FunctionTemplate> > FunctionTemplateMap;
69 typedef std::map<WrappableBase*, IndexedPropertyInterceptor*> 77 typedef std::map<WrappableBase*, IndexedPropertyInterceptor*>
70 IndexedPropertyInterceptorMap; 78 IndexedPropertyInterceptorMap;
71 typedef std::map<WrappableBase*, NamedPropertyInterceptor*> 79 typedef std::map<WrappableBase*, NamedPropertyInterceptor*>
72 NamedPropertyInterceptorMap; 80 NamedPropertyInterceptorMap;
73 81
74 // PerIsolateData doesn't actually own |isolate_|. Instead, the isolate is 82 // PerIsolateData doesn't actually own |isolate_|. Instead, the isolate is
75 // owned by the IsolateHolder, which also owns the PerIsolateData. 83 // owned by the IsolateHolder, which also owns the PerIsolateData.
76 v8::Isolate* isolate_; 84 v8::Isolate* isolate_;
77 v8::ArrayBuffer::Allocator* allocator_; 85 v8::ArrayBuffer::Allocator* allocator_;
78 ObjectTemplateMap object_templates_; 86 ObjectTemplateMap object_templates_;
79 FunctionTemplateMap function_templates_; 87 FunctionTemplateMap function_templates_;
80 IndexedPropertyInterceptorMap indexed_interceptors_; 88 IndexedPropertyInterceptorMap indexed_interceptors_;
81 NamedPropertyInterceptorMap named_interceptors_; 89 NamedPropertyInterceptorMap named_interceptors_;
90 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
82 91
83 DISALLOW_COPY_AND_ASSIGN(PerIsolateData); 92 DISALLOW_COPY_AND_ASSIGN(PerIsolateData);
84 }; 93 };
85 94
86 } // namespace gin 95 } // namespace gin
87 96
88 #endif // GIN_PER_ISOLATE_DATA_H_ 97 #endif // GIN_PER_ISOLATE_DATA_H_
OLDNEW
« no previous file with comments | « gin/isolate_holder.cc ('k') | gin/per_isolate_data.cc » ('j') | gin/public/v8_platform.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698