| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "modules/fetch/DataConsumerHandleUtil.h" |
| |
| #include "modules/fetch/DataConsumerHandleTestUtil.h" |
| |
| namespace blink { |
| |
| namespace { |
| |
| const WebDataConsumerHandle::Result kShouldWait = WebDataConsumerHandle::ShouldWait; |
| const WebDataConsumerHandle::Result kDone = WebDataConsumerHandle::Done; |
| const WebDataConsumerHandle::Result kUnexpectedError = WebDataConsumerHandle::UnexpectedError; |
| const WebDataConsumerHandle::Flags kNone = WebDataConsumerHandle::FlagNone; |
| |
| TEST(DataConsumerHandleUtilTest, CreateWaitingHandle) |
| { |
| char buffer[20]; |
| const void* p = nullptr; |
| size_t size = 0; |
| OwnPtr<WebDataConsumerHandle> handle = createWaitingDataConsumerHandle(); |
| OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr); |
| |
| EXPECT_EQ(kShouldWait, reader->read(buffer, sizeof(buffer), kNone, &size)); |
| EXPECT_EQ(kShouldWait, reader->beginRead(&p, kNone, &size)); |
| EXPECT_EQ(kUnexpectedError, reader->endRead(99)); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, WaitingHandleNoNotification) |
| { |
| RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); |
| // Test this function doesn't crash. |
| test->run(createWaitingDataConsumerHandle()); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, CreateDoneHandle) |
| { |
| char buffer[20]; |
| const void* p = nullptr; |
| size_t size = 0; |
| OwnPtr<WebDataConsumerHandle> handle = createDoneDataConsumerHandle(); |
| OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr); |
| |
| EXPECT_EQ(kDone, reader->read(buffer, sizeof(buffer), kNone, &size)); |
| EXPECT_EQ(kDone, reader->beginRead(&p, kNone, &size)); |
| EXPECT_EQ(kUnexpectedError, reader->endRead(99)); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, DoneHandleNotification) |
| { |
| RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNotificationTest::create(); |
| // Test this function returns. |
| test->run(createDoneDataConsumerHandle()); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, DoneHandleNoNotification) |
| { |
| RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); |
| // Test this function doesn't crash. |
| test->run(createDoneDataConsumerHandle()); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, CreateUnexpectedErrorHandle) |
| { |
| char buffer[20]; |
| const void* p = nullptr; |
| size_t size = 0; |
| OwnPtr<WebDataConsumerHandle> handle = createUnexpectedErrorDataConsumerHandle(); |
| OwnPtr<WebDataConsumerHandle::Reader> reader = handle->obtainReader(nullptr); |
| |
| EXPECT_EQ(kUnexpectedError, reader->read(buffer, sizeof(buffer), kNone, &size)); |
| EXPECT_EQ(kUnexpectedError, reader->beginRead(&p, kNone, &size)); |
| EXPECT_EQ(kUnexpectedError, reader->endRead(99)); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, UnexpectedErrorHandleNotification) |
| { |
| RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNotificationTest::create(); |
| // Test this function returns. |
| test->run(createUnexpectedErrorDataConsumerHandle()); |
| } |
| |
| TEST(DataConsumerHandleUtilTest, UnexpectedErrorHandleNoNotification) |
| { |
| RefPtr<DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest> test = DataConsumerHandleTestUtil::ThreadingHandleNoNotificationTest::create(); |
| // Test this function doesn't crash. |
| test->run(createUnexpectedErrorDataConsumerHandle()); |
| } |
| |
| } // namespace |
| |
| } // namespace blink |