blob: 606c11b207fc8c2c86ff76cba68da35f0eb08cfd [file] [log] [blame]
// Copyright 2016 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.
#ifndef BindForMojo_h
#define BindForMojo_h
#include "base/bind.h"
#include "mojo/public/cpp/bindings/callback.h"
// This file provides limited access to base::Bind() function. base::Bind()
// could be dangerous if it's used across threads, so we don't want to allow
// general use of base::Bind().
// See also "platform/ThreadSafeFunctional.h".
namespace blink {
// Binds an instance of a class to its member function. Does not bind anything
// else.
template <typename Class, typename ReturnType, typename... Args>
mojo::Callback<ReturnType(Args...)>
sameThreadBindForMojo(ReturnType (Class::*method)(Args...), Class* instance)
{
return base::Bind(method, base::Unretained(instance));
}
} // namespace blink
#endif // BindForMojo_h