blob: 5acade0ccb8da5d11ff9fe2953d4762f377c37d3 [file] [log] [blame]
[email protected]0f450362012-06-09 02:11:011// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]59eff912011-02-18 23:29:312// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/callback_internal.h"
6
[email protected]e24f8762011-12-20 00:10:047#include "base/logging.h"
8
[email protected]59eff912011-02-18 23:29:319namespace base {
10namespace internal {
11
12bool CallbackBase::is_null() const {
[email protected]7296f2762011-11-21 19:23:4413 return bind_state_.get() == NULL;
[email protected]59eff912011-02-18 23:29:3114}
15
16void CallbackBase::Reset() {
[email protected]59eff912011-02-18 23:29:3117 polymorphic_invoke_ = NULL;
[email protected]31d926652012-06-13 23:15:1618 // NULL the bind_state_ last, since it may be holding the last ref to whatever
19 // object owns us, and we may be deleted after that.
20 bind_state_ = NULL;
[email protected]59eff912011-02-18 23:29:3121}
22
23bool CallbackBase::Equals(const CallbackBase& other) const {
[email protected]7296f2762011-11-21 19:23:4424 return bind_state_.get() == other.bind_state_.get() &&
[email protected]59eff912011-02-18 23:29:3125 polymorphic_invoke_ == other.polymorphic_invoke_;
26}
27
[email protected]e24f8762011-12-20 00:10:0428CallbackBase::CallbackBase(BindStateBase* bind_state)
29 : bind_state_(bind_state),
30 polymorphic_invoke_(NULL) {
[email protected]3703e922013-05-31 21:37:5331 DCHECK(!bind_state_.get() || bind_state_->HasOneRef());
[email protected]59eff912011-02-18 23:29:3132}
33
34CallbackBase::~CallbackBase() {
35}
36
[email protected]59eff912011-02-18 23:29:3137} // namespace internal
[email protected]0f450362012-06-09 02:11:0138} // namespace base