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

Unified Diff: base/critical_closure_ios.mm

Issue 257003007: Introduce a new framework for back-and-forth tracked/protected preferences migration. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix ios compile for realz?! Created 6 years, 8 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
Index: base/critical_closure_ios.mm
diff --git a/base/critical_closure_ios.mm b/base/critical_closure_ios.mm
index d605cad0a20a5baf076672f07dd4427f43222220..9e537dc37fb2fa365ee910fa78d4e5199ab940b6 100644
--- a/base/critical_closure_ios.mm
+++ b/base/critical_closure_ios.mm
@@ -8,29 +8,27 @@
#include "base/bind.h"
#include "base/ios/scoped_critical_action.h"
-#include "base/memory/ref_counted.h"
namespace {
// This class wraps a closure so it can continue to run for a period of time
// when the application goes to the background by using
// |base::ios::ScopedCriticalAction|.
-class CriticalClosure : public base::RefCountedThreadSafe<CriticalClosure> {
+template <typename R>
+class CriticalClosure {
public:
- explicit CriticalClosure(base::Closure* closure) : closure_(closure) {
- }
+ explicit CriticalClosure(const base::Callback<R(void)>& closure)
+ : closure_(closure) {}
+
+ ~CriticalClosure() {}
void Run() {
- closure_->Run();
+ closure_.Run();
}
private:
- friend class base::RefCountedThreadSafe<CriticalClosure>;
-
- virtual ~CriticalClosure() {}
-
- base::ios::ScopedCriticalAction criticial_action_;
- scoped_ptr<base::Closure> closure_;
+ base::ios::ScopedCriticalAction critical_action_;
+ base::Callback<R(void)> closure_;
DISALLOW_COPY_AND_ASSIGN(CriticalClosure);
};
@@ -39,11 +37,11 @@ class CriticalClosure : public base::RefCountedThreadSafe<CriticalClosure> {
namespace base {
-base::Closure MakeCriticalClosure(const base::Closure& closure) {
+template <typename R>
+Callback<R(void)> MakeCriticalClosure(const Callback<R(void)>& closure) {
DCHECK([[UIDevice currentDevice] isMultitaskingSupported]);
- scoped_refptr<CriticalClosure> critical_closure(
- new CriticalClosure(new base::Closure(closure)));
- return base::Bind(&CriticalClosure::Run, critical_closure.get());
+ return base::Bind(&CriticalClosure<R>::Run,
+ Owned(new CriticalClosure<R>(closure)));
}
} // namespace base

Powered by Google App Engine
This is Rietveld 408576698