From fe54944f6080ed9f48619899ad342924754b19a9 Mon Sep 17 00:00:00 2001 From: "jcampan@chromium.org" <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> Date: Sat, 20 Dec 2008 01:18:59 +0000 Subject: This CL moves the different resource handlers from resource_dispatcher_host.cc into their own files, into a new renderer_host directory. Their is no functionality change in this CL. The motivation for doing that was: - resource_dispatcher_host.cc has become very long and more than 1/3 of the code is for the resource handler. - having the resource handler in their own file allows having unit tests for them. BUG=none TEST=run all unit tests and UI tests. Review URL: http://codereview.chromium.org/14487 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7336 0039d316-1c4b-4281-b951-d872f2087c98 --- .../browser/renderer_host/async_resource_handler.h | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 chrome/browser/renderer_host/async_resource_handler.h (limited to 'chrome/browser/renderer_host/async_resource_handler.h') diff --git a/chrome/browser/renderer_host/async_resource_handler.h b/chrome/browser/renderer_host/async_resource_handler.h new file mode 100644 index 0000000..5d24b75 --- /dev/null +++ b/chrome/browser/renderer_host/async_resource_handler.h @@ -0,0 +1,50 @@ +// Copyright (c) 2006-2008 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. + +#ifndef CHROME_BROWSER_RENDERER_HOST_ASYNC_RESOURCE_HANDLER_H_ +#define CHROME_BROWSER_RENDERER_HOST_ASYNC_RESOURCE_HANDLER_H_ + +#include "chrome/browser/renderer_host/resource_dispatcher_host.h" +#include "chrome/browser/renderer_host/resource_handler.h" + +class base::SharedMemory; + +// Used to complete an asynchronous resource request in response to resource +// load events from the resource dispatcher host. +class AsyncResourceHandler : public ResourceHandler { + public: + AsyncResourceHandler(ResourceDispatcherHost::Receiver* receiver, + int render_process_host_id, + int routing_id, + HANDLE render_process, + const GURL& url, + ResourceDispatcherHost* resource_dispatcher_host); + + // ResourceHandler implementation: + bool OnUploadProgress(int request_id, uint64 position, uint64 size); + bool OnRequestRedirected(int request_id, const GURL& new_url); + bool OnResponseStarted(int request_id, ResourceResponse* response); + bool OnWillRead(int request_id, char** buf, int* buf_size, int min_size); + bool OnReadCompleted(int request_id, int* bytes_read); + bool OnResponseCompleted(int request_id, const URLRequestStatus& status); + + static void GlobalCleanup(); + + private: + // When reading, we don't know if we are going to get EOF (0 bytes read), so + // we typically have a buffer that we allocated but did not use. We keep + // this buffer around for the next read as a small optimization. + static base::SharedMemory* spare_read_buffer_; + + scoped_ptr<base::SharedMemory> read_buffer_; + ResourceDispatcherHost::Receiver* receiver_; + int render_process_host_id_; + int routing_id_; + HANDLE render_process_; + ResourceDispatcherHost* rdh_; + + DISALLOW_COPY_AND_ASSIGN(AsyncResourceHandler); +}; + +#endif // CHROME_BROWSER_RENDERER_HOST_ASYNC_RESOURCE_HANDLER_H_ -- cgit v1.1