|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
|
2 // 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 |
|
7 #include "base/logging.h" |
|
8 |
|
9 namespace base { |
|
10 namespace internal { |
|
11 |
|
12 bool CallbackBase::is_null() const { |
|
13 return bind_state_.get() == NULL; |
|
14 } |
|
15 |
|
16 void CallbackBase::Reset() { |
|
17 polymorphic_invoke_ = NULL; |
|
18 // 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; |
|
21 } |
|
22 |
|
23 bool CallbackBase::Equals(const CallbackBase& other) const { |
|
24 return bind_state_.get() == other.bind_state_.get() && |
|
25 polymorphic_invoke_ == other.polymorphic_invoke_; |
|
26 } |
|
27 |
|
28 CallbackBase::CallbackBase(BindStateBase* bind_state) |
|
29 : bind_state_(bind_state), |
|
30 polymorphic_invoke_(NULL) { |
|
31 DCHECK(!bind_state_.get() || bind_state_->HasOneRef()); |
|
32 } |
|
33 |
|
34 CallbackBase::~CallbackBase() { |
|
35 } |
|
36 |
|
37 } // namespace internal |
|
38 } // namespace base |