1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef WEBKIT_GLUE_SITE_ISOLATION_METRICS_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define WEBKIT_GLUE_SITE_ISOLATION_METRICS_H_ 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace WebKit { 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WebFrame; 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WebURL; 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WebURLResponse; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace webkit_glue { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Metrics to check the feasability of blocking cross-site requests that 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// a renderer shouldn't be making (in case we try to move cross-site frames 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// into their own process someday). We're erring on the side of counting more 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// mime-types then we strictly need (we'd only consider blocking cross-site 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// requests with types similar to HTML, XML, or JSON). 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SiteIsolationMetrics { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void AddRequest(unsigned identifier, 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WebKit::WebURLRequest::TargetType target_type); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static bool AllowedByAccessControlHeader( 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WebKit::WebFrame* frame, const WebKit::WebURLResponse& response); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void LogMimeTypeForCrossOriginRequest( 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WebKit::WebFrame* frame, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch unsigned identifier, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const WebKit::WebURLResponse& response); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void SniffCrossOriginHTML(const WebKit::WebURL& response_url, 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* data, 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int len); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void RemoveCompletedResponse(const WebKit::WebURL& response_url); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace webkit_glue 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // WEBKIT_GLUE_SITE_ISOLATION_METRICS_H_ 42