Commit c489e48a authored by Xida Chen's avatar Xida Chen Committed by Commit Bot

[Testing] Clean up CrossThreadStyleValueTest

This CL cleans up the CrossThreadStyleValueTest, which does proper
initialization for the WebThreadSupportingGC, and shut down the thread
at the end of the test, just like what we do in the
PaintWorkletStylePropertyMapTest.

Bug: 895579
Change-Id: I7cf93fe5a192cd221a7f9490982d1a104110a232
Reviewed-on: https://chromium-review.googlesource.com/c/1427605Reviewed-by: default avatarAnders Hartvoll Ruud <andruud@chromium.org>
Reviewed-by: default avatarXida Chen <xidachen@chromium.org>
Commit-Queue: Xida Chen <xidachen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625195}
parent 20361dad
......@@ -18,31 +18,55 @@ namespace blink {
class CrossThreadStyleValueTest : public testing::Test {
public:
static void CheckUnsupportedValue(
void ShutDown(WaitableEvent* waitable_event) {
DCHECK(!IsMainThread());
thread_->ShutdownOnThread();
waitable_event->Signal();
}
void ShutDownThread() {
WaitableEvent waitable_event;
thread_->PostTask(FROM_HERE,
CrossThreadBind(&CrossThreadStyleValueTest::ShutDown,
CrossThreadUnretained(this),
CrossThreadUnretained(&waitable_event)));
waitable_event.Wait();
}
void CheckUnsupportedValue(
WaitableEvent* waitable_event,
std::unique_ptr<CrossThreadUnsupportedValue> value) {
EXPECT_EQ(value->value_, "test");
DCHECK(!IsMainThread());
thread_->InitializeOnThread();
EXPECT_EQ(value->value_, "Unsupported");
waitable_event->Signal();
}
protected:
std::unique_ptr<WebThreadSupportingGC> thread_;
};
// Ensure that a CrossThreadUnsupportedValue can be safely passed cross
// threads.
TEST_F(CrossThreadStyleValueTest, PassUnsupportedValueCrossThread) {
std::unique_ptr<CrossThreadUnsupportedValue> value =
std::make_unique<CrossThreadUnsupportedValue>("test");
std::make_unique<CrossThreadUnsupportedValue>("Unsupported");
DCHECK(value);
// Use a WebThreadSupportingGC to emulate worklet thread.
std::unique_ptr<WebThreadSupportingGC> thread = WebThreadSupportingGC::Create(
thread_ = WebThreadSupportingGC::Create(
ThreadCreationParams(WebThreadType::kTestThread));
WaitableEvent waitable_event;
thread->PostTask(
thread_->PostTask(
FROM_HERE,
CrossThreadBind(&CrossThreadStyleValueTest::CheckUnsupportedValue,
CrossThreadUnretained(this),
CrossThreadUnretained(&waitable_event),
WTF::Passed(std::move(value))));
waitable_event.Wait();
ShutDownThread();
}
TEST_F(CrossThreadStyleValueTest, CrossThreadUnsupportedValueToCSSStyleValue) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment