// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "extensions/renderer/messaging_bindings.h" #include #include "base/bind.h" #include "base/callback.h" #include "base/callback_helpers.h" #include "extensions/renderer/gc_callback.h" #include "extensions/renderer/script_context.h" #include "v8/include/v8-function-callback.h" #include "v8/include/v8-function.h" #include "v8/include/v8-object.h" namespace extensions { MessagingBindings::MessagingBindings(ScriptContext* context) : ObjectBackedNativeHandler(context) {} MessagingBindings::~MessagingBindings() {} void MessagingBindings::AddRoutes() { // TODO(fsamuel, kalman): Move BindToGC out of messaging natives. RouteHandlerFunction("BindToGC", base::BindRepeating(&MessagingBindings::BindToGC, base::Unretained(this))); } void MessagingBindings::BindToGC( const v8::FunctionCallbackInfo& args) { CHECK_EQ(2, args.Length()); CHECK(args[0]->IsObject()); CHECK(args[1]->IsFunction()); // Destroys itself when the object is GC'd or context is invalidated. new GCCallback(context(), args[0].As(), args[1].As(), base::OnceClosure()); } } // namespace extensions