// 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.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(args.Length() == 3); CHECK(args[0]->IsObject()); CHECK(args[1]->IsFunction()); CHECK(args[2]->IsInt32()); // TODO(devlin): Update callers to not pass a port ID. // int js_port_id = args[2].As()->Value(); // 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