OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- | 2 <!-- |
3 Copyright (c) 2013 The Chromium Authors. All rights reserved. | 3 Copyright (c) 2013 The Chromium Authors. All rights reserved. |
4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
5 found in the LICENSE file. | 5 found in the LICENSE file. |
6 --> | 6 --> |
7 | 7 |
8 <link rel="import" href="/tracing/extras/importer/jszip.html"> | 8 <link rel="import" href="/tracing/extras/importer/jszip.html"> |
9 <link rel="import" href="/tracing/importer/importer.html"> | 9 <link rel="import" href="/tracing/importer/importer.html"> |
10 <link rel="import" href="/tracing/model/model.html"> | 10 <link rel="import" href="/tracing/model/model.html"> |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
106 if (have_file_name) | 106 if (have_file_name) |
107 skipZeroTerminatedString(); | 107 skipZeroTerminatedString(); |
108 if (have_comment) | 108 if (have_comment) |
109 skipZeroTerminatedString(); | 109 skipZeroTerminatedString(); |
110 if (have_header_crc) | 110 if (have_header_crc) |
111 getWord(); | 111 getWord(); |
112 | 112 |
113 // Inflate the data using jszip. | 113 // Inflate the data using jszip. |
114 var inflated_data = | 114 var inflated_data = |
115 JSZip.compressions['DEFLATE'].uncompress(data.subarray(position)); | 115 JSZip.compressions['DEFLATE'].uncompress(data.subarray(position)); |
116 return JSZip.utils.transformTo('string', inflated_data); | 116 return GzipImporter.transformToString_(inflated_data); |
117 }, | 117 }; |
118 | |
119 /** | |
120 * Transforms an array-like object to a string. | |
121 * | |
122 * Note that the following two expressions yield identical results: | |
123 * | |
124 * GzipImporter.transformToString_(data) | |
125 * JSZip.utils.transformTo('string', data) | |
126 * | |
127 * We use a custom static method because it is faster and, more importantly, | |
128 * avoids OOMing on large traces. See | |
129 * https://github.com/catapult-project/catapult/issues/2051. | |
130 */ | |
131 GzipImporter.transformToString_ = function(data) { | |
132 var type = JSZip.utils.getTypeOf(data); | |
Sami
2016/02/25 14:44:54
Is it worth having a fallback to JSZip if TextDeco
petrcermak
2016/02/25 15:22:41
Done.
| |
133 if (type === 'string') | |
134 return data; // We already have a string. | |
135 | |
136 if (type === 'array') { | |
137 // TextDecoder requires an ArrayBuffer or an ArrayBufferView. | |
138 data = new Uint8Array(data); | |
139 } | |
140 | |
141 var decoder = new TextDecoder('utf-8'); | |
142 return decoder.decode(data); | |
143 }; | |
118 | 144 |
119 GzipImporter.prototype = { | 145 GzipImporter.prototype = { |
120 __proto__: tr.importer.Importer.prototype, | 146 __proto__: tr.importer.Importer.prototype, |
121 | 147 |
122 get importerName() { | 148 get importerName() { |
123 return 'GzipImporter'; | 149 return 'GzipImporter'; |
124 }, | 150 }, |
125 | 151 |
126 /** | 152 /** |
127 * Called by the Model to check whether the importer just encapsulates | 153 * Called by the Model to check whether the importer just encapsulates |
(...skipping 13 matching lines...) Expand all Loading... | |
141 } | 167 } |
142 }; | 168 }; |
143 | 169 |
144 tr.importer.Importer.register(GzipImporter); | 170 tr.importer.Importer.register(GzipImporter); |
145 | 171 |
146 return { | 172 return { |
147 GzipImporter: GzipImporter | 173 GzipImporter: GzipImporter |
148 }; | 174 }; |
149 }); | 175 }); |
150 </script> | 176 </script> |
OLD | NEW |