Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(841)

Unified Diff: third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp

Issue 2141383002: [Fetch API] Remove HandleScope to protect local handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp ('k') | third_party/WebKit/Source/modules/fetch/FetchManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698