resource_response.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// See http://dev.chromium.org/developers/design-documents/multi-process-resource-loading
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CONTENT_PUBLIC_COMMON_RESOURCE_RESPONSE_H_
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CONTENT_PUBLIC_COMMON_RESOURCE_RESPONSE_H_
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string>
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/compiler_specific.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/ref_counted.h"
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/common/content_export.h"
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/public/common/resource_response_info.h"
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "net/url_request/url_request_status.h"
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "url/gurl.h"
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content {
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Parameters for a resource response header.
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct ResourceResponseHead : ResourceResponseInfo {
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // The response error_code.
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int error_code;
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TimeTicks::Now() when the browser received the request from the renderer.
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::TimeTicks request_start;
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TimeTicks::Now() when the browser sent the response to the renderer.
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  base::TimeTicks response_start;
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Parameters for a synchronous resource response.
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct SyncLoadResult : ResourceResponseHead {
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // The final URL after any redirects.
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GURL final_url;
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // The response data.
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  std::string data;
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Simple wrapper that refcounts ResourceResponseHead.
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Inherited, rather than typedef'd, to allow forward declarations.
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct CONTENT_EXPORT ResourceResponse
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    : public base::RefCounted<ResourceResponse> {
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ResourceResponseHead head;
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  friend class base::RefCounted<ResourceResponse>;
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ~ResourceResponse() {}
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace content
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CONTENT_PUBLIC_COMMON_RESOURCE_RESPONSE_H_
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch