summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/third_party/blink/renderer/platform/mojo/heap_mojo_remote_test.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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.cc96
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();