| Index: net/websockets/websocket_extension_parser.cc
|
| diff --git a/net/websockets/websocket_extension_parser.cc b/net/websockets/websocket_extension_parser.cc
|
| deleted file mode 100644
|
| index 28a2db16f2775e3410a47e35d51ea12792f63682..0000000000000000000000000000000000000000
|
| --- a/net/websockets/websocket_extension_parser.cc
|
| +++ /dev/null
|
| @@ -1,158 +0,0 @@
|
| -// Copyright 2013 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.
|
| -
|
| -#include "net/websockets/websocket_extension_parser.h"
|
| -
|
| -#include "base/strings/string_util.h"
|
| -
|
| -namespace net {
|
| -
|
| -WebSocketExtensionParser::WebSocketExtensionParser() {}
|
| -
|
| -WebSocketExtensionParser::~WebSocketExtensionParser() {}
|
| -
|
| -void WebSocketExtensionParser::Parse(const char* data, size_t size) {
|
| - current_ = data;
|
| - end_ = data + size;
|
| - has_error_ = false;
|
| -
|
| - ConsumeExtension(&extension_);
|
| - if (has_error_) return;
|
| - ConsumeSpaces();
|
| - has_error_ = has_error_ || (current_ != end_);
|
| -}
|
| -
|
| -void WebSocketExtensionParser::Consume(char c) {
|
| - DCHECK(!has_error_);
|
| - ConsumeSpaces();
|
| - DCHECK(!has_error_);
|
| - if (current_ == end_ || c != current_[0]) {
|
| - has_error_ = true;
|
| - return;
|
| - }
|
| - ++current_;
|
| -}
|
| -
|
| -void WebSocketExtensionParser::ConsumeExtension(WebSocketExtension* extension) {
|
| - DCHECK(!has_error_);
|
| - base::StringPiece name;
|
| - ConsumeToken(&name);
|
| - if (has_error_) return;
|
| - *extension = WebSocketExtension(name.as_string());
|
| -
|
| - while (ConsumeIfMatch(';')) {
|
| - WebSocketExtension::Parameter parameter((std::string()));
|
| - ConsumeExtensionParameter(¶meter);
|
| - if (has_error_) return;
|
| - extension->Add(parameter);
|
| - }
|
| -}
|
| -
|
| -void WebSocketExtensionParser::ConsumeExtensionParameter(
|
| - WebSocketExtension::Parameter* parameter) {
|
| - DCHECK(!has_error_);
|
| - base::StringPiece name, value;
|
| - std::string value_string;
|
| -
|
| - ConsumeToken(&name);
|
| - if (has_error_) return;
|
| - if (!ConsumeIfMatch('=')) {
|
| - *parameter = WebSocketExtension::Parameter(name.as_string());
|
| - return;
|
| - }
|
| -
|
| - if (Lookahead('\"')) {
|
| - ConsumeQuotedToken(&value_string);
|
| - } else {
|
| - ConsumeToken(&value);
|
| - value_string = value.as_string();
|
| - }
|
| - if (has_error_) return;
|
| - *parameter = WebSocketExtension::Parameter(name.as_string(), value_string);
|
| -}
|
| -
|
| -void WebSocketExtensionParser::ConsumeToken(base::StringPiece* token) {
|
| - DCHECK(!has_error_);
|
| - ConsumeSpaces();
|
| - DCHECK(!has_error_);
|
| - const char* head = current_;
|
| - while (current_ < end_ &&
|
| - !IsControl(current_[0]) && !IsSeparator(current_[0]))
|
| - ++current_;
|
| - if (current_ == head) {
|
| - has_error_ = true;
|
| - return;
|
| - }
|
| - *token = base::StringPiece(head, current_ - head);
|
| -}
|
| -
|
| -void WebSocketExtensionParser::ConsumeQuotedToken(std::string* token) {
|
| - DCHECK(!has_error_);
|
| - Consume('"');
|
| - if (has_error_) return;
|
| - *token = "";
|
| - while (current_ < end_ && !IsControl(current_[0])) {
|
| - if (UnconsumedBytes() >= 2 && current_[0] == '\\') {
|
| - char next = current_[1];
|
| - if (IsControl(next) || IsSeparator(next)) break;
|
| - *token += next;
|
| - current_ += 2;
|
| - } else if (IsSeparator(current_[0])) {
|
| - break;
|
| - } else {
|
| - *token += current_[0];
|
| - ++current_;
|
| - }
|
| - }
|
| - // We can't use Consume here because we don't want to consume spaces.
|
| - if (current_ < end_ && current_[0] == '"')
|
| - ++current_;
|
| - else
|
| - has_error_ = true;
|
| - has_error_ = has_error_ || token->empty();
|
| -}
|
| -
|
| -void WebSocketExtensionParser::ConsumeSpaces() {
|
| - DCHECK(!has_error_);
|
| - while (current_ < end_ && (current_[0] == ' ' || current_[0] == '\t'))
|
| - ++current_;
|
| - return;
|
| -}
|
| -
|
| -bool WebSocketExtensionParser::Lookahead(char c) {
|
| - DCHECK(!has_error_);
|
| - const char* head = current_;
|
| -
|
| - Consume(c);
|
| - bool result = !has_error_;
|
| - current_ = head;
|
| - has_error_ = false;
|
| - return result;
|
| -}
|
| -
|
| -bool WebSocketExtensionParser::ConsumeIfMatch(char c) {
|
| - DCHECK(!has_error_);
|
| - const char* head = current_;
|
| -
|
| - Consume(c);
|
| - if (has_error_) {
|
| - current_ = head;
|
| - has_error_ = false;
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -// static
|
| -bool WebSocketExtensionParser::IsControl(char c) {
|
| - return (0 <= c && c <= 31) || c == 127;
|
| -}
|
| -
|
| -// static
|
| -bool WebSocketExtensionParser::IsSeparator(char c) {
|
| - const char separators[] = "()<>@,;:\\\"/[]?={} \t";
|
| - return strchr(separators, c) != NULL;
|
| -}
|
| -
|
| -} // namespace net
|
|
|