1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Copyright 2013 The Chromium Authors. All rights reserved. 2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Use of this source code is governed by a BSD-style license that can be 3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// found in the LICENSE file. 4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "mojo/edk/js/threading.h" 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "base/message_loop/message_loop.h" 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "gin/object_template_builder.h" 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "gin/per_isolate_data.h" 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "mojo/edk/js/handle.h" 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace mojo { 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace edk { 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace js { 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace { 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid Quit() { 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez base::MessageLoop::current()->QuitNow(); 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezgin::WrapperInfo g_wrapper_info = { gin::kEmbedderNativeGin }; 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezconst char Threading::kModuleName[] = "mojo/public/js/threading"; 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezv8::Local<v8::Value> Threading::GetModule(v8::Isolate* isolate) { 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez gin::PerIsolateData* data = gin::PerIsolateData::From(isolate); 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez v8::Local<v8::ObjectTemplate> templ = data->GetObjectTemplate( 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez &g_wrapper_info); 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if (templ.IsEmpty()) { 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez templ = gin::ObjectTemplateBuilder(isolate) 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .SetMethod("quit", Quit) 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .Build(); 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez data->SetObjectTemplate(&g_wrapper_info, templ); 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez } 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return templ->NewInstance(); 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezThreading::Threading() { 45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace js 48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace edk 49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace mojo 50