Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(819)

Unified Diff: chrome/browser/extensions/api/web_request/form_data_parser.h

Issue 10694055: Add read-only access to POST data for webRequest's onBeforeRequest (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: No change in code, but with a patch generated without copy detection Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/api/web_request/form_data_parser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/web_request/form_data_parser.h
diff --git a/chrome/browser/extensions/api/web_request/form_data_parser.h b/chrome/browser/extensions/api/web_request/form_data_parser.h
new file mode 100644
index 0000000000000000000000000000000000000000..928da7112ae3b00999121438c8e5cf389be6cca8
--- /dev/null
+++ b/chrome/browser/extensions/api/web_request/form_data_parser.h
@@ -0,0 +1,89 @@
+// Copyright (c) 2012 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 CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_FORM_DATA_PARSER_H_
+#define CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_FORM_DATA_PARSER_H_
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
+// Cannot forward declare StringPiece because it is a typedef.
+#include "base/string_piece.h"
+
+namespace net {
+class URLRequest;
+}
+
+namespace extensions {
+
+// Interface for the form data parsers.
+class FormDataParser {
+ public:
+ class Result {
+ public:
+ Result();
+ ~Result();
+ const std::string& name() const {
+ return name_;
+ }
+ const std::string& value() const {
+ return value_;
+ }
+ void set_name(const base::StringPiece& str) {
+ str.CopyToString(&name_);
+ }
+ void set_value(const base::StringPiece& str) {
+ str.CopyToString(&value_);
+ }
+ void set_name(const std::string& str) {
+ name_ = str;
+ }
+ void set_value(const std::string& str) {
+ value_ = str;
+ }
+ void Reset();
+
+ private:
+ std::string name_;
+ std::string value_;
+
+ DISALLOW_COPY_AND_ASSIGN(Result);
+ };
+
+ virtual ~FormDataParser();
+
+ // Creates a correct parser instance based on the |request|. Returns NULL
+ // on failure.
+ static scoped_ptr<FormDataParser> Create(const net::URLRequest* request);
+
+ // Creates a correct parser instance based on |content_type_header|, the
+ // "Content-Type" request header value. If |content_type_header| is NULL, it
+ // defaults to "application/x-www-form-urlencoded". Returns NULL on failure.
+ static scoped_ptr<FormDataParser> Create(
+ const std::string* content_type_header);
+
+ // Returns true if there was some data, it was well formed and all was read.
+ virtual bool AllDataReadOK() = 0;
+
+ // Returns the next name-value pair as |result|. After SetSource has
+ // succeeded, this allows to iterate over all pairs in the source.
+ // Returns true as long as a new pair was successfully found.
+ virtual bool GetNextNameValue(Result* result) = 0;
+
+ // Sets the |source| of the data to be parsed. The ownership is left with the
+ // caller and the source should live until |this| dies or |this->SetSource()|
+ // is called again, whichever comes sooner. Returns true on success.
+ virtual bool SetSource(const base::StringPiece& source) = 0;
+
+ protected:
+ FormDataParser();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(FormDataParser);
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_FORM_DATA_PARSER_H_
« no previous file with comments | « no previous file | chrome/browser/extensions/api/web_request/form_data_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698