blob: 8adb0cc2453e88795b97c63cc18c62b0b1963262 [file] [log] [blame]
// Copyright 2017 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 "components/cronet/native/runnables.h"
#include <utility>
namespace cronet {
OnceClosureRunnable::OnceClosureRunnable(base::OnceClosure task)
: task_(std::move(task)) {}
OnceClosureRunnable::~OnceClosureRunnable() = default;
void OnceClosureRunnable::Run() {
std::move(task_).Run();
// Runnable destroys itself after execution.
// TODO(https://crbug.com/812334):
// If an executor (which is implemented by a client)
// decides to stop processing runnables, the runnables will never
// be deleted causing a memory leak.
// This issue should be addressed.
delete this;
}
} // namespace cronet