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.