11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/apps/js/mojo_module.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "gin/arguments.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "gin/converter.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "gin/object_template_builder.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "gin/per_isolate_data.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/apps/js/js_app.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/apps/js/mojo_module.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/bindings/js/handle.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/common/data_pipe_utils.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace mojo { 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace apps { 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace { 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccigin::WrapperInfo g_wrapper_info = {gin::kEmbedderNativeGin}; 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char Mojo::kModuleName[] = "mojo"; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciv8::Local<v8::Value> Mojo::GetModule(JSApp* js_app, v8::Isolate* isolate) { 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gin::PerIsolateData* data = gin::PerIsolateData::From(isolate); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci v8::Local<v8::ObjectTemplate> templ = 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data->GetObjectTemplate(&g_wrapper_info); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (templ.IsEmpty()) { 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci templ = gin::ObjectTemplateBuilder(isolate) 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci .SetMethod("connectToService", 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&JSApp::ConnectToService, 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(js_app))) 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci .SetMethod("quit", 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&JSApp::Quit, base::Unretained(js_app))) 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci .Build(); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci data->SetObjectTemplate(&g_wrapper_info, templ); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return templ->NewInstance(); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace apps 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace mojo 48