Index: content/child/site_isolation_policy.h |
diff --git a/content/child/site_isolation_policy.h b/content/child/site_isolation_policy.h |
index 28cabed6062b12fc604ccf2856b7e81659bc9c86..961193ba3a01d606721c8ce4c2fca79121a620c0 100644 |
--- a/content/child/site_isolation_policy.h |
+++ b/content/child/site_isolation_policy.h |
@@ -9,13 +9,17 @@ |
#include <utility> |
#include "base/gtest_prod_util.h" |
+#include "base/memory/linked_ptr.h" |
+#include "base/strings/string_piece.h" |
#include "content/common/content_export.h" |
-#include "third_party/WebKit/public/platform/WebURLRequest.h" |
-#include "third_party/WebKit/public/platform/WebURLResponse.h" |
-#include "third_party/WebKit/public/web/WebFrame.h" |
-#include "webkit/common/resource_response_info.h" |
#include "webkit/common/resource_type.h" |
+class GURL; |
+ |
+namespace webkit_glue { |
+struct ResourceResponseInfo; |
+} |
+ |
namespace content { |
// SiteIsolationPolicy implements the cross-site document blocking policy (XSDP) |
@@ -52,58 +56,48 @@ namespace content { |
// SiteIsolation.XSD.[%MIMETYPE].NotBlocked.MaybeJS : |
// # of responses that are plausibly sniffed to be JavaScript. |
+struct SiteIsolationResponseMetaData { |
+ |
+ enum CanonicalMimeType { |
+ HTML = 0, |
+ XML = 1, |
+ JSON = 2, |
+ Plain = 3, |
+ Others = 4, |
+ MaxCanonicalMimeType, |
+ }; |
+ |
+ SiteIsolationResponseMetaData(); |
+ |
+ std::string frame_origin; |
+ GURL response_url; |
+ ResourceType::Type resource_type; |
+ CanonicalMimeType canonical_mime_type; |
+ int http_status_code; |
+ bool no_sniff; |
+}; |
+ |
class CONTENT_EXPORT SiteIsolationPolicy { |
public: |
// Set activation flag for the UMA data collection for this renderer process. |
static void SetPolicyEnabled(bool enabled); |
- // Records the bookkeeping data about the HTTP header information for the |
- // request identified by |request_id|. The bookkeeping data is used by |
- // ShouldBlockResponse. We have to make sure to call OnRequestComplete to free |
- // the bookkeeping data. |
- static void OnReceivedResponse(int request_id, |
- const GURL& frame_origin, |
- const GURL& response_url, |
- ResourceType::Type resource_type, |
- int origin_pid, |
- const webkit_glue::ResourceResponseInfo& info); |
+ // Returns any bookkeeping data about the HTTP header information for the |
+ // request identified by |request_id|. Any data returned should then be |
+ // passed to ShouldBlockResponse with the first packet. |
+ static linked_ptr<SiteIsolationResponseMetaData> OnReceivedResponse( |
+ const GURL& frame_origin, const GURL& response_url, |
+ ResourceType::Type resource_type, int origin_pid, |
+ const webkit_glue::ResourceResponseInfo& info); |
// Examines the first network packet in case response_url is registered as a |
// cross-site document by DidReceiveResponse(). In case that this response is |
// blocked, it returns an alternative data to be sent to the renderer in |
// |alternative_data|. This records various kinds of UMA data stats. This |
// function is called only if the length of received data is non-zero. |
- static bool ShouldBlockResponse(int request_id, |
- const char* payload, |
- int length, |
- std::string* alternative_data); |
- |
- // Clean up booking data registered by OnReceiveResponse and OnReceivedData. |
- static void OnRequestComplete(int request_id); |
- |
- struct ResponseMetaData { |
- |
- enum CanonicalMimeType { |
- HTML = 0, |
- XML = 1, |
- JSON = 2, |
- Plain = 3, |
- Others = 4, |
- MaxCanonicalMimeType, |
- }; |
- |
- ResponseMetaData(); |
- |
- std::string frame_origin; |
- GURL response_url; |
- ResourceType::Type resource_type; |
- CanonicalMimeType canonical_mime_type; |
- int http_status_code; |
- bool no_sniff; |
- }; |
- |
- typedef std::map<int, ResponseMetaData> RequestIdToMetaDataMap; |
- typedef std::map<int, bool> RequestIdToResultMap; |
+ static bool ShouldBlockResponse( |
+ linked_ptr<SiteIsolationResponseMetaData>& resp_data, const char* payload, |
+ int length, std::string* alternative_data); |
private: |
FRIEND_TEST_ALL_PREFIXES(SiteIsolationPolicyTest, IsBlockableScheme); |
@@ -117,7 +111,7 @@ private: |
// Returns the representative mime type enum value of the mime type of |
// response. For example, this returns the same value for all text/xml mime |
// type families such as application/xml, application/rss+xml. |
- static ResponseMetaData::CanonicalMimeType GetCanonicalMimeType( |
+ static SiteIsolationResponseMetaData::CanonicalMimeType GetCanonicalMimeType( |
const std::string& mime_type); |
// Returns whether this scheme is a target of cross-site document |