// Copyright 2015 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 "base/ios/callback_counter.h" CallbackCounter::CallbackCounter(const FinalCallback& final_callback) : callback_count_(0U), final_callback_(final_callback) { DCHECK(!final_callback.is_null()); } CallbackCounter::~CallbackCounter() { DCHECK_EQ(0U, callback_count_); } void CallbackCounter::IncrementCount(int count) { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!final_callback_.is_null()); callback_count_ += count; } void CallbackCounter::IncrementCount() { IncrementCount(1); } void CallbackCounter::DecrementCount() { DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(callback_count_); --callback_count_; if (callback_count_ == 0) { final_callback_.Run(); final_callback_.Reset(); } }