Passing mime type in DidLoadResourceFromMemoryCache and more info in LoadFromMemoryCacheDetails.

The mime_type is needed for speculative resource prefetching.

BUG=None
TEST=None


Review URL: https://chromiumcodereview.appspot.com/10413064

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138638 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/browser/load_from_memory_cache_details.cc b/content/browser/load_from_memory_cache_details.cc
index ed80587..e78171f 100644
--- a/content/browser/load_from_memory_cache_details.cc
+++ b/content/browser/load_from_memory_cache_details.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
 
@@ -8,11 +8,17 @@
     const GURL& url,
     int pid,
     int cert_id,
-    net::CertStatus cert_status)
+    net::CertStatus cert_status,
+    std::string http_method,
+    std::string mime_type,
+    ResourceType::Type resource_type)
     : url_(url),
       pid_(pid),
       cert_id_(cert_id),
-      cert_status_(cert_status) {
+      cert_status_(cert_status),
+      http_method_(http_method),
+      mime_type_(mime_type),
+      resource_type_(resource_type) {
 }
 
 LoadFromMemoryCacheDetails::~LoadFromMemoryCacheDetails() {
diff --git a/content/browser/load_from_memory_cache_details.h b/content/browser/load_from_memory_cache_details.h
index 4524014..b17f06e 100644
--- a/content/browser/load_from_memory_cache_details.h
+++ b/content/browser/load_from_memory_cache_details.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
 
@@ -6,9 +6,11 @@
 #define CONTENT_BROWSER_LOAD_FROM_MEMORY_CACHE_DETAILS_H_
 #pragma once
 
+#include <string>
 #include "base/basictypes.h"
 #include "googleurl/src/gurl.h"
 #include "net/base/cert_status_flags.h"
+#include "webkit/glue/resource_type.h"
 
 class LoadFromMemoryCacheDetails {
  public:
@@ -16,19 +18,28 @@
        const GURL& url,
        int pid,
        int cert_id,
-       net::CertStatus cert_status);
+       net::CertStatus cert_status,
+       std::string http_method,
+       std::string mime_type,
+       ResourceType::Type resource_type);
   ~LoadFromMemoryCacheDetails();
 
   const GURL& url() const { return url_; }
   int pid() const { return pid_; }
   int ssl_cert_id() const { return cert_id_; }
   net::CertStatus ssl_cert_status() const { return cert_status_; }
+  const std::string& http_method() const { return http_method_; }
+  const std::string& mime_type() const { return mime_type_; }
+  ResourceType::Type resource_type() const { return resource_type_; }
 
  private:
   GURL url_;
   int pid_;
   int cert_id_;
   net::CertStatus cert_status_;
+  std::string http_method_;
+  std::string mime_type_;
+  ResourceType::Type resource_type_;
 
   DISALLOW_COPY_AND_ASSIGN(LoadFromMemoryCacheDetails);
 };
diff --git a/content/browser/renderer_host/resource_dispatcher_host_impl.cc b/content/browser/renderer_host/resource_dispatcher_host_impl.cc
index 0fbfe14..b7fcc24 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_impl.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host_impl.cc
@@ -1127,6 +1127,7 @@
     const GURL& url,
     const std::string& security_info,
     const std::string& http_method,
+    const std::string& mime_type,
     ResourceType::Type resource_type) {
   if (!url.is_valid() || !(url.SchemeIs("http") || url.SchemeIs("https")))
     return;
diff --git a/content/browser/renderer_host/resource_dispatcher_host_impl.h b/content/browser/renderer_host/resource_dispatcher_host_impl.h
index 0202cf65..803295f6 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_impl.h
+++ b/content/browser/renderer_host/resource_dispatcher_host_impl.h
@@ -180,6 +180,7 @@
   void OnDidLoadResourceFromMemoryCache(const GURL& url,
                                         const std::string& security_info,
                                         const std::string& http_method,
+                                        const std::string& mime_type,
                                         ResourceType::Type resource_type);
 
   // Force cancels any pending requests for the given process.
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 063275e..a73713f 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1690,6 +1690,7 @@
     const GURL& url,
     const std::string& security_info,
     const std::string& http_method,
+    const std::string& mime_type,
     ResourceType::Type resource_type) {
   base::StatsCounter cache("WebKit.CacheHit");
   cache.Increment();
@@ -1702,7 +1703,8 @@
   content::DeserializeSecurityInfo(security_info, &cert_id, &cert_status,
                                    &security_bits, &connection_status);
   LoadFromMemoryCacheDetails details(url, GetRenderProcessHost()->GetID(),
-                                     cert_id, cert_status);
+                                     cert_id, cert_status, http_method,
+                                     mime_type, resource_type);
 
   content::NotificationService::current()->Notify(
       content::NOTIFICATION_LOAD_FROM_MEMORY_CACHE,
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index c92899b..cf15cf9 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -453,6 +453,7 @@
   void OnDidLoadResourceFromMemoryCache(const GURL& url,
                                         const std::string& security_info,
                                         const std::string& http_request,
+                                        const std::string& mime_type,
                                         ResourceType::Type resource_type);
   void OnDidDisplayInsecureContent();
   void OnDidRunInsecureContent(const std::string& security_origin,
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index 42babd7..d64536b0 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -1435,10 +1435,11 @@
 // The security info is non empty if the resource was originally loaded over
 // a secure connection.
 // Note: May only be sent once per URL per frame per committed load.
-IPC_MESSAGE_ROUTED4(ViewHostMsg_DidLoadResourceFromMemoryCache,
+IPC_MESSAGE_ROUTED5(ViewHostMsg_DidLoadResourceFromMemoryCache,
                     GURL /* url */,
                     std::string  /* security info */,
                     std::string  /* http method */,
+                    std::string  /* mime type */,
                     ResourceType::Type /* resource type */)
 
 // Sent when the renderer displays insecure content in a secure page.
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 1bb2373..2bb8d166 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -3323,6 +3323,7 @@
       url,
       response.securityInfo(),
       request.httpMethod().utf8(),
+      response.mimeType().utf8(),
       ResourceType::FromTargetType(request.targetType())));
 }