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)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#ifndef CONTENT_CHILD_REQUEST_EXTRA_DATA_H_
6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define CONTENT_CHILD_REQUEST_EXTRA_DATA_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "third_party/WebKit/public/platform/WebString.h"
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "third_party/WebKit/public/platform/WebURLRequest.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPageVisibilityState.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/base/page_transition_types.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Can be used by callers to store extra data on every ResourceRequest
18e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// which will be incorporated into the ResourceHostMsg_Request message
19e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// sent by ResourceDispatcher.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT RequestExtraData
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    : public NON_EXPORTED_BASE(blink::WebURLRequest::ExtraData) {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  RequestExtraData();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~RequestExtraData();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  blink::WebPageVisibilityState visibility_state() const {
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return visibility_state_;
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_visibility_state(blink::WebPageVisibilityState visibility_state) {
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    visibility_state_ = visibility_state;
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int render_frame_id() const { return render_frame_id_; }
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_render_frame_id(int render_frame_id) {
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    render_frame_id_ = render_frame_id;
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_main_frame() const { return is_main_frame_; }
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_is_main_frame(bool is_main_frame) {
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    is_main_frame_ = is_main_frame;
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  GURL frame_origin() const { return frame_origin_; }
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_frame_origin(const GURL& frame_origin) {
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    frame_origin_ = frame_origin;
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool parent_is_main_frame() const { return parent_is_main_frame_; }
45effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_parent_is_main_frame(bool parent_is_main_frame) {
46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    parent_is_main_frame_ = parent_is_main_frame;
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  int parent_render_frame_id() const { return parent_render_frame_id_; }
49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_parent_render_frame_id(int parent_render_frame_id) {
50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    parent_render_frame_id_ = parent_render_frame_id;
51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool allow_download() const { return allow_download_; }
53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_allow_download(bool allow_download) {
54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    allow_download_ = allow_download;
55effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ui::PageTransition transition_type() const { return transition_type_; }
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void set_transition_type(ui::PageTransition transition_type) {
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    transition_type_ = transition_type;
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool should_replace_current_entry() const {
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return should_replace_current_entry_;
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
63effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_should_replace_current_entry(
64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      bool should_replace_current_entry) {
65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    should_replace_current_entry_ = should_replace_current_entry;
66effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int transferred_request_child_id() const {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return transferred_request_child_id_;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
70effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_transferred_request_child_id(
71effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      int transferred_request_child_id) {
72effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    transferred_request_child_id_ = transferred_request_child_id;
73effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int transferred_request_request_id() const {
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return transferred_request_request_id_;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
77effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_transferred_request_request_id(
78effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      int transferred_request_request_id) {
79effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    transferred_request_request_id_ = transferred_request_request_id;
80effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  int service_worker_provider_id() const {
82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    return service_worker_provider_id_;
83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
84effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  void set_service_worker_provider_id(
85effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      int service_worker_provider_id) {
86effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    service_worker_provider_id_ = service_worker_provider_id;
87effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
88effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // |custom_user_agent| is used to communicate an overriding custom user agent
89effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // to |RenderViewImpl::willSendRequest()|; set to a null string to indicate no
90effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // override and an empty string to indicate that there should be no user
91effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // agent.
92effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  const blink::WebString& custom_user_agent() const {
9303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    return custom_user_agent_;
94effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
9503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  void set_custom_user_agent(const blink::WebString& custom_user_agent) {
96effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch    custom_user_agent_ = custom_user_agent;
97effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  }
9803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  const blink::WebString& requested_with() const {
9903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    return requested_with_;
10003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  }
10103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  void set_requested_with(const blink::WebString& requested_with) {
10203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    requested_with_ = requested_with;
10303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  }
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  blink::WebPageVisibilityState visibility_state_;
107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  int render_frame_id_;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_main_frame_;
109424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  GURL frame_origin_;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool parent_is_main_frame_;
111a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  int parent_render_frame_id_;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool allow_download_;
1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ui::PageTransition transition_type_;
114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool should_replace_current_entry_;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int transferred_request_child_id_;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int transferred_request_request_id_;
117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  int service_worker_provider_id_;
118effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  blink::WebString custom_user_agent_;
11903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  blink::WebString requested_with_;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RequestExtraData);
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
126868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif  // CONTENT_CHILD_REQUEST_EXTRA_DATA_H_
127