From 076bca74bc87a189fe2fa3fa8d3e74438c2b7eac Mon Sep 17 00:00:00 2001 From: "tony@chromium.org" Date: Tue, 27 Sep 2011 22:13:49 +0000 Subject: Fix a crash when loading a multipart html page. When loading a multipart page, the load hasn't been committed yet so dataSource() is NULL. In that case, use the provisionalDataSource(). BUG=97592 TEST=covered by browser_tests Review URL: http://codereview.chromium.org/8044003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103027 0039d316-1c4b-4281-b951-d872f2087c98 --- net/tools/testserver/testserver.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'net/tools') diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py index 7f9e17a..0849a29 100755 --- a/net/tools/testserver/testserver.py +++ b/net/tools/testserver/testserver.py @@ -343,6 +343,7 @@ class TestPageHandler(BasePageHandler): self.ServerRedirectHandler, self.ClientRedirectHandler, self.MultipartHandler, + self.MultipartSlowHandler, self.DefaultResponseHandler] post_handlers = [ self.EchoTitleHandler, @@ -1290,7 +1291,7 @@ class TestPageHandler(BasePageHandler): def MultipartHandler(self): """Send a multipart response (10 text/html pages).""" - test_name = "/multipart" + test_name = '/multipart' if not self._ShouldHandleRequest(test_name): return False @@ -1310,6 +1311,34 @@ class TestPageHandler(BasePageHandler): self.wfile.write('--' + bound + '--') return True + def MultipartSlowHandler(self): + """Send a multipart response (3 text/html pages) with a slight delay + between each page. This is similar to how some pages show status using + multipart.""" + test_name = '/multipart-slow' + if not self._ShouldHandleRequest(test_name): + return False + + num_frames = 3 + bound = '12345' + self.send_response(200) + self.send_header('Content-type', + 'multipart/x-mixed-replace;boundary=' + bound) + self.end_headers() + + for i in xrange(num_frames): + self.wfile.write('--' + bound + '\r\n') + self.wfile.write('Content-type: text/html\r\n\r\n') + time.sleep(0.25) + if i == 2: + self.wfile.write('PASS') + else: + self.wfile.write('page ' + str(i) + '') + self.wfile.write('page ' + str(i) + '') + + self.wfile.write('--' + bound + '--') + return True + def DefaultResponseHandler(self): """This is the catch-all response handler for requests that aren't handled by one of the special handlers above. -- cgit v1.1