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: http://src.chromium.org/svn/trunk/src/net/tools/testserver@103027 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
diff --git a/testserver.py b/testserver.py
index 7f9e17a..0849a29 100755
--- a/testserver.py
+++ b/testserver.py
@@ -343,6 +343,7 @@
self.ServerRedirectHandler,
self.ClientRedirectHandler,
self.MultipartHandler,
+ self.MultipartSlowHandler,
self.DefaultResponseHandler]
post_handlers = [
self.EchoTitleHandler,
@@ -1290,7 +1291,7 @@
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 @@
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('<title>PASS</title>')
+ else:
+ self.wfile.write('<title>page ' + str(i) + '</title>')
+ self.wfile.write('page ' + str(i) + '<!-- ' + ('x' * 2048) + '-->')
+
+ 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.