OLD | NEW |
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 "base/memory/ref_counted.h" |
12 #include "gin/gin_export.h" | 12 #include "gin/gin_export.h" |
13 #include "gin/public/wrapper_info.h" | 13 #include "gin/public/wrapper_info.h" |
14 #include "v8/include/v8.h" | 14 #include "v8/include/v8.h" |
15 | 15 |
16 namespace base { | 16 namespace base { |
17 class MessageLoopProxy; | 17 class SingleThreadTaskRunner; |
18 } | 18 } |
19 | 19 |
20 namespace gin { | 20 namespace gin { |
21 | 21 |
22 class IndexedPropertyInterceptor; | 22 class IndexedPropertyInterceptor; |
23 class NamedPropertyInterceptor; | 23 class NamedPropertyInterceptor; |
24 class WrappableBase; | 24 class WrappableBase; |
25 | 25 |
26 // 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 |
27 // class stores all the Gin-related data that varies per isolate. | 27 // class stores all the Gin-related data that varies per isolate. |
(...skipping 30 matching lines...) Expand all Loading... |
58 IndexedPropertyInterceptor* interceptor); | 58 IndexedPropertyInterceptor* interceptor); |
59 void ClearNamedPropertyInterceptor(WrappableBase* base, | 59 void ClearNamedPropertyInterceptor(WrappableBase* base, |
60 NamedPropertyInterceptor* interceptor); | 60 NamedPropertyInterceptor* interceptor); |
61 | 61 |
62 IndexedPropertyInterceptor* GetIndexedPropertyInterceptor( | 62 IndexedPropertyInterceptor* GetIndexedPropertyInterceptor( |
63 WrappableBase* base); | 63 WrappableBase* base); |
64 NamedPropertyInterceptor* GetNamedPropertyInterceptor(WrappableBase* base); | 64 NamedPropertyInterceptor* GetNamedPropertyInterceptor(WrappableBase* base); |
65 | 65 |
66 v8::Isolate* isolate() { return isolate_; } | 66 v8::Isolate* isolate() { return isolate_; } |
67 v8::ArrayBuffer::Allocator* allocator() { return allocator_; } | 67 v8::ArrayBuffer::Allocator* allocator() { return allocator_; } |
68 base::MessageLoopProxy* message_loop_proxy() { | 68 base::SingleThreadTaskRunner* task_runner() { return task_runner_.get(); } |
69 return message_loop_proxy_.get(); | |
70 } | |
71 | 69 |
72 private: | 70 private: |
73 typedef std::map< | 71 typedef std::map< |
74 WrapperInfo*, v8::Eternal<v8::ObjectTemplate> > ObjectTemplateMap; | 72 WrapperInfo*, v8::Eternal<v8::ObjectTemplate> > ObjectTemplateMap; |
75 typedef std::map< | 73 typedef std::map< |
76 WrapperInfo*, v8::Eternal<v8::FunctionTemplate> > FunctionTemplateMap; | 74 WrapperInfo*, v8::Eternal<v8::FunctionTemplate> > FunctionTemplateMap; |
77 typedef std::map<WrappableBase*, IndexedPropertyInterceptor*> | 75 typedef std::map<WrappableBase*, IndexedPropertyInterceptor*> |
78 IndexedPropertyInterceptorMap; | 76 IndexedPropertyInterceptorMap; |
79 typedef std::map<WrappableBase*, NamedPropertyInterceptor*> | 77 typedef std::map<WrappableBase*, NamedPropertyInterceptor*> |
80 NamedPropertyInterceptorMap; | 78 NamedPropertyInterceptorMap; |
81 | 79 |
82 // PerIsolateData doesn't actually own |isolate_|. Instead, the isolate is | 80 // PerIsolateData doesn't actually own |isolate_|. Instead, the isolate is |
83 // owned by the IsolateHolder, which also owns the PerIsolateData. | 81 // owned by the IsolateHolder, which also owns the PerIsolateData. |
84 v8::Isolate* isolate_; | 82 v8::Isolate* isolate_; |
85 v8::ArrayBuffer::Allocator* allocator_; | 83 v8::ArrayBuffer::Allocator* allocator_; |
86 ObjectTemplateMap object_templates_; | 84 ObjectTemplateMap object_templates_; |
87 FunctionTemplateMap function_templates_; | 85 FunctionTemplateMap function_templates_; |
88 IndexedPropertyInterceptorMap indexed_interceptors_; | 86 IndexedPropertyInterceptorMap indexed_interceptors_; |
89 NamedPropertyInterceptorMap named_interceptors_; | 87 NamedPropertyInterceptorMap named_interceptors_; |
90 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; | 88 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
91 | 89 |
92 DISALLOW_COPY_AND_ASSIGN(PerIsolateData); | 90 DISALLOW_COPY_AND_ASSIGN(PerIsolateData); |
93 }; | 91 }; |
94 | 92 |
95 } // namespace gin | 93 } // namespace gin |
96 | 94 |
97 #endif // GIN_PER_ISOLATE_DATA_H_ | 95 #endif // GIN_PER_ISOLATE_DATA_H_ |
OLD | NEW |