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

Unified Diff: content/common/resource_dispatcher_unittest.cc

Issue 16328003: Move a bunch of child-only code from content/common to content/child (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 6 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
« no previous file with comments | « content/common/resource_dispatcher.cc ('k') | content/common/socket_stream_dispatcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/resource_dispatcher_unittest.cc
diff --git a/content/common/resource_dispatcher_unittest.cc b/content/common/resource_dispatcher_unittest.cc
deleted file mode 100644
index f00b89f8361f2e1a159404c7728da0516fb8becb..0000000000000000000000000000000000000000
--- a/content/common/resource_dispatcher_unittest.cc
+++ /dev/null
@@ -1,442 +0,0 @@
-// Copyright (c) 2012 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 <string>
-#include <vector>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop.h"
-#include "base/process.h"
-#include "base/process_util.h"
-#include "content/common/request_extra_data.h"
-#include "content/common/resource_dispatcher.h"
-#include "content/common/resource_messages.h"
-#include "content/public/common/resource_response.h"
-#include "net/base/net_errors.h"
-#include "net/base/upload_data.h"
-#include "net/http/http_response_headers.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/common/appcache/appcache_interfaces.h"
-
-using webkit_glue::ResourceLoaderBridge;
-using webkit_glue::ResourceResponseInfo;
-
-namespace content {
-
-static const char test_page_url[] = "http://www.google.com/";
-static const char test_page_headers[] =
- "HTTP/1.1 200 OK\nContent-Type:text/html\n\n";
-static const char test_page_mime_type[] = "text/html";
-static const char test_page_charset[] = "";
-static const char test_page_contents[] =
- "<html><head><title>Google</title></head><body><h1>Google</h1></body></html>";
-static const uint32 test_page_contents_len = arraysize(test_page_contents) - 1;
-
-static const char kShmemSegmentName[] = "DeferredResourceLoaderTest";
-
-// Listens for request response data and stores it so that it can be compared
-// to the reference data.
-class TestRequestCallback : public ResourceLoaderBridge::Peer {
- public:
- TestRequestCallback() : complete_(false) {
- }
-
- virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE {
- }
-
- virtual bool OnReceivedRedirect(
- const GURL& new_url,
- const ResourceResponseInfo& info,
- bool* has_new_first_party_for_cookies,
- GURL* new_first_party_for_cookies) OVERRIDE {
- *has_new_first_party_for_cookies = false;
- return true;
- }
-
- virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE {
- }
-
- virtual void OnDownloadedData(int len) OVERRIDE {
- }
-
- virtual void OnReceivedData(const char* data,
- int data_length,
- int encoded_data_length) OVERRIDE {
- EXPECT_FALSE(complete_);
- data_.append(data, data_length);
- total_encoded_data_length_ += encoded_data_length;
- }
-
- virtual void OnCompletedRequest(
- int error_code,
- bool was_ignored_by_handler,
- const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE {
- EXPECT_FALSE(complete_);
- complete_ = true;
- }
-
- bool complete() const {
- return complete_;
- }
- const std::string& data() const {
- return data_;
- }
- int total_encoded_data_length() const {
- return total_encoded_data_length_;
- }
-
- private:
- bool complete_;
- std::string data_;
- int total_encoded_data_length_;
-};
-
-
-// Sets up the message sender override for the unit test
-class ResourceDispatcherTest : public testing::Test, public IPC::Sender {
- public:
- // Emulates IPC send operations (IPC::Sender) by adding
- // pending messages to the queue.
- virtual bool Send(IPC::Message* msg) OVERRIDE {
- message_queue_.push_back(IPC::Message(*msg));
- delete msg;
- return true;
- }
-
- // Emulates the browser process and processes the pending IPC messages,
- // returning the hardcoded file contents.
- void ProcessMessages() {
- while (!message_queue_.empty()) {
- int request_id;
- ResourceHostMsg_Request request;
- ASSERT_TRUE(ResourceHostMsg_RequestResource::Read(
- &message_queue_[0], &request_id, &request));
-
- // check values
- EXPECT_EQ(test_page_url, request.url.spec());
-
- // received response message
- ResourceResponseHead response;
- std::string raw_headers(test_page_headers);
- std::replace(raw_headers.begin(), raw_headers.end(), '\n', '\0');
- response.headers = new net::HttpResponseHeaders(raw_headers);
- response.mime_type = test_page_mime_type;
- response.charset = test_page_charset;
- dispatcher_->OnReceivedResponse(request_id, response);
-
- // received data message with the test contents
- base::SharedMemory shared_mem;
- EXPECT_TRUE(shared_mem.CreateAndMapAnonymous(test_page_contents_len));
- char* put_data_here = static_cast<char*>(shared_mem.memory());
- memcpy(put_data_here, test_page_contents, test_page_contents_len);
- base::SharedMemoryHandle dup_handle;
- EXPECT_TRUE(shared_mem.GiveToProcess(
- base::Process::Current().handle(), &dup_handle));
- dispatcher_->OnSetDataBuffer(message_queue_[0], request_id, dup_handle,
- test_page_contents_len, 0);
- dispatcher_->OnReceivedData(message_queue_[0], request_id, 0,
- test_page_contents_len,
- test_page_contents_len);
-
- message_queue_.erase(message_queue_.begin());
-
- // read the ack message.
- Tuple1<int> request_ack;
- ASSERT_TRUE(ResourceHostMsg_DataReceived_ACK::Read(
- &message_queue_[0], &request_ack));
-
- ASSERT_EQ(request_ack.a, request_id);
-
- message_queue_.erase(message_queue_.begin());
- }
- }
-
- protected:
- // testing::Test
- virtual void SetUp() OVERRIDE {
- dispatcher_.reset(new ResourceDispatcher(this));
- }
- virtual void TearDown() OVERRIDE {
- dispatcher_.reset();
- }
-
- ResourceLoaderBridge* CreateBridge() {
- webkit_glue::ResourceLoaderBridge::RequestInfo request_info;
- request_info.method = "GET";
- request_info.url = GURL(test_page_url);
- request_info.first_party_for_cookies = GURL(test_page_url);
- request_info.referrer = GURL();
- request_info.headers = std::string();
- request_info.load_flags = 0;
- request_info.requestor_pid = 0;
- request_info.request_type = ResourceType::SUB_RESOURCE;
- request_info.appcache_host_id = appcache::kNoHostId;
- request_info.routing_id = 0;
- RequestExtraData extra_data(WebKit::WebReferrerPolicyDefault,
- WebKit::WebString(),
- true, 0, false, -1, true,
- PAGE_TRANSITION_LINK, -1, -1);
- request_info.extra_data = &extra_data;
-
- return dispatcher_->CreateBridge(request_info);
- }
-
- std::vector<IPC::Message> message_queue_;
- static scoped_ptr<ResourceDispatcher> dispatcher_;
-};
-
-/*static*/
-scoped_ptr<ResourceDispatcher> ResourceDispatcherTest::dispatcher_;
-
-// Does a simple request and tests that the correct data is received.
-TEST_F(ResourceDispatcherTest, RoundTrip) {
- TestRequestCallback callback;
- ResourceLoaderBridge* bridge = CreateBridge();
-
- bridge->Start(&callback);
-
- ProcessMessages();
-
- // FIXME(brettw) when the request complete messages are actually handledo
- // and dispatched, uncomment this.
- //EXPECT_TRUE(callback.complete());
- //EXPECT_STREQ(test_page_contents, callback.data().c_str());
- //EXPECT_EQ(test_page_contents_len, callback.total_encoded_data_length());
-
- delete bridge;
-}
-
-// Tests that the request IDs are straight when there are multiple requests.
-TEST_F(ResourceDispatcherTest, MultipleRequests) {
- // FIXME
-}
-
-// Tests that the cancel method prevents other messages from being received
-TEST_F(ResourceDispatcherTest, Cancel) {
- // FIXME
-}
-
-TEST_F(ResourceDispatcherTest, Cookies) {
- // FIXME
-}
-
-TEST_F(ResourceDispatcherTest, SerializedPostData) {
- // FIXME
-}
-
-// This class provides functionality to validate whether the ResourceDispatcher
-// object honors the deferred loading contract correctly, i.e. if deferred
-// loading is enabled it should queue up any responses received. If deferred
-// loading is enabled/disabled in the context of a dispatched message, other
-// queued messages should not be dispatched until deferred load is turned off.
-class DeferredResourceLoadingTest : public ResourceDispatcherTest,
- public ResourceLoaderBridge::Peer {
- public:
- DeferredResourceLoadingTest()
- : defer_loading_(false) {
- }
-
- virtual bool Send(IPC::Message* msg) OVERRIDE {
- delete msg;
- return true;
- }
-
- void InitMessages() {
- set_defer_loading(true);
-
- ResourceResponseHead response_head;
- response_head.error_code = net::OK;
-
- dispatcher_->OnMessageReceived(
- ResourceMsg_ReceivedResponse(0, 0, response_head));
-
- // Duplicate the shared memory handle so both the test and the callee can
- // close their copy.
- base::SharedMemoryHandle duplicated_handle;
- EXPECT_TRUE(shared_handle_.ShareToProcess(base::GetCurrentProcessHandle(),
- &duplicated_handle));
-
- dispatcher_->OnMessageReceived(
- ResourceMsg_SetDataBuffer(0, 0, duplicated_handle, 100, 0));
- dispatcher_->OnMessageReceived(
- ResourceMsg_DataReceived(0, 0, 0, 100, 100));
-
- set_defer_loading(false);
- }
-
- // ResourceLoaderBridge::Peer methods.
- virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE {
- }
-
- virtual bool OnReceivedRedirect(
- const GURL& new_url,
- const ResourceResponseInfo& info,
- bool* has_new_first_party_for_cookies,
- GURL* new_first_party_for_cookies) OVERRIDE {
- *has_new_first_party_for_cookies = false;
- return true;
- }
-
- virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE {
- EXPECT_EQ(defer_loading_, false);
- set_defer_loading(true);
- }
-
- virtual void OnDownloadedData(int len) OVERRIDE {
- }
-
- virtual void OnReceivedData(const char* data,
- int data_length,
- int encoded_data_length) OVERRIDE {
- EXPECT_EQ(defer_loading_, false);
- set_defer_loading(false);
- }
-
- virtual void OnCompletedRequest(
- int error_code,
- bool was_ignored_by_handler,
- const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE {
- }
-
- protected:
- virtual void SetUp() OVERRIDE {
- ResourceDispatcherTest::SetUp();
- shared_handle_.Delete(kShmemSegmentName);
- EXPECT_TRUE(shared_handle_.CreateNamed(kShmemSegmentName, false, 100));
- }
-
- virtual void TearDown() OVERRIDE {
- shared_handle_.Close();
- EXPECT_TRUE(shared_handle_.Delete(kShmemSegmentName));
- ResourceDispatcherTest::TearDown();
- }
-
- private:
- void set_defer_loading(bool defer) {
- defer_loading_ = defer;
- dispatcher_->SetDefersLoading(0, defer);
- }
-
- bool defer_loading() const {
- return defer_loading_;
- }
-
- bool defer_loading_;
- base::SharedMemory shared_handle_;
-};
-
-TEST_F(DeferredResourceLoadingTest, DeferredLoadTest) {
- base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
-
- ResourceLoaderBridge* bridge = CreateBridge();
-
- bridge->Start(this);
- InitMessages();
-
- // Dispatch deferred messages.
- message_loop.RunUntilIdle();
- delete bridge;
-}
-
-class TimeConversionTest : public ResourceDispatcherTest,
- public ResourceLoaderBridge::Peer {
- public:
- virtual bool Send(IPC::Message* msg) OVERRIDE {
- delete msg;
- return true;
- }
-
- void PerformTest(const ResourceResponseHead& response_head) {
- scoped_ptr<ResourceLoaderBridge> bridge(CreateBridge());
- bridge->Start(this);
-
- dispatcher_->OnMessageReceived(
- ResourceMsg_ReceivedResponse(0, 0, response_head));
- }
-
- // ResourceLoaderBridge::Peer methods.
- virtual void OnUploadProgress(uint64 position, uint64 size) OVERRIDE {
- }
-
- virtual bool OnReceivedRedirect(
- const GURL& new_url,
- const ResourceResponseInfo& info,
- bool* has_new_first_party_for_cookies,
- GURL* new_first_party_for_cookies) OVERRIDE {
- return true;
- }
-
- virtual void OnReceivedResponse(const ResourceResponseInfo& info) OVERRIDE {
- response_info_ = info;
- }
-
- virtual void OnDownloadedData(int len) OVERRIDE {
- }
-
- virtual void OnReceivedData(const char* data,
- int data_length,
- int encoded_data_length) OVERRIDE {
- }
-
- virtual void OnCompletedRequest(
- int error_code,
- bool was_ignored_by_handler,
- const std::string& security_info,
- const base::TimeTicks& completion_time) OVERRIDE {
- }
-
- const ResourceResponseInfo& response_info() const { return response_info_; }
-
- private:
- ResourceResponseInfo response_info_;
-};
-
-// TODO(simonjam): Enable this when 10829031 lands.
-TEST_F(TimeConversionTest, DISABLED_ProperlyInitialized) {
- ResourceResponseHead response_head;
- response_head.error_code = net::OK;
- response_head.request_start = base::TimeTicks::FromInternalValue(5);
- response_head.response_start = base::TimeTicks::FromInternalValue(15);
- response_head.load_timing.request_start_time = base::Time::Now();
- response_head.load_timing.request_start =
- base::TimeTicks::FromInternalValue(10);
- response_head.load_timing.connect_timing.connect_start =
- base::TimeTicks::FromInternalValue(13);
-
- PerformTest(response_head);
-
- EXPECT_LT(base::TimeTicks(), response_info().load_timing.request_start);
- EXPECT_EQ(base::TimeTicks(),
- response_info().load_timing.connect_timing.dns_start);
- EXPECT_LE(response_head.load_timing.request_start,
- response_info().load_timing.connect_timing.connect_start);
-}
-
-TEST_F(TimeConversionTest, PartiallyInitialized) {
- ResourceResponseHead response_head;
- response_head.error_code = net::OK;
- response_head.request_start = base::TimeTicks::FromInternalValue(5);
- response_head.response_start = base::TimeTicks::FromInternalValue(15);
-
- PerformTest(response_head);
-
- EXPECT_EQ(base::TimeTicks(), response_info().load_timing.request_start);
- EXPECT_EQ(base::TimeTicks(),
- response_info().load_timing.connect_timing.dns_start);
-}
-
-TEST_F(TimeConversionTest, NotInitialized) {
- ResourceResponseHead response_head;
- response_head.error_code = net::OK;
-
- PerformTest(response_head);
-
- EXPECT_EQ(base::TimeTicks(), response_info().load_timing.request_start);
- EXPECT_EQ(base::TimeTicks(),
- response_info().load_timing.connect_timing.dns_start);
-}
-
-} // namespace content
« no previous file with comments | « content/common/resource_dispatcher.cc ('k') | content/common/socket_stream_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698