15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_RESOURCE_REQUEST_DETAILS_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_RESOURCE_REQUEST_DETAILS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/common/resource_type.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/host_port_pair.h"
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "net/cert/cert_status_flags.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_status.h"
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequest;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The ResourceRequestDetails object contains additional details about a
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// resource request notification. It copies many of the publicly accessible
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// member variables of net::URLRequest, but exists on the UI thread.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ResourceRequestDetails {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ResourceRequestDetails(const net::URLRequest* request, int cert_id);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ResourceRequestDetails();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL original_url;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string method;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string referrer;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool has_upload;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int load_flags;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int origin_child_id;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::URLRequestStatus status;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int ssl_cert_id;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::CertStatus ssl_cert_status;
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ResourceType resource_type;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::HostPortPair socket_address;
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  int render_frame_id;
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // HTTP response code. See HttpResponseHeaders::response_code().
44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  // -1 if there are no response headers yet.
45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  int http_response_code;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Details about a redirection of a resource request.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ResourceRedirectDetails : public ResourceRequestDetails {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ResourceRedirectDetails(const net::URLRequest* request,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          int cert_id,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const GURL& new_url);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ResourceRedirectDetails();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL to which we are being redirected.
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL new_url;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_PUBLIC_BROWSER_RESOURCE_REQUEST_DETAILS_H_
62