diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-c30a6232df03e1efbd9f3b226777b07e087a1122.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc | 96 |
1 files changed, 32 insertions, 64 deletions
diff --git a/chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc b/chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc index e6dafd1b7e8..0c67bba174b 100644 --- a/chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc +++ b/chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" #include "base/test/null_task_runner.h" +#include "base/test/scoped_feature_list.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/interfaces/bindings/tests/sample_service.mojom-blink.h" #include "testing/gtest/include/gtest/gtest.h" @@ -11,6 +12,7 @@ #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_observer_list.h" +#include "third_party/blink/renderer/platform/mojo/features.h" #include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h" namespace blink { @@ -39,7 +41,7 @@ class MockContext final : public GarbageCollected<MockContext>, }); } - void Trace(Visitor* visitor) override { + void Trace(Visitor* visitor) const override { visitor->Trace(observers_); ContextLifecycleNotifier::Trace(visitor); } @@ -74,44 +76,12 @@ class RemoteOwner : public GarbageCollected<RemoteOwner<Mode>> { HeapMojoRemote<sample::blink::Service, Mode>& remote() { return remote_; } - void Trace(Visitor* visitor) { visitor->Trace(remote_); } + void Trace(Visitor* visitor) const { visitor->Trace(remote_); } HeapMojoRemote<sample::blink::Service, Mode> remote_; }; template <HeapMojoWrapperMode Mode> -class HeapMojoRemoteGCBaseTest : public TestSupportingGC { - public: - base::RunLoop& run_loop() { return run_loop_; } - bool& disconnected() { return disconnected_; } - - void ClearOwner() { owner_ = nullptr; } - - protected: - void SetUp() override { - CHECK(!disconnected_); - context_ = MakeGarbageCollected<MockContext>(); - owner_ = MakeGarbageCollected<RemoteOwner<Mode>>(context_); - scoped_refptr<base::NullTaskRunner> null_task_runner = - base::MakeRefCounted<base::NullTaskRunner>(); - impl_.receiver().Bind( - owner_->remote().BindNewPipeAndPassReceiver(null_task_runner)); - impl_.receiver().set_disconnect_handler(WTF::Bind( - [](HeapMojoRemoteGCBaseTest* remote_test) { - remote_test->run_loop().Quit(); - remote_test->disconnected() = true; - }, - WTF::Unretained(this))); - } - - ServiceImpl impl_; - Persistent<MockContext> context_; - Persistent<RemoteOwner<Mode>> owner_; - base::RunLoop run_loop_; - bool disconnected_ = false; -}; - -template <HeapMojoWrapperMode Mode> class HeapMojoRemoteDestroyContextBaseTest : public TestSupportingGC { protected: void SetUp() override { @@ -180,52 +150,27 @@ class HeapMojoRemoteMoveBaseTest : public TestSupportingGC { } // namespace -class HeapMojoRemoteGCWithContextObserverTest - : public HeapMojoRemoteGCBaseTest< - HeapMojoWrapperMode::kWithContextObserver> {}; -class HeapMojoRemoteGCWithoutContextObserverTest - : public HeapMojoRemoteGCBaseTest< - HeapMojoWrapperMode::kWithoutContextObserver> {}; class HeapMojoRemoteDestroyContextWithContextObserverTest : public HeapMojoRemoteDestroyContextBaseTest< HeapMojoWrapperMode::kWithContextObserver> {}; class HeapMojoRemoteDestroyContextWithoutContextObserverTest : public HeapMojoRemoteDestroyContextBaseTest< HeapMojoWrapperMode::kWithoutContextObserver> {}; +class HeapMojoRemoteDestroyContextForceWithoutContextObserverTest + : public HeapMojoRemoteDestroyContextBaseTest< + HeapMojoWrapperMode::kForceWithoutContextObserver> {}; class HeapMojoRemoteDisconnectWithReasonHandlerWithContextObserverTest : public HeapMojoRemoteDisconnectWithReasonHandlerBaseTest< HeapMojoWrapperMode::kWithContextObserver> {}; class HeapMojoRemoteDisconnectWithReasonHandlerWithoutContextObserverTest : public HeapMojoRemoteDisconnectWithReasonHandlerBaseTest< - HeapMojoWrapperMode::kWithoutContextObserver> {}; + HeapMojoWrapperMode::kForceWithoutContextObserver> {}; class HeapMojoRemoteMoveWithContextObserverTest : public HeapMojoRemoteMoveBaseTest< HeapMojoWrapperMode::kWithContextObserver> {}; class HeapMojoRemoteMoveWithoutContextObserverTest : public HeapMojoRemoteMoveBaseTest< - HeapMojoWrapperMode::kWithoutContextObserver> {}; - -// Make HeapMojoRemote with context observer garbage collected and check that -// the connection is disconnected right after the marking phase. -TEST_F(HeapMojoRemoteGCWithContextObserverTest, ResetsOnGC) { - ClearOwner(); - EXPECT_FALSE(disconnected()); - PreciselyCollectGarbage(); - run_loop().Run(); - EXPECT_TRUE(disconnected()); - CompleteSweepingIfNeeded(); -} - -// Make HeapMojoRemote without context observer garbage collected and check that -// the connection is disconnected right after the marking phase. -TEST_F(HeapMojoRemoteGCWithoutContextObserverTest, ResetsOnGC) { - ClearOwner(); - EXPECT_FALSE(disconnected()); - PreciselyCollectGarbage(); - run_loop().Run(); - EXPECT_TRUE(disconnected()); - CompleteSweepingIfNeeded(); -} + HeapMojoWrapperMode::kForceWithoutContextObserver> {}; // Destroy the context with context observer and check that the connection is // disconnected. @@ -237,8 +182,31 @@ TEST_F(HeapMojoRemoteDestroyContextWithContextObserverTest, } // Destroy the context without context observer and check that the connection is +// disconnected. +TEST_F(HeapMojoRemoteDestroyContextWithoutContextObserverTest, + ResetsOnContextDestroyedWhenFinchEnabled) { + base::test::ScopedFeatureList feature_list; + feature_list.InitWithFeaturesAndParameters( + {{kHeapMojoUseContextObserver, {}}}, {}); + EXPECT_TRUE(owner_->remote().is_bound()); + context_->NotifyContextDestroyed(); + EXPECT_FALSE(owner_->remote().is_bound()); +} + +// Destroy the context without context observer and check that the connection is // still connected. TEST_F(HeapMojoRemoteDestroyContextWithoutContextObserverTest, + ResetsOnContextDestroyedWhenFinchDisabled) { + base::test::ScopedFeatureList feature_list; + feature_list.InitWithFeaturesAndParameters({}, {kHeapMojoUseContextObserver}); + EXPECT_TRUE(owner_->remote().is_bound()); + context_->NotifyContextDestroyed(); + EXPECT_TRUE(owner_->remote().is_bound()); +} + +// Destroy the context without context observer and check that the connection is +// still connected. +TEST_F(HeapMojoRemoteDestroyContextForceWithoutContextObserverTest, ResetsOnContextDestroyed) { EXPECT_TRUE(owner_->remote().is_bound()); context_->NotifyContextDestroyed(); |