#include "third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h"
#include "base/memory/raw_ptr.h"
#include "base/test/null_task_runner.h"
#include "base/test/scoped_feature_list.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "mojo/public/interfaces/bindings/tests/sample_service.mojom-blink.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/platform/context_lifecycle_notifier.h"
#include "third_party/blink/renderer/platform/heap/heap_test_utilities.h"
#include "third_party/blink/renderer/platform/heap/persistent.h"
#include "third_party/blink/renderer/platform/heap/prefinalizer.h"
#include "third_party/blink/renderer/platform/heap_observer_set.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
#include "third_party/blink/renderer/platform/mojo/mojo_binding_context.h"
#include "third_party/blink/renderer/platform/testing/mock_context_lifecycle_notifier.h"
#include "third_party/blink/renderer/platform/wtf/functional.h"
namespace blink {
namespace {
template <HeapMojoWrapperMode Mode>
class HeapMojoReceiverGCBaseTest;
template <HeapMojoWrapperMode Mode>
class ReceiverOwner : public GarbageCollected<ReceiverOwner<Mode>>,
public sample::blink::Service { … };
template <HeapMojoWrapperMode Mode>
class HeapMojoReceiverGCBaseTest : public TestSupportingGC { … };
template <HeapMojoWrapperMode Mode>
class HeapMojoReceiverDisconnectWithReasonHandlerBaseTest
: public HeapMojoReceiverGCBaseTest<Mode> { … };
template <HeapMojoWrapperMode Mode>
class HeapMojoReceiverDestroyContextBaseTest : public TestSupportingGC { … };
}
class HeapMojoReceiverGCWithContextObserverTest
: public HeapMojoReceiverGCBaseTest<
HeapMojoWrapperMode::kWithContextObserver> { … };
class HeapMojoReceiverGCWithoutContextObserverTest
: public HeapMojoReceiverGCBaseTest<
HeapMojoWrapperMode::kForceWithoutContextObserver> { … };
class HeapMojoReceiverDestroyContextWithContextObserverTest
: public HeapMojoReceiverDestroyContextBaseTest<
HeapMojoWrapperMode::kWithContextObserver> { … };
class HeapMojoReceiverDestroyContextForceWithoutContextObserverTest
: public HeapMojoReceiverDestroyContextBaseTest<
HeapMojoWrapperMode::kForceWithoutContextObserver> { … };
class HeapMojoReceiverDisconnectWithReasonHandlerWithContextObserverTest
: public HeapMojoReceiverDisconnectWithReasonHandlerBaseTest<
HeapMojoWrapperMode::kWithContextObserver> { … };
class HeapMojoReceiverDisconnectWithReasonHandlerWithoutContextObserverTest
: public HeapMojoReceiverDisconnectWithReasonHandlerBaseTest<
HeapMojoWrapperMode::kForceWithoutContextObserver> { … };
TEST_F(HeapMojoReceiverGCWithContextObserverTest, ResetsOnGC) { … }
TEST_F(HeapMojoReceiverGCWithContextObserverTest, NoResetOnConservativeGC) { … }
TEST_F(HeapMojoReceiverGCWithoutContextObserverTest, ResetsOnGC) { … }
TEST_F(HeapMojoReceiverDestroyContextWithContextObserverTest,
ResetsOnContextDestroyed) { … }
TEST_F(HeapMojoReceiverDestroyContextForceWithoutContextObserverTest,
ResetsOnContextDestroyed) { … }
TEST_F(HeapMojoReceiverDisconnectWithReasonHandlerWithContextObserverTest,
ResetWithReason) { … }
TEST_F(HeapMojoReceiverDisconnectWithReasonHandlerWithoutContextObserverTest,
ResetWithReason) { … }
}