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
3 // found in the LICENSE file.
5 #include "gin/per_isolate_data.h"
6 #include "gin/public/gin_embedders.h"
12 using v8::FunctionTemplate
;
13 using v8::ObjectTemplate
;
17 PerIsolateData::PerIsolateData(Isolate
* isolate
)
19 isolate_
->SetData(kEmbedderNativeGin
, this);
22 PerIsolateData::~PerIsolateData() {
23 isolate_
->SetData(kEmbedderNativeGin
, NULL
);
26 PerIsolateData
* PerIsolateData::From(Isolate
* isolate
) {
27 return static_cast<PerIsolateData
*>(isolate
->GetData(kEmbedderNativeGin
));
30 void PerIsolateData::SetObjectTemplate(WrapperInfo
* info
,
31 Local
<ObjectTemplate
> templ
) {
32 object_templates_
[info
] = Eternal
<ObjectTemplate
>(isolate_
, templ
);
35 void PerIsolateData::SetFunctionTemplate(WrapperInfo
* info
,
36 Local
<FunctionTemplate
> templ
) {
37 function_templates_
[info
] = Eternal
<FunctionTemplate
>(isolate_
, templ
);
40 v8::Local
<v8::ObjectTemplate
> PerIsolateData::GetObjectTemplate(
42 ObjectTemplateMap::iterator it
= object_templates_
.find(info
);
43 if (it
== object_templates_
.end())
44 return v8::Local
<v8::ObjectTemplate
>();
45 return it
->second
.Get(isolate_
);
48 v8::Local
<v8::FunctionTemplate
> PerIsolateData::GetFunctionTemplate(
50 FunctionTemplateMap::iterator it
= function_templates_
.find(info
);
51 if (it
== function_templates_
.end())
52 return v8::Local
<v8::FunctionTemplate
>();
53 return it
->second
.Get(isolate_
);