forked from mirrors/gecko-dev
		
	 0e041b91bd
			
		
	
	
		0e041b91bd
		
	
	
	
	
		
			
			This commit does: - Sync files under security/sandbox/chromium/ with Chromium 81.0.4044.138 - Update files under security/sandbox/chromium-shim/ - Apply patches under security/sandbox/chromium-shim/patches/with_update/ - Add mozilla::AddWin32kLockdownPolicy to apply MITIGATION_WIN32K_DISABLE before SUBSYS_WIN32K_LOCKDOWN Differential Revision: https://phabricator.services.mozilla.com/D79560
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (c) 2011 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 BASE_BIND_HELPERS_H_
 | |
| #define BASE_BIND_HELPERS_H_
 | |
| 
 | |
| #include <stddef.h>
 | |
| 
 | |
| #include <type_traits>
 | |
| #include <utility>
 | |
| 
 | |
| #include "base/bind.h"
 | |
| #include "base/callback.h"
 | |
| #include "base/memory/weak_ptr.h"
 | |
| #include "build/build_config.h"
 | |
| 
 | |
| // This defines a set of simple functions and utilities that people want when
 | |
| // using {Once,Repeating}Callback<> and Bind{Once,Repeating}().
 | |
| 
 | |
| namespace base {
 | |
| 
 | |
| // Creates a null callback.
 | |
| class BASE_EXPORT NullCallback {
 | |
|  public:
 | |
|   template <typename R, typename... Args>
 | |
|   operator RepeatingCallback<R(Args...)>() const {
 | |
|     return RepeatingCallback<R(Args...)>();
 | |
|   }
 | |
|   template <typename R, typename... Args>
 | |
|   operator OnceCallback<R(Args...)>() const {
 | |
|     return OnceCallback<R(Args...)>();
 | |
|   }
 | |
| };
 | |
| 
 | |
| // Creates a callback that does nothing when called.
 | |
| class BASE_EXPORT DoNothing {
 | |
|  public:
 | |
|   template <typename... Args>
 | |
|   operator RepeatingCallback<void(Args...)>() const {
 | |
|     return Repeatedly<Args...>();
 | |
|   }
 | |
|   template <typename... Args>
 | |
|   operator OnceCallback<void(Args...)>() const {
 | |
|     return Once<Args...>();
 | |
|   }
 | |
|   // Explicit way of specifying a specific callback type when the compiler can't
 | |
|   // deduce it.
 | |
|   template <typename... Args>
 | |
|   static RepeatingCallback<void(Args...)> Repeatedly() {
 | |
|     return BindRepeating([](Args... args) {});
 | |
|   }
 | |
|   template <typename... Args>
 | |
|   static OnceCallback<void(Args...)> Once() {
 | |
|     return BindOnce([](Args... args) {});
 | |
|   }
 | |
| };
 | |
| 
 | |
| // Useful for creating a Closure that will delete a pointer when invoked. Only
 | |
| // use this when necessary. In most cases MessageLoop::DeleteSoon() is a better
 | |
| // fit.
 | |
| template <typename T>
 | |
| void DeletePointer(T* obj) {
 | |
|   delete obj;
 | |
| }
 | |
| 
 | |
| }  // namespace base
 | |
| 
 | |
| #endif  // BASE_BIND_HELPERS_H_
 |