Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: blimp/common/mandatory_callback.h

Issue 2626423004: Remove all //blimp code. (Closed)
Patch Set: One last(?) `git merge` for good measure. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/common/logging_unittest.cc ('k') | blimp/common/mandatory_callback_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/common/mandatory_callback.h
diff --git a/blimp/common/mandatory_callback.h b/blimp/common/mandatory_callback.h
deleted file mode 100644
index 022830936d28b9b215b65adc9c7e7e3499568627..0000000000000000000000000000000000000000
--- a/blimp/common/mandatory_callback.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// 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 BLIMP_COMMON_MANDATORY_CALLBACK_H_
-#define BLIMP_COMMON_MANDATORY_CALLBACK_H_
-
-#include <utility>
-
-#include "base/callback.h"
-#include "base/logging.h"
-
-namespace blimp {
-
-// Adds a leak-detection wrapper to base::Callback objects.
-//
-// When a wrapped Callback is destroyed without being Run first, the checker
-// will DCHECK-crash the program with a stack trace, so that developers can
-// pinpoint the site of the leak.
-//
-// The MandatoryCallback may be passed using std::move; leak detection occurs
-// when the MandatoryCallback is finally destroyed.
-//
-// Usage:
-// void DoStuff(int d) { ... }
-// ...
-// base::Closure my_callback = base::Bind(&DoStuff);
-// MandatoryCallback<void(int)> leak_checked_callback =
-// CreateMandatoryCallback(my_callback);
-//
-// Note that MandatoryCallbacks lack some functionality from
-// base::CallbackInternal.
-// * They can only be invoked once.
-// * They do not support parameter currying with additional Bind() calls.[1]
-// * They cannot be Reset().
-//
-// [1] Mandatory invocation support would need to be plumbed in to
-// base::CallbackInternal and base::Bind for this to work,
-// which is feasible but low-priority for the owners of the callback
-// libraries.
-
-template <typename SignatureType>
-class MandatoryCallback;
-
-// Template specialization for extracting the function signature data types.
-template <typename ReturnType, typename... ArgTypes>
-class MandatoryCallback<ReturnType(ArgTypes...)> {
- public:
- using CallbackType = base::Callback<ReturnType(ArgTypes...)>;
-
- explicit MandatoryCallback(const CallbackType& callback) : cb_(callback) {
- DCHECK(!cb_.is_null());
- }
-
- MandatoryCallback(MandatoryCallback&& other) {
- cb_ = other.cb_;
- other.cb_.Reset();
-
-#if DCHECK_IS_ON()
- was_run_ = other.was_run_;
- other.was_run_ = false;
-#endif
- }
-
- ~MandatoryCallback() {
-#if DCHECK_IS_ON()
- DCHECK(cb_.is_null() || was_run_);
-#endif
- }
-
- // This a overload that handles the case where there are no arguments provided
- template <typename...>
- ReturnType Run() {
- DCHECK(cb_); // Can't be run following std::move.
-
-#if DCHECK_IS_ON()
- DCHECK(!was_run_);
- was_run_ = true;
-#endif
-
- cb_.Run();
- }
-
- template <typename... RunArgs>
- ReturnType Run(RunArgs... args) {
- DCHECK(cb_); // Can't be run following std::move.
-
-#if DCHECK_IS_ON()
- DCHECK(!was_run_);
- was_run_ = true;
-#endif
-
- cb_.Run(std::forward<RunArgs...>(args...));
- }
-
- private:
- // Nulled after being moved.
- CallbackType cb_;
-
-#if DCHECK_IS_ON()
- bool was_run_ = false;
-#endif
-
- DISALLOW_COPY_AND_ASSIGN(MandatoryCallback);
-};
-
-// Creates a leak-checking proxy callback around |callback|.
-template <typename SignatureType>
-MandatoryCallback<SignatureType> CreateMandatoryCallback(
- const base::Callback<SignatureType>& callback) {
- return MandatoryCallback<SignatureType>(callback);
-}
-
-using MandatoryClosure = MandatoryCallback<void()>;
-
-} // namespace blimp
-
-#endif // BLIMP_COMMON_MANDATORY_CALLBACK_H_
« no previous file with comments | « blimp/common/logging_unittest.cc ('k') | blimp/common/mandatory_callback_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698