// Copyright (c) 2010 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.

#ifndef WEBKIT_GLUE_SITE_ISOLATION_METRICS_H_
#define WEBKIT_GLUE_SITE_ISOLATION_METRICS_H_

#include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h"

namespace WebKit {
class WebFrame;
class WebURL;
class WebURLResponse;
}

namespace webkit_glue {

// Metrics to check the feasability of blocking cross-site requests that
// a renderer shouldn't be making (in case we try to move cross-site frames
// into their own process someday). We're erring on the side of counting more
// mime-types then we strictly need (we'd only consider blocking cross-site
// requests with types similar to HTML, XML, or JSON).
class SiteIsolationMetrics {
 public:
  static void AddRequest(unsigned identifier,
                         WebKit::WebURLRequest::TargetType target_type);
  static bool AllowedByAccessControlHeader(
      WebKit::WebFrame* frame, const WebKit::WebURLResponse& response);
  static void LogMimeTypeForCrossOriginRequest(
      WebKit::WebFrame* frame,
      unsigned identifier,
      const WebKit::WebURLResponse& response);
  static void SniffCrossOriginHTML(const WebKit::WebURL& response_url,
                                   const char* data,
                                   int len);
  static void RemoveCompletedResponse(const WebKit::WebURL& response_url);
};

}  // namespace webkit_glue

#endif  // WEBKIT_GLUE_SITE_ISOLATION_METRICS_H_