• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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/mojo_module.h"
6 
7 #include "gin/arguments.h"
8 #include "gin/converter.h"
9 #include "gin/object_template_builder.h"
10 #include "gin/per_isolate_data.h"
11 #include "mojo/apps/js/js_app.h"
12 #include "mojo/apps/js/mojo_module.h"
13 #include "mojo/bindings/js/handle.h"
14 #include "mojo/common/data_pipe_utils.h"
15 
16 namespace mojo {
17 namespace apps {
18 
19 namespace {
20 
21 gin::WrapperInfo g_wrapper_info = {gin::kEmbedderNativeGin};
22 
23 }  // namespace
24 
25 const char Mojo::kModuleName[] = "mojo";
26 
GetModule(JSApp * js_app,v8::Isolate * isolate)27 v8::Local<v8::Value> Mojo::GetModule(JSApp* js_app, v8::Isolate* isolate) {
28   gin::PerIsolateData* data = gin::PerIsolateData::From(isolate);
29   v8::Local<v8::ObjectTemplate> templ =
30       data->GetObjectTemplate(&g_wrapper_info);
31 
32   if (templ.IsEmpty()) {
33     templ = gin::ObjectTemplateBuilder(isolate)
34                 .SetMethod("connectToService",
35                            base::Bind(&JSApp::ConnectToService,
36                                       base::Unretained(js_app)))
37                 .SetMethod("quit",
38                            base::Bind(&JSApp::Quit, base::Unretained(js_app)))
39                 .Build();
40     data->SetObjectTemplate(&g_wrapper_info, templ);
41   }
42 
43   return templ->NewInstance();
44 }
45 
46 }  // namespace apps
47 }  // namespace mojo
48