summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-05 06:38:52 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-05 06:38:52 +0000
commit703a31308be801fa9d7206bd0383d04f22eab2a1 (patch)
treee9c26259e2f0e9310546321f8d1581288803a3d8 /chrome/common
parent90f933a3b3ce799ebd2f1e04c8906ba0c6f514d9 (diff)
downloadchromium_src-703a31308be801fa9d7206bd0383d04f22eab2a1.zip
chromium_src-703a31308be801fa9d7206bd0383d04f22eab2a1.tar.gz
chromium_src-703a31308be801fa9d7206bd0383d04f22eab2a1.tar.bz2
Highlights of changes:
1. Added entry to ResourceResponseHead so that it contains either a base::PlatformFile (OS_WIN) or base::FileDescriptor (OS_POSIX) for passing the file handle from browser to renderer process. 2. Also added IPC messages for reporting download progress and ACK message for it. ResourceLoaderBridge::Peer::OnDownloadProgress is added so that the peer is notified of the download progress in the renderer process. 3. Load flag to kick start the resource loading for media files. LOAD_MEDIA_RESOURCE is added so that ResourceDispatcherHost knows how to use a different ResourceHandler for handling media resource request. Review URL: http://codereview.chromium.org/27168 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10972 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
-rwxr-xr-xchrome/common/render_messages.h7
-rw-r--r--chrome/common/render_messages_internal.h18
-rw-r--r--chrome/common/resource_dispatcher.cc9
-rw-r--r--chrome/common/resource_dispatcher.h1
4 files changed, 31 insertions, 4 deletions
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index 582bf3a..6258f37 100755
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -377,6 +377,9 @@ struct ParamTraits<ResourceType::Type> {
case ResourceType::OBJECT:
type = L"OBJECT";
break;
+ case ResourceType::MEDIA:
+ type = L"MEDIA";
+ break;
default:
type = L"UNKNOWN";
break;
@@ -1334,12 +1337,14 @@ struct ParamTraits<ResourceResponseHead> {
ParamTraits<webkit_glue::ResourceLoaderBridge::ResponseInfo>::Write(m, p);
WriteParam(m, p.status);
WriteParam(m, p.filter_policy);
+ WriteParam(m, p.response_data_file);
}
static bool Read(const Message* m, void** iter, param_type* r) {
return
ParamTraits<webkit_glue::ResourceLoaderBridge::ResponseInfo>::Read(m, iter, r) &&
ReadParam(m, iter, &r->status) &&
- ReadParam(m, iter, &r->filter_policy);
+ ReadParam(m, iter, &r->filter_policy) &&
+ ReadParam(m, iter, &r->response_data_file);
}
static void Log(const param_type& p, std::wstring* l) {
// log more?
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index 963afae..009e975 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -175,7 +175,14 @@ IPC_BEGIN_MESSAGES(View)
int /* request_id */,
ResourceResponseHead)
- // Sent as upload progress is being made
+ // Sent as download progress is being made, size of the resource may be
+ // unknown, in that case |size| is -1.
+ IPC_MESSAGE_ROUTED3(ViewMsg_Resource_DownloadProgress,
+ int /* request_id */,
+ int64 /* position */,
+ int64 /* size */)
+
+ // Sent as upload progress is being made.
IPC_MESSAGE_ROUTED3(ViewMsg_Resource_UploadProgress,
int /* request_id */,
int64 /* position */,
@@ -1104,8 +1111,13 @@ IPC_BEGIN_MESSAGES(ViewHost)
GURL /* last url */,
GURL /* url redirected to */)
- // Sent when the renderer process to acknowlege receipt of and UploadProgress
- // message.
+ // Sent by the renderer process to acknowledge receipt of a
+ // DownloadProgress message.
+ IPC_MESSAGE_ROUTED1(ViewHostMsg_DownloadProgress_ACK,
+ int /* request_id */)
+
+ // Sent by the renderer process to acknowledge receipt of a
+ // UploadProgress message.
IPC_MESSAGE_ROUTED1(ViewHostMsg_UploadProgress_ACK,
int /* request_id */)
diff --git a/chrome/common/resource_dispatcher.cc b/chrome/common/resource_dispatcher.cc
index e9db613..709efed 100644
--- a/chrome/common/resource_dispatcher.cc
+++ b/chrome/common/resource_dispatcher.cc
@@ -278,6 +278,13 @@ bool ResourceDispatcher::OnMessageReceived(const IPC::Message& message) {
return true;
}
+void ResourceDispatcher::OnDownloadProgress(
+ int request_id, int64 position, int64 size) {
+ // TODO(hclam): delegate this message to
+ // ResourceLoaderBridge::Peer::OnDownloadProgress and send an ACK message
+ // back to ResourceDispatcherHost.
+}
+
void ResourceDispatcher::OnUploadProgress(
int request_id, int64 position, int64 size) {
PendingRequestList::iterator it = pending_requests_.find(request_id);
@@ -458,6 +465,7 @@ void ResourceDispatcher::SetDefersLoading(int request_id, bool value) {
void ResourceDispatcher::DispatchMessage(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP(ResourceDispatcher, message)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_UploadProgress, OnUploadProgress)
+ IPC_MESSAGE_HANDLER(ViewMsg_Resource_DownloadProgress, OnDownloadProgress)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedResponse, OnReceivedResponse)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedRedirect, OnReceivedRedirect)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_DataReceived, OnReceivedData)
@@ -505,6 +513,7 @@ webkit_glue::ResourceLoaderBridge* ResourceDispatcher::CreateBridge(
bool ResourceDispatcher::IsResourceMessage(const IPC::Message& message) const {
switch (message.type()) {
+ case ViewMsg_Resource_DownloadProgress::ID:
case ViewMsg_Resource_UploadProgress::ID:
case ViewMsg_Resource_ReceivedResponse::ID:
case ViewMsg_Resource_ReceivedRedirect::ID:
diff --git a/chrome/common/resource_dispatcher.h b/chrome/common/resource_dispatcher.h
index a6b73d5..a4708ee 100644
--- a/chrome/common/resource_dispatcher.h
+++ b/chrome/common/resource_dispatcher.h
@@ -103,6 +103,7 @@ class ResourceDispatcher : public base::RefCounted<ResourceDispatcher> {
typedef base::hash_map<int, PendingRequestInfo> PendingRequestList;
// Message response handlers, called by the message handler for this process.
+ void OnDownloadProgress(int request_id, int64 position, int64 size);
void OnUploadProgress(int request_id, int64 position, int64 size);
void OnReceivedResponse(int request_id, const ResourceResponseHead&);
void OnReceivedRedirect(int request_id, const GURL& new_url);