// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_WEB_PUBLIC_THREAD_WEB_TASK_TRAITS_H_
#define IOS_WEB_PUBLIC_THREAD_WEB_TASK_TRAITS_H_
#include "base/task/task_traits.h"
#include "ios/web/public/thread/web_thread.h"
namespace web {
class WebTaskTraits : public base::TaskTraits {
public:
struct ValidTrait : public base::TaskTraits::ValidTrait {
// TODO(crbug.com/40217644): iOS never supported TaskPriority, but some
// callers are providing it... Add support?
ValidTrait(base::TaskPriority);
// TODO(crbug.com/40108370): These traits are meaningless on WebThreads but
// some callers of post_task.h had been using them in conjunction with
// WebThread::ID traits. Remove such usage post-migration.
ValidTrait(base::MayBlock);
ValidTrait(base::TaskShutdownBehavior);
};
template <class... ArgTypes>
requires base::trait_helpers::AreValidTraits<ValidTrait, ArgTypes...>
constexpr WebTaskTraits(ArgTypes... args) : base::TaskTraits(args...) {}
};
} // namespace web
#endif // IOS_WEB_PUBLIC_THREAD_WEB_TASK_TRAITS_H_