| Index: chrome/browser/renderer_host/resource_queue_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/resource_queue_unittest.cc (revision 75488)
|
| +++ chrome/browser/renderer_host/resource_queue_unittest.cc (working copy)
|
| @@ -1,289 +0,0 @@
|
| -// Copyright (c) 2011 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 "base/message_loop.h"
|
| -#include "base/scoped_ptr.h"
|
| -#include "chrome/browser/browser_thread.h"
|
| -#include "chrome/browser/renderer_host/global_request_id.h"
|
| -#include "chrome/browser/renderer_host/resource_dispatcher_host_request_info.h"
|
| -#include "chrome/browser/renderer_host/resource_handler.h"
|
| -#include "chrome/browser/renderer_host/resource_queue.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "net/url_request/url_request.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -const char kTestUrl[] = "data:text/plain,Hello World!";
|
| -
|
| -class DummyResourceHandler : public ResourceHandler {
|
| - public:
|
| - DummyResourceHandler() {
|
| - }
|
| -
|
| - bool OnUploadProgress(int request_id, uint64 position, uint64 size) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual bool OnRequestRedirected(int request_id, const GURL& url,
|
| - ResourceResponse* response,
|
| - bool* defer) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual bool OnResponseStarted(int request_id,
|
| - ResourceResponse* response) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual bool OnWillStart(int request_id, const GURL& url, bool* defer) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual bool OnWillRead(int request_id,
|
| - net::IOBuffer** buf,
|
| - int* buf_size,
|
| - int min_size) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual bool OnReadCompleted(int request_id, int* bytes_read) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual bool OnResponseCompleted(int request_id,
|
| - const net::URLRequestStatus& status,
|
| - const std::string& security_info) {
|
| - NOTREACHED();
|
| - return true;
|
| - }
|
| -
|
| - virtual void OnRequestClosed() {
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(DummyResourceHandler);
|
| -};
|
| -
|
| -ResourceDispatcherHostRequestInfo* GetRequestInfo(int request_id) {
|
| - return new ResourceDispatcherHostRequestInfo(
|
| - new DummyResourceHandler(), ChildProcessInfo::RENDER_PROCESS, 0, 0,
|
| - request_id, ResourceType::MAIN_FRAME, 0, false, false, false, -1, -1);
|
| -}
|
| -
|
| -void InitializeQueue(ResourceQueue* queue, ResourceQueueDelegate* delegate) {
|
| - ResourceQueue::DelegateSet delegate_set;
|
| - delegate_set.insert(delegate);
|
| - queue->Initialize(delegate_set);
|
| -}
|
| -
|
| -void InitializeQueue(ResourceQueue* queue,
|
| - ResourceQueueDelegate* delegate1,
|
| - ResourceQueueDelegate* delegate2) {
|
| - ResourceQueue::DelegateSet delegate_set;
|
| - delegate_set.insert(delegate1);
|
| - delegate_set.insert(delegate2);
|
| - queue->Initialize(delegate_set);
|
| -}
|
| -
|
| -class NeverDelayingDelegate : public ResourceQueueDelegate {
|
| - public:
|
| - NeverDelayingDelegate() {
|
| - }
|
| -
|
| - virtual bool ShouldDelayRequest(
|
| - net::URLRequest* request,
|
| - const ResourceDispatcherHostRequestInfo& request_info,
|
| - const GlobalRequestID& request_id) {
|
| - return false;
|
| - }
|
| -
|
| - virtual void WillShutdownResourceQueue() {
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(NeverDelayingDelegate);
|
| -};
|
| -
|
| -class AlwaysDelayingDelegate : public ResourceQueueDelegate {
|
| - public:
|
| - explicit AlwaysDelayingDelegate(ResourceQueue* resource_queue)
|
| - : resource_queue_(resource_queue) {
|
| - }
|
| -
|
| - virtual bool ShouldDelayRequest(
|
| - net::URLRequest* request,
|
| - const ResourceDispatcherHostRequestInfo& request_info,
|
| - const GlobalRequestID& request_id) {
|
| - delayed_requests_.push_back(request_id);
|
| - return true;
|
| - }
|
| -
|
| - virtual void WillShutdownResourceQueue() {
|
| - resource_queue_ = NULL;
|
| - }
|
| -
|
| - void StartDelayedRequests() {
|
| - if (!resource_queue_)
|
| - return;
|
| -
|
| - for (RequestList::iterator i = delayed_requests_.begin();
|
| - i != delayed_requests_.end(); ++i) {
|
| - resource_queue_->StartDelayedRequest(this, *i);
|
| - }
|
| - }
|
| -
|
| - private:
|
| - typedef std::vector<GlobalRequestID> RequestList;
|
| -
|
| - ResourceQueue* resource_queue_;
|
| -
|
| - RequestList delayed_requests_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(AlwaysDelayingDelegate);
|
| -};
|
| -
|
| -class ResourceQueueTest : public testing::Test,
|
| - public net::URLRequest::Delegate {
|
| - public:
|
| - ResourceQueueTest()
|
| - : response_started_count_(0),
|
| - message_loop_(MessageLoop::TYPE_IO),
|
| - ui_thread_(BrowserThread::UI, &message_loop_),
|
| - io_thread_(BrowserThread::IO, &message_loop_) {
|
| - }
|
| -
|
| - virtual void OnResponseStarted(net::URLRequest* request) {
|
| - response_started_count_++;
|
| - // We're not going to do anything more with the request. Cancel it now
|
| - // to avoid leaking net::URLRequestJob.
|
| - request->Cancel();
|
| - }
|
| -
|
| - virtual void OnReadCompleted(net::URLRequest* request, int bytes_read) {
|
| - }
|
| -
|
| - protected:
|
| - int response_started_count_;
|
| -
|
| - private:
|
| - MessageLoop message_loop_;
|
| - BrowserThread ui_thread_;
|
| - BrowserThread io_thread_;
|
| -};
|
| -
|
| -TEST_F(ResourceQueueTest, Basic) {
|
| - // Test the simplest lifycycle of ResourceQueue.
|
| - ResourceQueue queue;
|
| - queue.Initialize(ResourceQueue::DelegateSet());
|
| - queue.Shutdown();
|
| -}
|
| -
|
| -TEST_F(ResourceQueueTest, NeverDelayingDelegate) {
|
| - ResourceQueue queue;
|
| -
|
| - NeverDelayingDelegate delegate;
|
| - InitializeQueue(&queue, &delegate);
|
| -
|
| - net::URLRequest request(GURL(kTestUrl), this);
|
| - scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
|
| - EXPECT_EQ(0, response_started_count_);
|
| - queue.AddRequest(&request, *request_info.get());
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(1, response_started_count_);
|
| -
|
| - queue.Shutdown();
|
| -}
|
| -
|
| -TEST_F(ResourceQueueTest, AlwaysDelayingDelegate) {
|
| - ResourceQueue queue;
|
| -
|
| - AlwaysDelayingDelegate delegate(&queue);
|
| - InitializeQueue(&queue, &delegate);
|
| -
|
| - net::URLRequest request(GURL(kTestUrl), this);
|
| - scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
|
| - EXPECT_EQ(0, response_started_count_);
|
| - queue.AddRequest(&request, *request_info.get());
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| - delegate.StartDelayedRequests();
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(1, response_started_count_);
|
| -
|
| - queue.Shutdown();
|
| -}
|
| -
|
| -TEST_F(ResourceQueueTest, AlwaysDelayingDelegateAfterShutdown) {
|
| - ResourceQueue queue;
|
| -
|
| - AlwaysDelayingDelegate delegate(&queue);
|
| - InitializeQueue(&queue, &delegate);
|
| -
|
| - net::URLRequest request(GURL(kTestUrl), this);
|
| - scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
|
| - EXPECT_EQ(0, response_started_count_);
|
| - queue.AddRequest(&request, *request_info.get());
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| -
|
| - queue.Shutdown();
|
| -
|
| - delegate.StartDelayedRequests();
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| -}
|
| -
|
| -TEST_F(ResourceQueueTest, TwoDelegates) {
|
| - ResourceQueue queue;
|
| -
|
| - AlwaysDelayingDelegate always_delaying_delegate(&queue);
|
| - NeverDelayingDelegate never_delaying_delegate;
|
| - InitializeQueue(&queue, &always_delaying_delegate, &never_delaying_delegate);
|
| -
|
| - net::URLRequest request(GURL(kTestUrl), this);
|
| - scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
|
| - EXPECT_EQ(0, response_started_count_);
|
| - queue.AddRequest(&request, *request_info.get());
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| - always_delaying_delegate.StartDelayedRequests();
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(1, response_started_count_);
|
| -
|
| - queue.Shutdown();
|
| -}
|
| -
|
| -TEST_F(ResourceQueueTest, RemoveRequest) {
|
| - ResourceQueue queue;
|
| -
|
| - AlwaysDelayingDelegate delegate(&queue);
|
| - InitializeQueue(&queue, &delegate);
|
| -
|
| - net::URLRequest request(GURL(kTestUrl), this);
|
| - scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
|
| - GlobalRequestID request_id(request_info->child_id(),
|
| - request_info->request_id());
|
| - EXPECT_EQ(0, response_started_count_);
|
| - queue.AddRequest(&request, *request_info.get());
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| - queue.RemoveRequest(request_id);
|
| - delegate.StartDelayedRequests();
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| -
|
| - queue.Shutdown();
|
| -
|
| - MessageLoop::current()->RunAllPending();
|
| - EXPECT_EQ(0, response_started_count_);
|
| -}
|
| -
|
| -} // namespace
|
|
|