1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/test/gc.h" 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/bind.h" 8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/logging.h" 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/arguments.h" 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/converter.h" 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/function_template.h" 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/object_template_builder.h" 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/per_isolate_data.h" 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/public/wrapper_info.h" 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "gin/wrappable.h" 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace gin { 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace { 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochWrapperInfo g_wrapper_info = { kEmbedderNativeGin }; 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochconst char GC::kModuleName[] = "gc"; 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochv8::Local<v8::Value> GC::GetModule(v8::Isolate* isolate) { 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch PerIsolateData* data = PerIsolateData::From(isolate); 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch v8::Local<v8::ObjectTemplate> templ = 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch data->GetObjectTemplate(&g_wrapper_info); 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (templ.IsEmpty()) { 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch templ = ObjectTemplateBuilder(isolate) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) .SetMethod("collectGarbage", 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&v8::Isolate::LowMemoryNotification, 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Unretained(isolate))) 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch .Build(); 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch data->SetObjectTemplate(&g_wrapper_info, templ); 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return templ->NewInstance(); 39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace gin 42