Add CanCloseDialog to WebDialogDelegate to allow blocking closing of dialog if needed.
[chromium-blink-merge.git] / gin / per_isolate_data.cc
blob6c2397ba50b0a67ef1bb20a516c1fc1ab6b49f34
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"
8 using v8::Eternal;
9 using v8::Isolate;
10 using v8::Local;
11 using v8::Object;
12 using v8::FunctionTemplate;
13 using v8::ObjectTemplate;
15 namespace gin {
17 PerIsolateData::PerIsolateData(Isolate* isolate)
18 : 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(
41 WrapperInfo* info) {
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(
49 WrapperInfo* info) {
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_);
56 } // namespace gin