#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_CROSS_THREAD_HANDLE_INTERNAL_H_
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_CROSS_THREAD_HANDLE_INTERNAL_H_
#include "base/functional/bind.h"
#include "base/threading/platform_thread.h"
#include "third_party/blink/renderer/platform/heap/heap_buildflags.h"
#include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h"
#include "v8/include/cppgc/cross-thread-persistent.h"
#include "v8/include/cppgc/source-location.h"
#if BUILDFLAG(VERBOSE_PERSISTENT)
#define CROSS_THREAD_HANDLE_LOCATION_FROM_HERE …
#else
#define CROSS_THREAD_HANDLE_LOCATION_FROM_HERE …
#endif
namespace blink {
template <typename T, typename WeaknessPolicy>
class BasicUnwrappingCrossThreadHandle;
CrossThreadHandleLocation;
namespace internal {
struct StrongCrossThreadHandleWeaknessPolicy { … };
struct WeakCrossThreadHandleWeaknessPolicy { … };
template <typename T, typename WeaknessPolicy>
class BasicCrossThreadHandle { … };
template <typename T, typename WeaknessPolicy>
class BasicUnwrappingCrossThreadHandle final
: public BasicCrossThreadHandle<T, WeaknessPolicy> { … };
}
}
namespace WTF {
CrossThreadCopier<blink::internal::BasicCrossThreadHandle<T, WeaknessPolicy>>;
CrossThreadCopier<blink::internal::BasicUnwrappingCrossThreadHandle<T, WeaknessPolicy>>;
}
namespace base {
IsWeakReceiver<blink::internal::BasicUnwrappingCrossThreadHandle<T, blink::internal::WeakCrossThreadHandleWeaknessPolicy>>;
BindUnwrapTraits<blink::internal::BasicUnwrappingCrossThreadHandle<T, WeaknessPolicy>>;
MaybeValidTraits<blink::internal::BasicCrossThreadHandle<T, WeaknessPolicy>>;
MaybeValidTraits<blink::internal::BasicUnwrappingCrossThreadHandle<T, WeaknessPolicy>>;
}
#endif