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