summaryrefslogtreecommitdiffstats
path: root/net/tools
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-07 17:09:19 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-07 17:09:19 +0000
commit07bca6fd81dcf5589faddcc7d4a6c64aba988e54 (patch)
tree60cbea2f99db19acdee068ff80620cf7298c3001 /net/tools
parent4b6c04e2b6216c11e627f2e18add2483f990b144 (diff)
downloadchromium_src-07bca6fd81dcf5589faddcc7d4a6c64aba988e54.zip
chromium_src-07bca6fd81dcf5589faddcc7d4a6c64aba988e54.tar.gz
chromium_src-07bca6fd81dcf5589faddcc7d4a6c64aba988e54.tar.bz2
Support UTF8 in header values in webRequest API.
This support for UTF8 in header values is necessary to prevent DCHECKs and to ensure that extensions using the webRequest API don't modify headers unintentionally because the headers cannot be serialized correctly on the roundtrip between the network stack and the extension. BUG=none TEST=no Review URL: http://codereview.chromium.org/8480008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108879 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/tools')
-rwxr-xr-xnet/tools/testserver/testserver.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py
index bc7f5e1..59975c7 100755
--- a/net/tools/testserver/testserver.py
+++ b/net/tools/testserver/testserver.py
@@ -28,6 +28,7 @@ import socket
import sys
import struct
import time
+import urllib
import urlparse
import warnings
import zlib
@@ -345,6 +346,7 @@ class TestPageHandler(BasePageHandler):
self.ZipFileHandler,
self.FileHandler,
self.SetCookieHandler,
+ self.SetHeaderHandler,
self.AuthBasicHandler,
self.AuthDigestHandler,
self.SlowServerHandler,
@@ -977,6 +979,29 @@ class TestPageHandler(BasePageHandler):
self.wfile.write('%s' % cookie_value)
return True
+ def SetHeaderHandler(self):
+ """This handler sets a response header. Parameters are in the
+ key%3A%20value&key2%3A%20value2 format."""
+
+ if not self._ShouldHandleRequest("/set-header"):
+ return False
+
+ query_char = self.path.find('?')
+ if query_char != -1:
+ headers_values = self.path[query_char + 1:].split('&')
+ else:
+ headers_values = ("",)
+ self.send_response(200)
+ self.send_header('Content-Type', 'text/html')
+ for header_value in headers_values:
+ header_value = urllib.unquote(header_value)
+ (key, value) = header_value.split(': ', 1)
+ self.send_header(key, value)
+ self.end_headers()
+ for header_value in headers_values:
+ self.wfile.write('%s' % header_value)
+ return True
+
def AuthBasicHandler(self):
"""This handler tests 'Basic' authentication. It just sends a page with
title 'user/pass' if you succeed."""