1*6777b538SAndroid Build Coastguard Worker// Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker// found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker#import <UIKit/UIKit.h> 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker#include <string_view> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker#include "base/critical_closure.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Workernamespace base::internal { 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard WorkerImmediateCriticalClosure::ImmediateCriticalClosure(std::string_view task_name, 14*6777b538SAndroid Build Coastguard Worker OnceClosure closure) 15*6777b538SAndroid Build Coastguard Worker : critical_action_(task_name), closure_(std::move(closure)) { 16*6777b538SAndroid Build Coastguard Worker CHECK(!closure_.is_null()); 17*6777b538SAndroid Build Coastguard Worker} 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard WorkerImmediateCriticalClosure::~ImmediateCriticalClosure() {} 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Workervoid ImmediateCriticalClosure::Run() { 22*6777b538SAndroid Build Coastguard Worker CHECK(!closure_.is_null()); 23*6777b538SAndroid Build Coastguard Worker std::move(closure_).Run(); 24*6777b538SAndroid Build Coastguard Worker} 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard WorkerPendingCriticalClosure::PendingCriticalClosure(std::string_view task_name, 27*6777b538SAndroid Build Coastguard Worker OnceClosure closure) 28*6777b538SAndroid Build Coastguard Worker : task_name_(task_name), closure_(std::move(closure)) { 29*6777b538SAndroid Build Coastguard Worker CHECK(!closure_.is_null()); 30*6777b538SAndroid Build Coastguard Worker} 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard WorkerPendingCriticalClosure::~PendingCriticalClosure() {} 33*6777b538SAndroid Build Coastguard Worker 34*6777b538SAndroid Build Coastguard Workervoid PendingCriticalClosure::Run() { 35*6777b538SAndroid Build Coastguard Worker CHECK(!closure_.is_null()); 36*6777b538SAndroid Build Coastguard Worker critical_action_.emplace(task_name_); 37*6777b538SAndroid Build Coastguard Worker std::move(closure_).Run(); 38*6777b538SAndroid Build Coastguard Worker} 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker} // namespace base::internal 41