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