OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ |
6 #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H
_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
13 #include "base/memory/linked_ptr.h" | 13 #include "base/memory/linked_ptr.h" |
14 #include "chrome/browser/extensions/api/declarative_webrequest/request_stages.h" | 14 #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" |
15 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h
" | 15 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h
" |
16 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 16 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
17 #include "chrome/common/extensions/api/events.h" | 17 #include "chrome/common/extensions/api/events.h" |
18 #include "googleurl/src/gurl.h" | 18 #include "googleurl/src/gurl.h" |
19 #include "unicode/regex.h" | 19 #include "unicode/regex.h" |
20 | 20 |
21 class WebRequestPermission; | 21 class WebRequestPermission; |
22 | 22 |
23 namespace base { | 23 namespace base { |
24 class DictionaryValue; | 24 class DictionaryValue; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 ACTION_ADD_RESPONSE_HEADER, | 58 ACTION_ADD_RESPONSE_HEADER, |
59 ACTION_REMOVE_RESPONSE_HEADER, | 59 ACTION_REMOVE_RESPONSE_HEADER, |
60 ACTION_IGNORE_RULES, | 60 ACTION_IGNORE_RULES, |
61 ACTION_MODIFY_REQUEST_COOKIE, | 61 ACTION_MODIFY_REQUEST_COOKIE, |
62 ACTION_MODIFY_RESPONSE_COOKIE, | 62 ACTION_MODIFY_RESPONSE_COOKIE, |
63 }; | 63 }; |
64 | 64 |
65 WebRequestAction(); | 65 WebRequestAction(); |
66 virtual ~WebRequestAction(); | 66 virtual ~WebRequestAction(); |
67 | 67 |
68 // Returns a bit vector representing extensions::RequestStages. The bit vector | 68 // Returns a bit vector representing extensions::RequestStage. The bit vector |
69 // contains a 1 for each request stage during which the condition can be | 69 // contains a 1 for each request stage during which the condition can be |
70 // tested. | 70 // tested. |
71 virtual int GetStages() const = 0; | 71 virtual int GetStages() const = 0; |
72 | 72 |
73 virtual Type GetType() const = 0; | 73 virtual Type GetType() const = 0; |
74 | 74 |
75 // Returns the minimum priority of rules that may be evaluated after | 75 // Returns the minimum priority of rules that may be evaluated after |
76 // this rule. Defaults to MIN_INT. | 76 // this rule. Defaults to MIN_INT. |
77 virtual int GetMinimumPriority() const; | 77 virtual int GetMinimumPriority() const; |
78 | 78 |
(...skipping 16 matching lines...) Expand all Loading... |
95 // Factory method that instantiates a concrete WebRequestAction | 95 // Factory method that instantiates a concrete WebRequestAction |
96 // implementation according to |json_action|, the representation of the | 96 // implementation according to |json_action|, the representation of the |
97 // WebRequestAction as received from the extension API. | 97 // WebRequestAction as received from the extension API. |
98 // Sets |error| and returns NULL in case of a semantic error that cannot | 98 // Sets |error| and returns NULL in case of a semantic error that cannot |
99 // be caught by schema validation. Sets |bad_message| and returns NULL | 99 // be caught by schema validation. Sets |bad_message| and returns NULL |
100 // in case the input is syntactically unexpected. | 100 // in case the input is syntactically unexpected. |
101 static scoped_ptr<WebRequestAction> Create(const base::Value& json_action, | 101 static scoped_ptr<WebRequestAction> Create(const base::Value& json_action, |
102 std::string* error, | 102 std::string* error, |
103 bool* bad_message); | 103 bool* bad_message); |
104 | 104 |
105 // Returns a description of the modification to |request| caused by this | 105 // Returns a description of the modification to the request caused by |
106 // action. | 106 // this action. |
107 virtual LinkedPtrEventResponseDelta CreateDelta( | 107 virtual LinkedPtrEventResponseDelta CreateDelta( |
108 net::URLRequest* request, | 108 const WebRequestRule::RequestData& request_data, |
109 RequestStages request_stage, | |
110 const WebRequestRule::OptionalRequestData& optional_request_data, | |
111 const std::string& extension_id, | 109 const std::string& extension_id, |
112 const base::Time& extension_install_time) const = 0; | 110 const base::Time& extension_install_time) const = 0; |
113 }; | 111 }; |
114 | 112 |
115 // Immutable container for multiple actions. | 113 // Immutable container for multiple actions. |
116 // | 114 // |
117 // TODO(battre): As WebRequestActionSet can become the single owner of all | 115 // TODO(battre): As WebRequestActionSet can become the single owner of all |
118 // actions, we can optimize here by making some of them singletons (e.g. Cancel | 116 // actions, we can optimize here by making some of them singletons (e.g. Cancel |
119 // actions). | 117 // actions). |
120 class WebRequestActionSet { | 118 class WebRequestActionSet { |
121 public: | 119 public: |
122 typedef std::vector<linked_ptr<json_schema_compiler::any::Any> > AnyVector; | 120 typedef std::vector<linked_ptr<json_schema_compiler::any::Any> > AnyVector; |
123 typedef std::vector<linked_ptr<WebRequestAction> > Actions; | 121 typedef std::vector<linked_ptr<WebRequestAction> > Actions; |
124 | 122 |
125 explicit WebRequestActionSet(const Actions& actions); | 123 explicit WebRequestActionSet(const Actions& actions); |
126 virtual ~WebRequestActionSet(); | 124 virtual ~WebRequestActionSet(); |
127 | 125 |
128 // Factory method that instantiates a WebRequestActionSet according to | 126 // Factory method that instantiates a WebRequestActionSet according to |
129 // |actions| which represents the array of actions received from the | 127 // |actions| which represents the array of actions received from the |
130 // extension API. | 128 // extension API. |
131 static scoped_ptr<WebRequestActionSet> Create(const AnyVector& actions, | 129 static scoped_ptr<WebRequestActionSet> Create(const AnyVector& actions, |
132 std::string* error, | 130 std::string* error, |
133 bool* bad_message); | 131 bool* bad_message); |
134 | 132 |
135 // Returns a description of the modifications to |request| caused by the | 133 // Returns a description of the modifications to |request_data.request| caused |
136 // |actions_| that can be executed at |request_stage|. If |extension| | 134 // by the |actions_| that can be executed at |request.stage|. If |extension| |
137 // is not NULL, permissions of extensions are checked. | 135 // is not NULL, permissions of extensions are checked. |
138 std::list<LinkedPtrEventResponseDelta> CreateDeltas( | 136 std::list<LinkedPtrEventResponseDelta> CreateDeltas( |
139 const ExtensionInfoMap* extension_info_map, | 137 const ExtensionInfoMap* extension_info_map, |
140 const std::string& extension_id, | 138 const std::string& extension_id, |
141 net::URLRequest* request, | 139 const WebRequestRule::RequestData& request_data, |
142 bool crosses_incognito, | 140 bool crosses_incognito, |
143 RequestStages request_stage, | |
144 const WebRequestRule::OptionalRequestData& optional_request_data, | |
145 const base::Time& extension_install_time) const; | 141 const base::Time& extension_install_time) const; |
146 | 142 |
147 // Returns the minimum priority of rules that may be evaluated after | 143 // Returns the minimum priority of rules that may be evaluated after |
148 // this rule. Defaults to MIN_INT. | 144 // this rule. Defaults to MIN_INT. |
149 int GetMinimumPriority() const; | 145 int GetMinimumPriority() const; |
150 | 146 |
151 const Actions& actions() const { return actions_; } | 147 const Actions& actions() const { return actions_; } |
152 | 148 |
153 private: | 149 private: |
154 Actions actions_; | 150 Actions actions_; |
155 | 151 |
156 DISALLOW_COPY_AND_ASSIGN(WebRequestActionSet); | 152 DISALLOW_COPY_AND_ASSIGN(WebRequestActionSet); |
157 }; | 153 }; |
158 | 154 |
159 // | 155 // |
160 // The following are concrete actions. | 156 // The following are concrete actions. |
161 // | 157 // |
162 | 158 |
163 // Action that instructs to cancel a network request. | 159 // Action that instructs to cancel a network request. |
164 class WebRequestCancelAction : public WebRequestAction { | 160 class WebRequestCancelAction : public WebRequestAction { |
165 public: | 161 public: |
166 WebRequestCancelAction(); | 162 WebRequestCancelAction(); |
167 virtual ~WebRequestCancelAction(); | 163 virtual ~WebRequestCancelAction(); |
168 | 164 |
169 // Implementation of WebRequestAction: | 165 // Implementation of WebRequestAction: |
170 virtual int GetStages() const OVERRIDE; | 166 virtual int GetStages() const OVERRIDE; |
171 virtual Type GetType() const OVERRIDE; | 167 virtual Type GetType() const OVERRIDE; |
172 virtual LinkedPtrEventResponseDelta CreateDelta( | 168 virtual LinkedPtrEventResponseDelta CreateDelta( |
173 net::URLRequest* request, | 169 const WebRequestRule::RequestData& request_data, |
174 RequestStages request_stage, | |
175 const WebRequestRule::OptionalRequestData& optional_request_data, | |
176 const std::string& extension_id, | 170 const std::string& extension_id, |
177 const base::Time& extension_install_time) const OVERRIDE; | 171 const base::Time& extension_install_time) const OVERRIDE; |
178 | 172 |
179 private: | 173 private: |
180 DISALLOW_COPY_AND_ASSIGN(WebRequestCancelAction); | 174 DISALLOW_COPY_AND_ASSIGN(WebRequestCancelAction); |
181 }; | 175 }; |
182 | 176 |
183 // Action that instructs to redirect a network request. | 177 // Action that instructs to redirect a network request. |
184 class WebRequestRedirectAction : public WebRequestAction { | 178 class WebRequestRedirectAction : public WebRequestAction { |
185 public: | 179 public: |
186 explicit WebRequestRedirectAction(const GURL& redirect_url); | 180 explicit WebRequestRedirectAction(const GURL& redirect_url); |
187 virtual ~WebRequestRedirectAction(); | 181 virtual ~WebRequestRedirectAction(); |
188 | 182 |
189 // Implementation of WebRequestAction: | 183 // Implementation of WebRequestAction: |
190 virtual int GetStages() const OVERRIDE; | 184 virtual int GetStages() const OVERRIDE; |
191 virtual Type GetType() const OVERRIDE; | 185 virtual Type GetType() const OVERRIDE; |
192 virtual LinkedPtrEventResponseDelta CreateDelta( | 186 virtual LinkedPtrEventResponseDelta CreateDelta( |
193 net::URLRequest* request, | 187 const WebRequestRule::RequestData& request_data, |
194 RequestStages request_stage, | |
195 const WebRequestRule::OptionalRequestData& optional_request_data, | |
196 const std::string& extension_id, | 188 const std::string& extension_id, |
197 const base::Time& extension_install_time) const OVERRIDE; | 189 const base::Time& extension_install_time) const OVERRIDE; |
198 | 190 |
199 private: | 191 private: |
200 GURL redirect_url_; // Target to which the request shall be redirected. | 192 GURL redirect_url_; // Target to which the request shall be redirected. |
201 | 193 |
202 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectAction); | 194 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectAction); |
203 }; | 195 }; |
204 | 196 |
205 // Action that instructs to redirect a network request to a transparent image. | 197 // Action that instructs to redirect a network request to a transparent image. |
206 class WebRequestRedirectToTransparentImageAction : public WebRequestAction { | 198 class WebRequestRedirectToTransparentImageAction : public WebRequestAction { |
207 public: | 199 public: |
208 WebRequestRedirectToTransparentImageAction(); | 200 WebRequestRedirectToTransparentImageAction(); |
209 virtual ~WebRequestRedirectToTransparentImageAction(); | 201 virtual ~WebRequestRedirectToTransparentImageAction(); |
210 | 202 |
211 // Implementation of WebRequestAction: | 203 // Implementation of WebRequestAction: |
212 virtual int GetStages() const OVERRIDE; | 204 virtual int GetStages() const OVERRIDE; |
213 virtual Type GetType() const OVERRIDE; | 205 virtual Type GetType() const OVERRIDE; |
214 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; | 206 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; |
215 virtual LinkedPtrEventResponseDelta CreateDelta( | 207 virtual LinkedPtrEventResponseDelta CreateDelta( |
216 net::URLRequest* request, | 208 const WebRequestRule::RequestData& request_data, |
217 RequestStages request_stage, | |
218 const WebRequestRule::OptionalRequestData& optional_request_data, | |
219 const std::string& extension_id, | 209 const std::string& extension_id, |
220 const base::Time& extension_install_time) const OVERRIDE; | 210 const base::Time& extension_install_time) const OVERRIDE; |
221 | 211 |
222 private: | 212 private: |
223 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToTransparentImageAction); | 213 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToTransparentImageAction); |
224 }; | 214 }; |
225 | 215 |
226 | 216 |
227 // Action that instructs to redirect a network request to an empty document. | 217 // Action that instructs to redirect a network request to an empty document. |
228 class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction { | 218 class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction { |
229 public: | 219 public: |
230 WebRequestRedirectToEmptyDocumentAction(); | 220 WebRequestRedirectToEmptyDocumentAction(); |
231 virtual ~WebRequestRedirectToEmptyDocumentAction(); | 221 virtual ~WebRequestRedirectToEmptyDocumentAction(); |
232 | 222 |
233 // Implementation of WebRequestAction: | 223 // Implementation of WebRequestAction: |
234 virtual int GetStages() const OVERRIDE; | 224 virtual int GetStages() const OVERRIDE; |
235 virtual Type GetType() const OVERRIDE; | 225 virtual Type GetType() const OVERRIDE; |
236 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; | 226 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; |
237 virtual LinkedPtrEventResponseDelta CreateDelta( | 227 virtual LinkedPtrEventResponseDelta CreateDelta( |
238 net::URLRequest* request, | 228 const WebRequestRule::RequestData& request_data, |
239 RequestStages request_stage, | |
240 const WebRequestRule::OptionalRequestData& optional_request_data, | |
241 const std::string& extension_id, | 229 const std::string& extension_id, |
242 const base::Time& extension_install_time) const OVERRIDE; | 230 const base::Time& extension_install_time) const OVERRIDE; |
243 | 231 |
244 private: | 232 private: |
245 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToEmptyDocumentAction); | 233 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToEmptyDocumentAction); |
246 }; | 234 }; |
247 | 235 |
248 // Action that instructs to redirect a network request. | 236 // Action that instructs to redirect a network request. |
249 class WebRequestRedirectByRegExAction : public WebRequestAction { | 237 class WebRequestRedirectByRegExAction : public WebRequestAction { |
250 public: | 238 public: |
251 // The |to_pattern| has to be passed in ICU syntax. | 239 // The |to_pattern| has to be passed in ICU syntax. |
252 // TODO(battre): Change this to Perl style when migrated to RE2. | 240 // TODO(battre): Change this to Perl style when migrated to RE2. |
253 explicit WebRequestRedirectByRegExAction( | 241 explicit WebRequestRedirectByRegExAction( |
254 scoped_ptr<icu::RegexPattern> from_pattern, | 242 scoped_ptr<icu::RegexPattern> from_pattern, |
255 const std::string& to_pattern); | 243 const std::string& to_pattern); |
256 virtual ~WebRequestRedirectByRegExAction(); | 244 virtual ~WebRequestRedirectByRegExAction(); |
257 | 245 |
258 // Conversion of capture group styles between Perl style ($1, $2, ...) and | 246 // Conversion of capture group styles between Perl style ($1, $2, ...) and |
259 // RE2 (\1, \2, ...). | 247 // RE2 (\1, \2, ...). |
260 static std::string PerlToRe2Style(const std::string& perl); | 248 static std::string PerlToRe2Style(const std::string& perl); |
261 | 249 |
262 // Implementation of WebRequestAction: | 250 // Implementation of WebRequestAction: |
263 virtual int GetStages() const OVERRIDE; | 251 virtual int GetStages() const OVERRIDE; |
264 virtual Type GetType() const OVERRIDE; | 252 virtual Type GetType() const OVERRIDE; |
265 virtual LinkedPtrEventResponseDelta CreateDelta( | 253 virtual LinkedPtrEventResponseDelta CreateDelta( |
266 net::URLRequest* request, | 254 const WebRequestRule::RequestData& request_data, |
267 RequestStages request_stage, | |
268 const WebRequestRule::OptionalRequestData& optional_request_data, | |
269 const std::string& extension_id, | 255 const std::string& extension_id, |
270 const base::Time& extension_install_time) const OVERRIDE; | 256 const base::Time& extension_install_time) const OVERRIDE; |
271 | 257 |
272 private: | 258 private: |
273 scoped_ptr<icu::RegexPattern> from_pattern_; | 259 scoped_ptr<icu::RegexPattern> from_pattern_; |
274 icu::UnicodeString to_pattern_; | 260 icu::UnicodeString to_pattern_; |
275 | 261 |
276 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectByRegExAction); | 262 DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectByRegExAction); |
277 }; | 263 }; |
278 | 264 |
279 // Action that instructs to set a request header. | 265 // Action that instructs to set a request header. |
280 class WebRequestSetRequestHeaderAction : public WebRequestAction { | 266 class WebRequestSetRequestHeaderAction : public WebRequestAction { |
281 public: | 267 public: |
282 WebRequestSetRequestHeaderAction(const std::string& name, | 268 WebRequestSetRequestHeaderAction(const std::string& name, |
283 const std::string& value); | 269 const std::string& value); |
284 virtual ~WebRequestSetRequestHeaderAction(); | 270 virtual ~WebRequestSetRequestHeaderAction(); |
285 | 271 |
286 // Implementation of WebRequestAction: | 272 // Implementation of WebRequestAction: |
287 virtual int GetStages() const OVERRIDE; | 273 virtual int GetStages() const OVERRIDE; |
288 virtual Type GetType() const OVERRIDE; | 274 virtual Type GetType() const OVERRIDE; |
289 virtual LinkedPtrEventResponseDelta CreateDelta( | 275 virtual LinkedPtrEventResponseDelta CreateDelta( |
290 net::URLRequest* request, | 276 const WebRequestRule::RequestData& request_data, |
291 RequestStages request_stage, | |
292 const WebRequestRule::OptionalRequestData& optional_request_data, | |
293 const std::string& extension_id, | 277 const std::string& extension_id, |
294 const base::Time& extension_install_time) const OVERRIDE; | 278 const base::Time& extension_install_time) const OVERRIDE; |
295 | 279 |
296 private: | 280 private: |
297 std::string name_; | 281 std::string name_; |
298 std::string value_; | 282 std::string value_; |
299 DISALLOW_COPY_AND_ASSIGN(WebRequestSetRequestHeaderAction); | 283 DISALLOW_COPY_AND_ASSIGN(WebRequestSetRequestHeaderAction); |
300 }; | 284 }; |
301 | 285 |
302 // Action that instructs to remove a request header. | 286 // Action that instructs to remove a request header. |
303 class WebRequestRemoveRequestHeaderAction : public WebRequestAction { | 287 class WebRequestRemoveRequestHeaderAction : public WebRequestAction { |
304 public: | 288 public: |
305 explicit WebRequestRemoveRequestHeaderAction(const std::string& name); | 289 explicit WebRequestRemoveRequestHeaderAction(const std::string& name); |
306 virtual ~WebRequestRemoveRequestHeaderAction(); | 290 virtual ~WebRequestRemoveRequestHeaderAction(); |
307 | 291 |
308 // Implementation of WebRequestAction: | 292 // Implementation of WebRequestAction: |
309 virtual int GetStages() const OVERRIDE; | 293 virtual int GetStages() const OVERRIDE; |
310 virtual Type GetType() const OVERRIDE; | 294 virtual Type GetType() const OVERRIDE; |
311 virtual LinkedPtrEventResponseDelta CreateDelta( | 295 virtual LinkedPtrEventResponseDelta CreateDelta( |
312 net::URLRequest* request, | 296 const WebRequestRule::RequestData& request_data, |
313 RequestStages request_stage, | |
314 const WebRequestRule::OptionalRequestData& optional_request_data, | |
315 const std::string& extension_id, | 297 const std::string& extension_id, |
316 const base::Time& extension_install_time) const OVERRIDE; | 298 const base::Time& extension_install_time) const OVERRIDE; |
317 | 299 |
318 private: | 300 private: |
319 std::string name_; | 301 std::string name_; |
320 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveRequestHeaderAction); | 302 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveRequestHeaderAction); |
321 }; | 303 }; |
322 | 304 |
323 // Action that instructs to add a response header. | 305 // Action that instructs to add a response header. |
324 class WebRequestAddResponseHeaderAction : public WebRequestAction { | 306 class WebRequestAddResponseHeaderAction : public WebRequestAction { |
325 public: | 307 public: |
326 WebRequestAddResponseHeaderAction(const std::string& name, | 308 WebRequestAddResponseHeaderAction(const std::string& name, |
327 const std::string& value); | 309 const std::string& value); |
328 virtual ~WebRequestAddResponseHeaderAction(); | 310 virtual ~WebRequestAddResponseHeaderAction(); |
329 | 311 |
330 // Implementation of WebRequestAction: | 312 // Implementation of WebRequestAction: |
331 virtual int GetStages() const OVERRIDE; | 313 virtual int GetStages() const OVERRIDE; |
332 virtual Type GetType() const OVERRIDE; | 314 virtual Type GetType() const OVERRIDE; |
333 virtual LinkedPtrEventResponseDelta CreateDelta( | 315 virtual LinkedPtrEventResponseDelta CreateDelta( |
334 net::URLRequest* request, | 316 const WebRequestRule::RequestData& request_data, |
335 RequestStages request_stage, | |
336 const WebRequestRule::OptionalRequestData& optional_request_data, | |
337 const std::string& extension_id, | 317 const std::string& extension_id, |
338 const base::Time& extension_install_time) const OVERRIDE; | 318 const base::Time& extension_install_time) const OVERRIDE; |
339 | 319 |
340 private: | 320 private: |
341 std::string name_; | 321 std::string name_; |
342 std::string value_; | 322 std::string value_; |
343 DISALLOW_COPY_AND_ASSIGN(WebRequestAddResponseHeaderAction); | 323 DISALLOW_COPY_AND_ASSIGN(WebRequestAddResponseHeaderAction); |
344 }; | 324 }; |
345 | 325 |
346 // Action that instructs to remove a response header. | 326 // Action that instructs to remove a response header. |
347 class WebRequestRemoveResponseHeaderAction : public WebRequestAction { | 327 class WebRequestRemoveResponseHeaderAction : public WebRequestAction { |
348 public: | 328 public: |
349 explicit WebRequestRemoveResponseHeaderAction(const std::string& name, | 329 explicit WebRequestRemoveResponseHeaderAction(const std::string& name, |
350 const std::string& value, | 330 const std::string& value, |
351 bool has_value); | 331 bool has_value); |
352 virtual ~WebRequestRemoveResponseHeaderAction(); | 332 virtual ~WebRequestRemoveResponseHeaderAction(); |
353 | 333 |
354 // Implementation of WebRequestAction: | 334 // Implementation of WebRequestAction: |
355 virtual int GetStages() const OVERRIDE; | 335 virtual int GetStages() const OVERRIDE; |
356 virtual Type GetType() const OVERRIDE; | 336 virtual Type GetType() const OVERRIDE; |
357 virtual LinkedPtrEventResponseDelta CreateDelta( | 337 virtual LinkedPtrEventResponseDelta CreateDelta( |
358 net::URLRequest* request, | 338 const WebRequestRule::RequestData& request_data, |
359 RequestStages request_stage, | |
360 const WebRequestRule::OptionalRequestData& optional_request_data, | |
361 const std::string& extension_id, | 339 const std::string& extension_id, |
362 const base::Time& extension_install_time) const OVERRIDE; | 340 const base::Time& extension_install_time) const OVERRIDE; |
363 | 341 |
364 private: | 342 private: |
365 std::string name_; | 343 std::string name_; |
366 std::string value_; | 344 std::string value_; |
367 bool has_value_; | 345 bool has_value_; |
368 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveResponseHeaderAction); | 346 DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveResponseHeaderAction); |
369 }; | 347 }; |
370 | 348 |
371 // Action that instructs to ignore rules below a certain priority. | 349 // Action that instructs to ignore rules below a certain priority. |
372 class WebRequestIgnoreRulesAction : public WebRequestAction { | 350 class WebRequestIgnoreRulesAction : public WebRequestAction { |
373 public: | 351 public: |
374 explicit WebRequestIgnoreRulesAction(int minimum_priority); | 352 explicit WebRequestIgnoreRulesAction(int minimum_priority); |
375 virtual ~WebRequestIgnoreRulesAction(); | 353 virtual ~WebRequestIgnoreRulesAction(); |
376 | 354 |
377 // Implementation of WebRequestAction: | 355 // Implementation of WebRequestAction: |
378 virtual int GetStages() const OVERRIDE; | 356 virtual int GetStages() const OVERRIDE; |
379 virtual Type GetType() const OVERRIDE; | 357 virtual Type GetType() const OVERRIDE; |
380 virtual int GetMinimumPriority() const OVERRIDE; | 358 virtual int GetMinimumPriority() const OVERRIDE; |
381 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; | 359 virtual bool ShouldEnforceHostPermissions() const OVERRIDE; |
382 virtual LinkedPtrEventResponseDelta CreateDelta( | 360 virtual LinkedPtrEventResponseDelta CreateDelta( |
383 net::URLRequest* request, | 361 const WebRequestRule::RequestData& request_data, |
384 RequestStages request_stage, | |
385 const WebRequestRule::OptionalRequestData& optional_request_data, | |
386 const std::string& extension_id, | 362 const std::string& extension_id, |
387 const base::Time& extension_install_time) const OVERRIDE; | 363 const base::Time& extension_install_time) const OVERRIDE; |
388 | 364 |
389 private: | 365 private: |
390 int minimum_priority_; | 366 int minimum_priority_; |
391 DISALLOW_COPY_AND_ASSIGN(WebRequestIgnoreRulesAction); | 367 DISALLOW_COPY_AND_ASSIGN(WebRequestIgnoreRulesAction); |
392 }; | 368 }; |
393 | 369 |
394 // Action that instructs to modify (add, edit, remove) a request cookie. | 370 // Action that instructs to modify (add, edit, remove) a request cookie. |
395 class WebRequestRequestCookieAction : public WebRequestAction { | 371 class WebRequestRequestCookieAction : public WebRequestAction { |
396 public: | 372 public: |
397 typedef extension_web_request_api_helpers::RequestCookieModification | 373 typedef extension_web_request_api_helpers::RequestCookieModification |
398 RequestCookieModification; | 374 RequestCookieModification; |
399 | 375 |
400 explicit WebRequestRequestCookieAction( | 376 explicit WebRequestRequestCookieAction( |
401 linked_ptr<RequestCookieModification> request_cookie_modification); | 377 linked_ptr<RequestCookieModification> request_cookie_modification); |
402 virtual ~WebRequestRequestCookieAction(); | 378 virtual ~WebRequestRequestCookieAction(); |
403 | 379 |
404 // Implementation of WebRequestAction: | 380 // Implementation of WebRequestAction: |
405 virtual int GetStages() const OVERRIDE; | 381 virtual int GetStages() const OVERRIDE; |
406 virtual Type GetType() const OVERRIDE; | 382 virtual Type GetType() const OVERRIDE; |
407 virtual LinkedPtrEventResponseDelta CreateDelta( | 383 virtual LinkedPtrEventResponseDelta CreateDelta( |
408 net::URLRequest* request, | 384 const WebRequestRule::RequestData& request_data, |
409 RequestStages request_stage, | |
410 const WebRequestRule::OptionalRequestData& optional_request_data, | |
411 const std::string& extension_id, | 385 const std::string& extension_id, |
412 const base::Time& extension_install_time) const OVERRIDE; | 386 const base::Time& extension_install_time) const OVERRIDE; |
413 | 387 |
414 private: | 388 private: |
415 linked_ptr<RequestCookieModification> request_cookie_modification_; | 389 linked_ptr<RequestCookieModification> request_cookie_modification_; |
416 DISALLOW_COPY_AND_ASSIGN(WebRequestRequestCookieAction); | 390 DISALLOW_COPY_AND_ASSIGN(WebRequestRequestCookieAction); |
417 }; | 391 }; |
418 | 392 |
419 // Action that instructs to modify (add, edit, remove) a response cookie. | 393 // Action that instructs to modify (add, edit, remove) a response cookie. |
420 class WebRequestResponseCookieAction : public WebRequestAction { | 394 class WebRequestResponseCookieAction : public WebRequestAction { |
421 public: | 395 public: |
422 typedef extension_web_request_api_helpers::ResponseCookieModification | 396 typedef extension_web_request_api_helpers::ResponseCookieModification |
423 ResponseCookieModification; | 397 ResponseCookieModification; |
424 | 398 |
425 explicit WebRequestResponseCookieAction( | 399 explicit WebRequestResponseCookieAction( |
426 linked_ptr<ResponseCookieModification> response_cookie_modification); | 400 linked_ptr<ResponseCookieModification> response_cookie_modification); |
427 virtual ~WebRequestResponseCookieAction(); | 401 virtual ~WebRequestResponseCookieAction(); |
428 | 402 |
429 // Implementation of WebRequestAction: | 403 // Implementation of WebRequestAction: |
430 virtual int GetStages() const OVERRIDE; | 404 virtual int GetStages() const OVERRIDE; |
431 virtual Type GetType() const OVERRIDE; | 405 virtual Type GetType() const OVERRIDE; |
432 virtual LinkedPtrEventResponseDelta CreateDelta( | 406 virtual LinkedPtrEventResponseDelta CreateDelta( |
433 net::URLRequest* request, | 407 const WebRequestRule::RequestData& request_data, |
434 RequestStages request_stage, | |
435 const WebRequestRule::OptionalRequestData& optional_request_data, | |
436 const std::string& extension_id, | 408 const std::string& extension_id, |
437 const base::Time& extension_install_time) const OVERRIDE; | 409 const base::Time& extension_install_time) const OVERRIDE; |
438 | 410 |
439 private: | 411 private: |
440 linked_ptr<ResponseCookieModification> response_cookie_modification_; | 412 linked_ptr<ResponseCookieModification> response_cookie_modification_; |
441 DISALLOW_COPY_AND_ASSIGN(WebRequestResponseCookieAction); | 413 DISALLOW_COPY_AND_ASSIGN(WebRequestResponseCookieAction); |
442 }; | 414 }; |
443 | 415 |
444 } // namespace extensions | 416 } // namespace extensions |
445 | 417 |
446 #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTIO
N_H_ | 418 #endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTIO
N_H_ |
OLD | NEW |