blob: 7ed9da745df4c1b158a5908a348ffc201e469662 [file] [log] [blame]
[email protected]a22998a2013-11-10 05:00:501// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef GIN_PER_ISOLATE_DATA_H_
6#define GIN_PER_ISOLATE_DATA_H_
7
8#include <map>
9
10#include "base/basictypes.h"
[email protected]c07006b2013-11-20 03:01:4411#include "gin/public/wrapper_info.h"
[email protected]a22998a2013-11-10 05:00:5012#include "v8/include/v8.h"
13
14namespace gin {
15
16class PerIsolateData {
17 public:
18 explicit PerIsolateData(v8::Isolate* isolate);
19 ~PerIsolateData();
20
21 static PerIsolateData* From(v8::Isolate* isolate);
22
[email protected]e87f3122013-11-12 00:41:2723 void SetObjectTemplate(WrapperInfo* info,
24 v8::Local<v8::ObjectTemplate> object_template);
[email protected]97f21ca2013-11-17 17:46:0725 void SetFunctionTemplate(WrapperInfo* info,
26 v8::Local<v8::FunctionTemplate> function_template);
[email protected]e87f3122013-11-12 00:41:2727
28 v8::Local<v8::ObjectTemplate> GetObjectTemplate(WrapperInfo* info);
[email protected]97f21ca2013-11-17 17:46:0729 v8::Local<v8::FunctionTemplate> GetFunctionTemplate(WrapperInfo* info);
[email protected]a22998a2013-11-10 05:00:5030
31 private:
32 typedef std::map<
33 WrapperInfo*, v8::Eternal<v8::ObjectTemplate> > ObjectTemplateMap;
[email protected]97f21ca2013-11-17 17:46:0734 typedef std::map<
35 WrapperInfo*, v8::Eternal<v8::FunctionTemplate> > FunctionTemplateMap;
[email protected]a22998a2013-11-10 05:00:5036
37 v8::Isolate* isolate_;
38 ObjectTemplateMap object_templates_;
[email protected]97f21ca2013-11-17 17:46:0739 FunctionTemplateMap function_templates_;
[email protected]a22998a2013-11-10 05:00:5040
41 DISALLOW_COPY_AND_ASSIGN(PerIsolateData);
42};
43
44} // namespace gin
45
46#endif // GIN_PER_ISOLATE_DATA_H_