@@ -7,6 +7,14 @@ window.templates.network || (window.templates.network = {});
77
88var HTTP_BOUNDARY_CLASS = "http-token-type-boundary" ;
99var TEXT_TYPES = [ "markup" , "script" , "css" , "text" ] ;
10+ var LOCAL_URL_TYPES = [
11+ cls . ResourceManager [ "1.2" ] . UrlLoad . URLType . FILE ,
12+ cls . ResourceManager [ "1.2" ] . UrlLoad . URLType . DATA
13+ ] ;
14+ var HIGHLIGHTED_TYPES = [
15+ cls . HTTPHeaderTokenizer . types . NAME ,
16+ cls . HTTPHeaderTokenizer . types . FIRST_LINE_PART
17+ ] ;
1018
1119templates . _pre = function ( content )
1220{
@@ -37,40 +45,35 @@ templates._details_content = function(entry, do_raw)
3745
3846templates . _details_headline = function ( entry )
3947{
40- var responsecode = entry . current_responsecode ;
41- if ( responsecode && responsecode in cls . ResourceUtil . http_status_codes )
42- responsecode = responsecode + " " + cls . ResourceUtil . http_status_codes [ responsecode ] ;
48+ var response_code = entry . current_responsecode ;
49+ if ( response_code && response_code in cls . ResourceUtil . http_status_codes )
50+ response_code = response_code + " " + cls . ResourceUtil . http_status_codes [ response_code ] ;
4351
4452 var response_summary = [ ] ;
45- if ( entry . touched_network && responsecode )
53+ if ( entry . touched_network && response_code )
4654 {
4755 response_summary = [
48- "p" , String ( responsecode ) ,
56+ "p" , String ( response_code ) ,
4957 "data-spec" , "http#" + entry . current_responsecode ,
5058 "class" , ( entry . error_in_current_response ? templates . ERROR_RESPONSE
5159 : "" ) + " response-summary"
5260 ] ;
5361 }
5462 else
5563 {
56- var local_url_types = [
57- cls . ResourceManager [ "1.2" ] . UrlLoad . URLType . FILE ,
58- cls . ResourceManager [ "1.2" ] . UrlLoad . URLType . DATA
59- ] ;
6064 response_summary = [
61- "p" , local_url_types . contains ( entry . urltype ) ? ui_strings . S_NETWORK_NOT_REQUESTED
62- : ui_strings . S_NETWORK_SERVED_FROM_CACHE ,
65+ "p" , LOCAL_URL_TYPES . contains ( entry . urltype ) ?
66+ ui_strings . S_NETWORK_NOT_REQUESTED : ui_strings . S_NETWORK_SERVED_FROM_CACHE ,
6367 "class" , templates . NOT_REQUESTED
6468 ] ;
6569 }
6670
6771 return [
6872 [ "p" ,
69- [
70- "span" , ( entry . current_request && entry . current_request . method + " " ) || ""
73+ [ "span" ,
74+ ( entry . current_request && entry . current_request . method + " " ) || ""
7175 ] ,
72- [
73- "span" , entry . url ,
76+ [ "span" , entry . url ,
7477 "class" , "url"
7578 ] ,
7679 "class" , "method-and-url"
@@ -112,16 +115,14 @@ templates._request = function(request, is_last, do_raw)
112115 var show_body = show_headers ;
113116
114117 return [
115- "div" , [
118+ "div" ,
116119 show_header ? templates . _headline ( false , expanded ) : [ ] ,
117120 [ "div" ,
118- [
119- show_headers ? templates . _request_headers ( request , do_raw ) : [ ] ,
120- show_body ? templates . _request_body ( request , do_raw ) : [ ]
121- ] , "class" , "foldable"
121+ show_headers ? templates . _request_headers ( request , do_raw ) : [ ] ,
122+ show_body ? templates . _request_body ( request , do_raw ) : [ ] ,
123+ "class" , "foldable"
122124 ] ,
123125 "class" , ( expanded ? "unfolded" : "" )
124- ]
125126 ] ;
126127} ;
127128
@@ -134,22 +135,20 @@ templates._response = function(response, is_last, do_raw)
134135 var show_body = expanded ;
135136
136137 return [
137- "div" , [
138+ "div" ,
138139 show_header ? this . _headline ( true , expanded ) : [ ] ,
139140 [ "div" ,
140- [
141- show_headers ? this . _response_headers ( response , do_raw ) : [ ] ,
142- show_body ? this . _response_body ( response , do_raw , is_last ) : [ ]
143- ] , "class" , "foldable"
141+ show_headers ? this . _response_headers ( response , do_raw ) : [ ] ,
142+ show_body ? this . _response_body ( response , do_raw , is_last ) : [ ] ,
143+ "class" , "foldable"
144144 ] ,
145145 "class" , ( expanded ? "unfolded" : "" )
146- ]
147146 ] ;
148147} ;
149148
150149templates . _headline = function ( is_response , is_unfolded )
151150{
152- return [
151+ var headline = [
153152 "div" ,
154153 [ "input" ,
155154 "type" , "button" ,
@@ -159,45 +158,15 @@ templates._headline = function(is_response, is_unfolded)
159158 : ui_strings . S_NETWORK_REQUEST_DETAIL_REQUEST_TITLE ,
160159 "handler" , "toggle-expand-request-response" ,
161160 "class" , "header"
162- ] . concat ( is_response ? [ "data-is-response" , "data-is-response" ] : [ ] ) ;
161+ ] ;
162+ if ( is_response )
163+ headline . push ( "data-is-response" , "data-is-response" ) ;
164+ return headline ;
163165} ;
164166
165167templates . _header_token_templ = function ( state , token )
166168{
167- var TYPE = 0 ;
168- var STR = 1 ;
169- var highlighted_types = [
170- cls . HTTPHeaderTokenizer . types . NAME ,
171- cls . HTTPHeaderTokenizer . types . FIRST_LINE_PART
172- ] ;
173- var attrs = [ "class" , cls . HTTPHeaderTokenizer . classnames [ token [ TYPE ] ] ] ;
174-
175- if ( highlighted_types . indexOf ( token [ TYPE ] ) != - 1 )
176- {
177- if ( token [ TYPE ] === cls . HTTPHeaderTokenizer . types . NAME )
178- {
179- attrs . extend ( [ "data-spec" , "http#" + token [ STR ] . trim ( ) ] ) ;
180- }
181- else if ( token [ TYPE ] === cls . HTTPHeaderTokenizer . types . FIRST_LINE_PART )
182- {
183- if ( state . data_spec_firstline_tokens . contains ( state . firstline_tokens ) )
184- {
185- // Add data-spec attributes on certain firstline tokens, tracked in state
186- attrs . extend ( [ "data-spec" , "http#" + ( token [ STR ] ) . trim ( ) ] ) ;
187- }
188- state . firstline_tokens ++ ;
189- }
190- var buffer = state . str_buffer ;
191- var ret = [ [ "span" , token [ STR ] ] . concat ( attrs ) ] ;
192- if ( buffer )
193- {
194- ret . unshift ( buffer ) ;
195- state . str_buffer = "" ;
196- }
197- return ret ;
198- }
199- state . str_buffer += token [ STR ] ;
200- return [ ] ;
169+
201170} ;
202171
203172templates . _token_receiver = function ( tokens , token_type , token )
@@ -217,8 +186,7 @@ templates._request_headers = function(req, do_raw)
217186 var tokenizer = new cls . HTTPHeaderTokenizer ( ) ;
218187 tokenizer . tokenize ( req . request_headers_raw , this . _token_receiver . bind ( this , req . header_tokens ) ) ;
219188 }
220- var METHOD = 0 ;
221- return this . _pre ( this . headers_tonkenized ( req . header_tokens , [ METHOD ] ) ) ;
189+ return this . _pre ( this . headers_tonkenized ( req . header_tokens , false ) ) ;
222190 }
223191 return [ "span" , ui_strings . S_NETWORK_REQUEST_NO_HEADERS_LABEL ,
224192 "class" , templates . UI_CLASSNAME ] ;
@@ -245,27 +213,72 @@ templates._request_headers = function(req, do_raw)
245213
246214 if ( req . firstline_tokens . length )
247215 {
248- var METHOD = 0 ;
249- ret . unshift ( this . headers_tonkenized ( req . firstline_tokens , [ METHOD ] ) ) ;
216+ ret . unshift ( this . headers_tonkenized ( req . firstline_tokens , false ) ) ;
250217 }
251218 }
252219 }
253220 return templates . _pre ( ret ) ;
254221} ;
255222
256- templates . _reduce_tokens = function ( map_func , previous_val , current_val , index ) {
257- if ( index == 1 )
258- previous_val = map_func ( previous_val ) ;
259- return previous_val . concat ( map_func ( current_val ) ) ;
223+ templates . _reduce_tokens = function ( context , token , index )
224+ {
225+ var TYPE = 0 ;
226+ var STR = 1 ;
227+ var attrs = [ "class" , cls . HTTPHeaderTokenizer . classnames [ token [ TYPE ] ] ] ;
228+
229+ if ( HIGHLIGHTED_TYPES . contains ( token [ TYPE ] ) )
230+ {
231+ if ( token [ TYPE ] === cls . HTTPHeaderTokenizer . types . NAME )
232+ {
233+ attrs . push ( "data-spec" , "http#" + token [ STR ] . trim ( ) ) ;
234+ }
235+ else if ( token [ TYPE ] === cls . HTTPHeaderTokenizer . types . FIRST_LINE_PART )
236+ {
237+ if ( context . spec_tokens . contains ( context . saw_firstline_tokens ) )
238+ {
239+ attrs . push ( "data-spec" , "http#" + ( token [ STR ] ) . trim ( ) ) ;
240+ }
241+ context . saw_firstline_tokens ++ ;
242+ }
243+ if ( context . str_buffer )
244+ {
245+ context . template . push ( context . str_buffer ) ;
246+ context . str_buffer = "" ;
247+ }
248+ context . template . push ( [ "span" , token [ STR ] ] . extend ( attrs ) ) ;
249+ }
250+ else
251+ context . str_buffer += token [ STR ] ;
252+
253+ return context ;
254+ } ;
255+
256+ templates . _token_to_template_context = function ( is_response )
257+ {
258+ var spec_tokens ;
259+ if ( ! is_response )
260+ {
261+ var firstline = { METHOD : 0 , URI : 1 , HTTP_VERSION : 2 } ;
262+ spec_tokens = [ firstline . METHOD ] ;
263+ }
264+ else
265+ {
266+ var firstline = { PROTOCOL : 0 , RESPONSE_CODE : 1 , RESPONSE_PHRASE : 2 } ;
267+ spec_tokens = [ firstline . RESPONSE_CODE ] ;
268+ }
269+ this . spec_tokens = spec_tokens ;
270+ this . saw_firstline_tokens = 0 ;
271+ this . str_buffer = "" ;
272+ this . template = [ ] ;
260273} ;
261274
262- templates . headers_tonkenized = function ( tokens , data_spec_firstline_tokens )
275+ templates . headers_tonkenized = function ( tokens , is_response )
263276{
264- var state_holder = new cls . HTTPHeaderTokenizer . TokenStateholder ( data_spec_firstline_tokens ) ;
265- var map_func = this . _header_token_templ . bind ( this , state_holder ) ;
266- var token_templates = tokens . reduce ( this . _reduce_tokens . bind ( this , map_func ) ) ;
267- token_templates . push ( state_holder . str_buffer ) ;
268- return token_templates ;
277+ var context = new templates . _token_to_template_context ( is_response ) ;
278+ var template = tokens . reduce ( this . _reduce_tokens , context ) . template ;
279+ if ( context . str_buffer )
280+ template . push ( context . str_buffer ) ;
281+ return template ;
269282} ;
270283
271284templates . _response_headers = function ( resp , do_raw )
@@ -284,8 +297,7 @@ templates._response_headers = function(resp, do_raw)
284297
285298 if ( resp . header_tokens . length )
286299 {
287- var RESPONSECODE = 1 ;
288- return this . _pre ( this . headers_tonkenized ( resp . header_tokens , [ RESPONSECODE ] ) ) ;
300+ return this . _pre ( this . headers_tonkenized ( resp . header_tokens , true ) ) ;
289301 }
290302 return [ "span" , ui_strings . S_NETWORK_REQUEST_NO_HEADERS_LABEL ,
291303 "class" , templates . UI_CLASSNAME ] ;
@@ -303,10 +315,9 @@ templates._response_headers = function(resp, do_raw)
303315 }
304316
305317 if ( resp . firstline_tokens . length )
306- {
307- ret . unshift ( this . headers_tonkenized ( resp . firstline_tokens , [ RESPONSECODE ] ) ) ;
308- }
318+ ret . unshift ( this . headers_tonkenized ( resp . firstline_tokens , true ) ) ;
309319 }
320+
310321 if ( ! ret )
311322 {
312323 ret = [ "span" , ui_strings . S_NETWORK_REQUEST_NO_HEADERS_LABEL ,
@@ -318,7 +329,7 @@ templates._response_headers = function(resp, do_raw)
318329templates . _headers_pseudo_raw = function ( header )
319330{
320331 /* Shortcutting. For raw headers, highlighted types are defined like this:
321- var highlighted_types = [
332+ var HIGHLIGHTED_TYPES = [
322333 cls.HTTPHeaderTokenizer.types.NAME,
323334 cls.HTTPHeaderTokenizer.types.FIRST_LINE_PART
324335 ];
@@ -429,7 +440,8 @@ templates._request_body = function(req, do_raw)
429440 }
430441 }
431442 }
432- return [ this . _pre ( "\n" ) , templates . _pre ( ret ) ] ;
443+ var BODY_SEPARATOR = "\n" ;
444+ return [ this . _pre ( BODY_SEPARATOR ) , templates . _pre ( ret ) ] ;
433445} ;
434446
435447
0 commit comments