Support Safari 6.1 stack traces with blank lines in pkg/stack_trace.

R=rnystrom@google.com
BUG=

Review URL: https://codereview.chromium.org//136693006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/stack_trace@31756 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/stack_trace/lib/src/trace.dart b/pkgs/stack_trace/lib/src/trace.dart
index 45cb42c..21e8afc 100644
--- a/pkgs/stack_trace/lib/src/trace.dart
+++ b/pkgs/stack_trace/lib/src/trace.dart
@@ -164,6 +164,7 @@
   /// Parses a string representation of a Safari 6.1+ stack trace.
   Trace.parseSafari6_1(String trace)
       : this(trace.trim().split("\n")
+          .where((line) => line.isNotEmpty)
           .map((line) => new Frame.parseSafari6_1(line)));
 
   /// Parses a string representation of a Safari 6.0 stack trace.
diff --git a/pkgs/stack_trace/test/trace_test.dart b/pkgs/stack_trace/test/trace_test.dart
index 4c3278f..eeeff28 100644
--- a/pkgs/stack_trace/test/trace_test.dart
+++ b/pkgs/stack_trace/test/trace_test.dart
@@ -160,6 +160,21 @@
           equals(Uri.parse("http://pub.dartlang.org/thing.js")));
     });
 
+    test('parses a Safari 6.1 stack trace with an empty line correctly', () {
+      var trace = new Trace.parse(
+          'http://pub.dartlang.org/stuff.js:42:43\n'
+          '\n'
+          'zip@http://pub.dartlang.org/stuff.js:0:1\n'
+          'zip\$zap@http://pub.dartlang.org/thing.js:1:2');
+
+      expect(trace.frames[0].uri,
+          equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
+      expect(trace.frames[1].uri,
+          equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
+      expect(trace.frames[2].uri,
+          equals(Uri.parse("http://pub.dartlang.org/thing.js")));
+    });
+
     test('parses a package:stack_trace stack trace correctly', () {
       var trace = new Trace.parse(
           'http://dartlang.org/foo/bar.dart 10:11  Foo.<fn>.bar\n'