Index: third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp |
diff --git a/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp b/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp |
index defd82911b3fe6b64db20566556e4df06363a7d3..a547d78976bec58a5d6a9cb8c06077c82309485e 100644 |
--- a/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp |
+++ b/third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp |
@@ -4,8 +4,8 @@ |
#include "modules/fetch/BodyStreamBuffer.h" |
+#include "bindings/core/v8/V8BindingForTesting.h" |
#include "core/html/FormData.h" |
-#include "core/testing/DummyPageHolder.h" |
#include "modules/fetch/DataConsumerHandleTestUtil.h" |
#include "modules/fetch/FetchBlobDataConsumerHandle.h" |
#include "modules/fetch/FetchFormDataConsumerHandle.h" |
@@ -40,40 +40,28 @@ public: |
}; |
class BodyStreamBufferTest : public ::testing::Test { |
-public: |
- BodyStreamBufferTest() |
- { |
- m_page = DummyPageHolder::create(IntSize(1, 1)); |
- } |
- ~BodyStreamBufferTest() override {} |
- |
protected: |
- ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->document().frame()); } |
- ExecutionContext* getExecutionContext() { return &m_page->document(); } |
- |
- std::unique_ptr<DummyPageHolder> m_page; |
- |
- ScriptValue eval(const char* s) |
+ ScriptValue eval(ScriptState* scriptState, const char* s) |
{ |
v8::Local<v8::String> source; |
v8::Local<v8::Script> script; |
- v8::MicrotasksScope microtasks(getScriptState()->isolate(), v8::MicrotasksScope::kDoNotRunMicrotasks); |
- if (!v8Call(v8::String::NewFromUtf8(getScriptState()->isolate(), s, v8::NewStringType::kNormal), source)) { |
+ v8::MicrotasksScope microtasks(scriptState->isolate(), v8::MicrotasksScope::kDoNotRunMicrotasks); |
+ if (!v8Call(v8::String::NewFromUtf8(scriptState->isolate(), s, v8::NewStringType::kNormal), source)) { |
ADD_FAILURE(); |
return ScriptValue(); |
} |
- if (!v8Call(v8::Script::Compile(getScriptState()->context(), source), script)) { |
+ if (!v8Call(v8::Script::Compile(scriptState->context(), source), script)) { |
ADD_FAILURE() << "Compilation fails"; |
return ScriptValue(); |
} |
- return ScriptValue(getScriptState(), script->Run(getScriptState()->context())); |
+ return ScriptValue(scriptState, script->Run(scriptState->context())); |
} |
- ScriptValue evalWithPrintingError(const char* s) |
+ ScriptValue evalWithPrintingError(ScriptState* scriptState, const char* s) |
{ |
- v8::TryCatch block(getScriptState()->isolate()); |
- ScriptValue r = eval(s); |
+ v8::TryCatch block(scriptState->isolate()); |
+ ScriptValue r = eval(scriptState, s); |
if (block.HasCaught()) { |
- ADD_FAILURE() << toCoreString(block.Exception()->ToString(getScriptState()->isolate())).utf8().data(); |
+ ADD_FAILURE() << toCoreString(block.Exception()->ToString(scriptState->isolate())).utf8().data(); |
block.ReThrow(); |
} |
return r; |
@@ -82,6 +70,7 @@ protected: |
TEST_F(BodyStreamBufferTest, Tee) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create(); |
MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create(); |
@@ -98,7 +87,7 @@ TEST_F(BodyStreamBufferTest, Tee) |
handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::Command::Data, "hello, ")); |
handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::Command::Data, "world")); |
handle->add(DataConsumerHandleTestUtil::Command(DataConsumerHandleTestUtil::Command::Done)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
BodyStreamBuffer* new1; |
BodyStreamBuffer* new2; |
@@ -121,8 +110,9 @@ TEST_F(BodyStreamBufferTest, Tee) |
TEST_F(BodyStreamBufferTest, TeeFromHandleMadeFromStream) |
{ |
- ScriptState::Scope scope(getScriptState()); |
+ V8TestingScope scope; |
ScriptValue stream = evalWithPrintingError( |
+ scope.getScriptState(), |
"stream = new ReadableStream({start: c => controller = c});" |
"controller.enqueue(new Uint8Array([0x41, 0x42]));" |
"controller.enqueue(new Uint8Array([0x55, 0x58]));" |
@@ -140,7 +130,7 @@ TEST_F(BodyStreamBufferTest, TeeFromHandleMadeFromStream) |
EXPECT_CALL(*client2, didFetchDataLoadedString(String("ABUX"))); |
EXPECT_CALL(checkpoint, Call(4)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), stream); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), stream); |
BodyStreamBuffer* new1; |
BodyStreamBuffer* new2; |
@@ -155,7 +145,7 @@ TEST_F(BodyStreamBufferTest, TeeFromHandleMadeFromStream) |
EXPECT_FALSE(buffer->isStreamDisturbed()); |
EXPECT_FALSE(buffer->hasPendingActivity()); |
- v8::MicrotasksScope::PerformCheckpoint(getScriptState()->isolate()); |
+ v8::MicrotasksScope::PerformCheckpoint(scope.getScriptState()->isolate()); |
EXPECT_TRUE(buffer->isStreamLocked()); |
EXPECT_TRUE(buffer->isStreamDisturbed()); |
@@ -174,11 +164,12 @@ TEST_F(BodyStreamBufferTest, TeeFromHandleMadeFromStream) |
TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) |
{ |
+ V8TestingScope scope; |
std::unique_ptr<BlobData> data = BlobData::create(); |
data->appendText("hello", false); |
auto size = data->length(); |
RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(std::move(data), size); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobDataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderFactory)); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), FetchBlobDataConsumerHandle::create(scope.getExecutionContext(), blobDataHandle, new FakeLoaderFactory)); |
EXPECT_FALSE(buffer->isStreamLocked()); |
EXPECT_FALSE(buffer->isStreamDisturbed()); |
@@ -193,9 +184,10 @@ TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) |
TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) |
{ |
+ V8TestingScope scope; |
// This handle is not drainable. |
std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWebHandle(createWaitingDataConsumerHandle()); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(handle)); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std::move(handle)); |
EXPECT_FALSE(buffer->isStreamLocked()); |
EXPECT_FALSE(buffer->isStreamDisturbed()); |
@@ -210,9 +202,9 @@ TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) |
TEST_F(BodyStreamBufferTest, DrainAsBlobFromBufferMadeFromBufferMadeFromStream) |
{ |
- ScriptState::Scope scope(getScriptState()); |
- ScriptValue stream = evalWithPrintingError("new ReadableStream()"); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), stream); |
+ V8TestingScope scope; |
+ ScriptValue stream = evalWithPrintingError(scope.getScriptState(), "new ReadableStream()"); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), stream); |
EXPECT_FALSE(buffer->hasPendingActivity()); |
EXPECT_FALSE(buffer->isStreamLocked()); |
@@ -229,12 +221,13 @@ TEST_F(BodyStreamBufferTest, DrainAsBlobFromBufferMadeFromBufferMadeFromStream) |
TEST_F(BodyStreamBufferTest, DrainAsFormData) |
{ |
+ V8TestingScope scope; |
FormData* data = FormData::create(UTF8Encoding()); |
data->append("name1", "value1"); |
data->append("name2", "value2"); |
RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchFormDataConsumerHandle::create(getExecutionContext(), inputFormData)); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), FetchFormDataConsumerHandle::create(scope.getExecutionContext(), inputFormData)); |
EXPECT_FALSE(buffer->isStreamLocked()); |
EXPECT_FALSE(buffer->isStreamDisturbed()); |
@@ -249,9 +242,10 @@ TEST_F(BodyStreamBufferTest, DrainAsFormData) |
TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) |
{ |
+ V8TestingScope scope; |
// This handle is not drainable. |
std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHandleFromWebHandle(createWaitingDataConsumerHandle()); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(handle)); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std::move(handle)); |
EXPECT_FALSE(buffer->isStreamLocked()); |
EXPECT_FALSE(buffer->isStreamDisturbed()); |
@@ -266,9 +260,9 @@ TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) |
TEST_F(BodyStreamBufferTest, DrainAsFormDataFromBufferMadeFromBufferMadeFromStream) |
{ |
- ScriptState::Scope scope(getScriptState()); |
- ScriptValue stream = evalWithPrintingError("new ReadableStream()"); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), stream); |
+ V8TestingScope scope; |
+ ScriptValue stream = evalWithPrintingError(scope.getScriptState(), "new ReadableStream()"); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), stream); |
EXPECT_FALSE(buffer->hasPendingActivity()); |
EXPECT_FALSE(buffer->isStreamLocked()); |
@@ -285,6 +279,7 @@ TEST_F(BodyStreamBufferTest, DrainAsFormDataFromBufferMadeFromBufferMadeFromStre |
TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
DOMArrayBuffer* arrayBuffer = nullptr; |
@@ -297,7 +292,7 @@ TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) |
std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
handle->add(Command(Command::Data, "hello")); |
handle->add(Command(Command::Done)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
buffer->startLoading(FetchDataLoader::createLoaderAsArrayBuffer(), client); |
EXPECT_TRUE(buffer->isStreamLocked()); |
@@ -317,6 +312,7 @@ TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) |
TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
RefPtr<BlobDataHandle> blobDataHandle; |
@@ -329,7 +325,7 @@ TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) |
std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
handle->add(Command(Command::Data, "hello")); |
handle->add(Command(Command::Done)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
buffer->startLoading(FetchDataLoader::createLoaderAsBlobHandle("text/plain"), client); |
EXPECT_TRUE(buffer->isStreamLocked()); |
@@ -348,6 +344,7 @@ TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) |
TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
@@ -359,7 +356,7 @@ TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) |
std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
handle->add(Command(Command::Data, "hello")); |
handle->add(Command(Command::Done)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
EXPECT_TRUE(buffer->isStreamLocked()); |
@@ -377,6 +374,7 @@ TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) |
TEST_F(BodyStreamBufferTest, LoadClosedHandle) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
@@ -385,7 +383,7 @@ TEST_F(BodyStreamBufferTest, LoadClosedHandle) |
EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); |
EXPECT_CALL(checkpoint, Call(2)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); |
EXPECT_TRUE(buffer->isStreamReadable()); |
testing::runPendingTasks(); |
@@ -411,6 +409,7 @@ TEST_F(BodyStreamBufferTest, LoadClosedHandle) |
TEST_F(BodyStreamBufferTest, LoadErroredHandle) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
@@ -419,7 +418,7 @@ TEST_F(BodyStreamBufferTest, LoadErroredHandle) |
EXPECT_CALL(*client, didFetchDataLoadFailed()); |
EXPECT_CALL(checkpoint, Call(2)); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); |
EXPECT_TRUE(buffer->isStreamReadable()); |
testing::runPendingTasks(); |
@@ -444,6 +443,7 @@ TEST_F(BodyStreamBufferTest, LoadErroredHandle) |
TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) |
{ |
+ V8TestingScope scope; |
Checkpoint checkpoint; |
MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); |
@@ -455,7 +455,7 @@ TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) |
std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); |
handle->add(Command(Command::Data, "hello")); |
handle->add(Command(Command::Done)); |
- Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
+ Persistent<BodyStreamBuffer> buffer = new BodyStreamBuffer(scope.getScriptState(), createFetchDataConsumerHandleFromWebHandle(std::move(handle))); |
buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); |
ThreadHeap::collectAllGarbage(); |
@@ -479,7 +479,7 @@ public: |
TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled) |
{ |
- ScriptState::Scope scope(getScriptState()); |
+ V8TestingScope scope; |
using MockHandle = MockFetchDataConsumerHandleWithMockDestructor; |
using MockReader = DataConsumerHandleTestUtil::MockFetchDataConsumerReader; |
std::unique_ptr<MockHandle> handle = MockHandle::create(); |
@@ -497,10 +497,10 @@ TEST_F(BodyStreamBufferTest, SourceHandleAndReaderShouldBeDestructedWhenCanceled |
// |reader| is adopted by |obtainReader|. |
ASSERT_TRUE(reader.release()); |
- BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move(handle)); |
+ BodyStreamBuffer* buffer = new BodyStreamBuffer(scope.getScriptState(), std::move(handle)); |
checkpoint.Call(1); |
- ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), "reason")); |
- buffer->cancelSource(getScriptState(), reason); |
+ ScriptValue reason(scope.getScriptState(), v8String(scope.getScriptState()->isolate(), "reason")); |
+ buffer->cancelSource(scope.getScriptState(), reason); |
checkpoint.Call(2); |
} |