Home | History | Annotate | Download | only in modules
      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 "gin/modules/console.h"
      6 
      7 #include <iostream>
      8 
      9 #include "base/strings/string_util.h"
     10 #include "gin/arguments.h"
     11 #include "gin/converter.h"
     12 #include "gin/object_template_builder.h"
     13 #include "gin/per_isolate_data.h"
     14 #include "gin/public/wrapper_info.h"
     15 
     16 using v8::ObjectTemplate;
     17 
     18 namespace gin {
     19 
     20 namespace {
     21 
     22 void Log(Arguments* args) {
     23   std::vector<std::string> messages;
     24   if (!args->GetRemaining(&messages)) {
     25     args->ThrowError();
     26     return;
     27   }
     28   std::cout << JoinString(messages, ' ') << std::endl;
     29 }
     30 
     31 WrapperInfo g_wrapper_info = { kEmbedderNativeGin };
     32 
     33 }  // namespace
     34 
     35 const char Console::kModuleName[] = "console";
     36 
     37 v8::Local<v8::Value> Console::GetModule(v8::Isolate* isolate) {
     38   PerIsolateData* data = PerIsolateData::From(isolate);
     39   v8::Local<ObjectTemplate> templ = data->GetObjectTemplate(&g_wrapper_info);
     40   if (templ.IsEmpty()) {
     41     templ = ObjectTemplateBuilder(isolate)
     42         .SetMethod("log", Log)
     43         .Build();
     44     data->SetObjectTemplate(&g_wrapper_info, templ);
     45   }
     46   return templ->NewInstance();
     47 }
     48 
     49 }  // namespace gin
     50