chromium/third_party/blink/renderer/platform/scheduler/public/main_thread.h

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_MAIN_THREAD_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_MAIN_THREAD_H_

#include "base/task/single_thread_task_runner.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread.h"

namespace blink {

// This class restricts access to the `GetTaskRunner`. Only authorized callees
// are allowed. Before you add a restriction consider using a frame or worker
// based API instead.
class MainThreadTaskRunnerRestricted {};

class MainThreadTaskRunnerRestrictedForTesting
    : public MainThreadTaskRunnerRestricted {};

// The interface of a main thread in Blink.
//
// This class will has a restricted GetTaskRunner method.
//
class PLATFORM_EXPORT MainThread : public Thread {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_MAIN_THREAD_H_