Chromium Code Reviews| Index: content/child/resource_dispatcher_unittest.cc |
| diff --git a/content/child/resource_dispatcher_unittest.cc b/content/child/resource_dispatcher_unittest.cc |
| index 07fbecfbb4d8108ebffd283dc04265f4245e3464..51a5b1aea8563cfa0dfa286ae5b67993bebe0367 100644 |
| --- a/content/child/resource_dispatcher_unittest.cc |
| +++ b/content/child/resource_dispatcher_unittest.cc |
| @@ -13,6 +13,7 @@ |
| #include <utility> |
| #include <vector> |
| +#include "base/feature_list.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/memory/shared_memory.h" |
| @@ -30,6 +31,7 @@ |
| #include "content/public/child/fixed_received_data.h" |
| #include "content/public/child/request_peer.h" |
| #include "content/public/child/resource_dispatcher_delegate.h" |
| +#include "content/public/common/content_features.cc" |
|
kinuko
2016/07/11 02:35:25
content_features.h ?
Adam Rice
2016/07/11 05:16:36
Sorry. Fixed.
|
| #include "content/public/common/resource_response.h" |
| #include "net/base/net_errors.h" |
| #include "net/http/http_response_headers.h" |
| @@ -275,11 +277,19 @@ class ResourceDispatcherTest : public testing::Test, public IPC::Sender { |
| memcpy(shared_memory_map_[request_id]->memory(), data.c_str(), |
| data.length()); |
| + EXPECT_TRUE(dispatcher_->OnMessageReceived(ResourceMsg_DataReceived( |
| + request_id, 0, data.length(), data.length(), data.length()))); |
| + } |
| + |
| + void NotifyInlinedDataChunkReceived(int request_id, |
| + const std::vector<char>& data) { |
| + auto size = data.size(); |
| EXPECT_TRUE(dispatcher_->OnMessageReceived( |
| - ResourceMsg_DataReceived(request_id, 0, data.length(), data.length()))); |
| + ResourceMsg_InlinedDataChunkReceived(request_id, data, size, size))); |
| } |
| - void NotifyDataDownloaded(int request_id, int decoded_length, |
| + void NotifyDataDownloaded(int request_id, |
| + int decoded_length, |
| int encoded_length) { |
| EXPECT_TRUE(dispatcher_->OnMessageReceived(ResourceMsg_DataDownloaded( |
| request_id, decoded_length, encoded_length))); |
| @@ -369,6 +379,34 @@ TEST_F(ResourceDispatcherTest, RoundTrip) { |
| EXPECT_EQ(0u, queued_messages()); |
| } |
| +// A simple request with an inline data response. |
| +TEST_F(ResourceDispatcherTest, ResponseWithInlinedData) { |
| + auto feature_list = base::MakeUnique<base::FeatureList>(); |
| + feature_list->InitializeFromCommandLine( |
| + features::kOptimizeLoadingIPCForSmallResources.name, std::string()); |
| + base::FeatureList::SetInstance(std::move(feature_list)); |
| + std::unique_ptr<RequestInfo> request_info(CreateRequestInfo(false)); |
| + TestRequestPeer::Context peer_context; |
| + StartAsync(*request_info.get(), NULL, &peer_context); |
| + |
| + int id = ConsumeRequestResource(); |
| + EXPECT_EQ(0u, queued_messages()); |
| + |
| + NotifyReceivedResponse(id); |
| + EXPECT_EQ(0u, queued_messages()); |
| + EXPECT_TRUE(peer_context.received_response); |
| + |
| + std::vector<char> data(kTestPageContents, |
| + kTestPageContents + strlen(kTestPageContents)); |
| + NotifyInlinedDataChunkReceived(id, data); |
| + EXPECT_EQ(0u, queued_messages()); |
| + |
| + NotifyRequestComplete(id, strlen(kTestPageContents)); |
| + EXPECT_EQ(kTestPageContents, peer_context.data); |
| + EXPECT_TRUE(peer_context.complete); |
| + EXPECT_EQ(0u, queued_messages()); |
| +} |
| + |
| // Tests that the request IDs are straight when there are two interleaving |
| // requests. |
| TEST_F(ResourceDispatcherTest, MultipleRequests) { |