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. 4 5 #include "mojo/apps/js/bindings/gl/module.h" 6 7 #include "base/logging.h" 8 #include "gin/arguments.h" 9 #include "gin/object_template_builder.h" 10 #include "gin/per_isolate_data.h" 11 #include "gin/wrappable.h" 12 #include "mojo/apps/js/bindings/gl/context.h" 13 #include "mojo/bindings/js/handle.h" 14 15 namespace mojo { 16 namespace js { 17 namespace gl { 18 19 const char* kModuleName = "mojo/apps/js/bindings/gl"; 20 21 namespace { 22 23 gin::WrapperInfo kWrapperInfo = { gin::kEmbedderNativeGin }; 24 CreateContext(const gin::Arguments & args,mojo::Handle handle,v8::Handle<v8::Function> context_lost_callback)25gin::Handle<Context> CreateContext( 26 const gin::Arguments& args, 27 mojo::Handle handle, 28 v8::Handle<v8::Function> context_lost_callback) { 29 return Context::Create(args.isolate(), handle, context_lost_callback); 30 } 31 32 } // namespace 33 GetModule(v8::Isolate * isolate)34v8::Local<v8::Value> GetModule(v8::Isolate* isolate) { 35 gin::PerIsolateData* data = gin::PerIsolateData::From(isolate); 36 v8::Local<v8::ObjectTemplate> templ = data->GetObjectTemplate(&kWrapperInfo); 37 38 if (templ.IsEmpty()) { 39 templ = gin::ObjectTemplateBuilder(isolate) 40 .SetMethod("Context", CreateContext) 41 .Build(); 42 data->SetObjectTemplate(&kWrapperInfo, templ); 43 } 44 45 return templ->NewInstance(); 46 } 47 48 } // namespace gl 49 } // namespace js 50 } // namespace mojo 51