OLD | NEW |
| (Empty) |
1 | |
2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |
3 <html><head><title>Python: module telemetry.web_perf.timeline_interaction_record
</title> | |
4 <meta charset="utf-8"> | |
5 </head><body bgcolor="#f0f0f8"> | |
6 | |
7 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading"> | |
8 <tr bgcolor="#7799ee"> | |
9 <td valign=bottom> <br> | |
10 <font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a hre
f="telemetry.html"><font color="#ffffff">telemetry</font></a>.<a href="telemetry
.web_perf.html"><font color="#ffffff">web_perf</font></a>.timeline_interaction_r
ecord</strong></big></big></font></td | |
11 ><td align=right valign=bottom | |
12 ><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href=
"../telemetry/web_perf/timeline_interaction_record.py">telemetry/web_perf/timeli
ne_interaction_record.py</a></font></td></tr></table> | |
13 <p><tt># Copyright 2014 The Chromium Authors.
All rights reserved.<br> | |
14 # Use of this source code is governed by
a BSD-style license that can be<br> | |
15 # found in the LICENSE file.</tt></p> | |
16 <p> | |
17 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
18 <tr bgcolor="#aa55cc"> | |
19 <td colspan=3 valign=bottom> <br> | |
20 <font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big
></font></td></tr> | |
21 | |
22 <tr><td bgcolor="#aa55cc"><tt> </tt></td><td>
</td> | |
23 <td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=t
op><a href="telemetry.decorators.html">telemetry.decorators</a><br> | |
24 </td><td width="25%" valign=top><a href="re.html">re</a><br> | |
25 </td><td width="25%" valign=top><a href="telemetry.timeline.bounds.html">telemet
ry.timeline.bounds</a><br> | |
26 </td><td width="25%" valign=top></td></tr></table></td></tr></table><p> | |
27 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
28 <tr bgcolor="#ee77aa"> | |
29 <td colspan=3 valign=bottom> <br> | |
30 <font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big
></font></td></tr> | |
31 | |
32 <tr><td bgcolor="#ee77aa"><tt> </tt></td><td>
</td> | |
33 <td width="100%"><dl> | |
34 <dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.
object</a> | |
35 </font></dt><dd> | |
36 <dl> | |
37 <dt><font face="helvetica, arial"><a href="telemetry.web_perf.timeline_interacti
on_record.html#TimelineInteractionRecord">TimelineInteractionRecord</a> | |
38 </font></dt></dl> | |
39 </dd> | |
40 <dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions
.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException<
/a>) | |
41 </font></dt><dd> | |
42 <dl> | |
43 <dt><font face="helvetica, arial"><a href="telemetry.web_perf.timeline_interacti
on_record.html#ThreadTimeRangeOverlappedException">ThreadTimeRangeOverlappedExce
ption</a> | |
44 </font></dt><dd> | |
45 <dl> | |
46 <dt><font face="helvetica, arial"><a href="telemetry.web_perf.timeline_interacti
on_record.html#NoThreadTimeDataException">NoThreadTimeDataException</a> | |
47 </font></dt></dl> | |
48 </dd> | |
49 </dl> | |
50 </dd> | |
51 </dl> | |
52 <p> | |
53 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
54 <tr bgcolor="#ffc8d8"> | |
55 <td colspan=3 valign=bottom> <br> | |
56 <font color="#000000" face="helvetica, arial"><a name="NoThreadTimeDataException
">class <strong>NoThreadTimeDataException</strong></a>(<a href="telemetry.web_pe
rf.timeline_interaction_record.html#ThreadTimeRangeOverlappedException">ThreadTi
meRangeOverlappedException</a>)</font></td></tr> | |
57 | |
58 <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td> | |
59 <td colspan=2><tt><a href="exceptions.html#Exception">Exception</a> that&nb
sp;can be thrown if there is not sufficient&n
bsp;thread time data<br> | |
60 to compute the overlapped thread time range.<br>&n
bsp;</tt></td></tr> | |
61 <tr><td> </td> | |
62 <td width="100%"><dl><dt>Method resolution order:</dt> | |
63 <dd><a href="telemetry.web_perf.timeline_interaction_record.html#NoThreadTimeDat
aException">NoThreadTimeDataException</a></dd> | |
64 <dd><a href="telemetry.web_perf.timeline_interaction_record.html#ThreadTimeRange
OverlappedException">ThreadTimeRangeOverlappedException</a></dd> | |
65 <dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd> | |
66 <dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd> | |
67 <dd><a href="__builtin__.html#object">__builtin__.object</a></dd> | |
68 </dl> | |
69 <hr> | |
70 Data descriptors inherited from <a href="telemetry.web_perf.timeline_interaction
_record.html#ThreadTimeRangeOverlappedException">ThreadTimeRangeOverlappedExcept
ion</a>:<br> | |
71 <dl><dt><strong>__weakref__</strong></dt> | |
72 <dd><tt>list of weak references to the object 
;(if defined)</tt></dd> | |
73 </dl> | |
74 <hr> | |
75 Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception<
/a>:<br> | |
76 <dl><dt><a name="NoThreadTimeDataException-__init__"><strong>__init__</strong></
a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__init__">__init__</a>
(...) initializes x; see help(type(x)) for signatu
re</tt></dd></dl> | |
77 | |
78 <hr> | |
79 Data and other attributes inherited from <a href="exceptions.html#Exception">exc
eptions.Exception</a>:<br> | |
80 <dl><dt><strong>__new__</strong> = <built-in method __new__ of type object>
;<dd><tt>T.<a href="#NoThreadTimeDataException-__new__">__new__</a>(S, ...)
-> a new <a href="__builtin__.html#object">object</a>&nb
sp;with type S, a subtype of T</tt></dl> | |
81 | |
82 <hr> | |
83 Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseEx
ception</a>:<br> | |
84 <dl><dt><a name="NoThreadTimeDataException-__delattr__"><strong>__delattr__</str
ong></a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__delattr__">__d
elattr__</a>('name') <==> del x.name</tt></dd></dl> | |
85 | |
86 <dl><dt><a name="NoThreadTimeDataException-__getattribute__"><strong>__getattrib
ute__</strong></a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__geta
ttribute__">__getattribute__</a>('name') <==> x.name</tt></dd></
dl> | |
87 | |
88 <dl><dt><a name="NoThreadTimeDataException-__getitem__"><strong>__getitem__</str
ong></a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__getitem__">__g
etitem__</a>(y) <==> x[y]</tt></dd></dl> | |
89 | |
90 <dl><dt><a name="NoThreadTimeDataException-__getslice__"><strong>__getslice__</s
trong></a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__getslice__">
__getslice__</a>(i, j) <==> x[i:j]<br> | |
91 <br> | |
92 Use of negative indices is not supported.</tt></dd
></dl> | |
93 | |
94 <dl><dt><a name="NoThreadTimeDataException-__reduce__"><strong>__reduce__</stron
g></a>(...)</dt></dl> | |
95 | |
96 <dl><dt><a name="NoThreadTimeDataException-__repr__"><strong>__repr__</strong></
a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__repr__">__repr__</a>
() <==> repr(x)</tt></dd></dl> | |
97 | |
98 <dl><dt><a name="NoThreadTimeDataException-__setattr__"><strong>__setattr__</str
ong></a>(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__setattr__">__s
etattr__</a>('name', value) <==> x.name = value</
tt></dd></dl> | |
99 | |
100 <dl><dt><a name="NoThreadTimeDataException-__setstate__"><strong>__setstate__</s
trong></a>(...)</dt></dl> | |
101 | |
102 <dl><dt><a name="NoThreadTimeDataException-__str__"><strong>__str__</strong></a>
(...)</dt><dd><tt>x.<a href="#NoThreadTimeDataException-__str__">__str__</a>()&n
bsp;<==> str(x)</tt></dd></dl> | |
103 | |
104 <dl><dt><a name="NoThreadTimeDataException-__unicode__"><strong>__unicode__</str
ong></a>(...)</dt></dl> | |
105 | |
106 <hr> | |
107 Data descriptors inherited from <a href="exceptions.html#BaseException">exceptio
ns.BaseException</a>:<br> | |
108 <dl><dt><strong>__dict__</strong></dt> | |
109 </dl> | |
110 <dl><dt><strong>args</strong></dt> | |
111 </dl> | |
112 <dl><dt><strong>message</strong></dt> | |
113 </dl> | |
114 </td></tr></table> <p> | |
115 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
116 <tr bgcolor="#ffc8d8"> | |
117 <td colspan=3 valign=bottom> <br> | |
118 <font color="#000000" face="helvetica, arial"><a name="ThreadTimeRangeOverlapped
Exception">class <strong>ThreadTimeRangeOverlappedException</strong></a>(<a href
="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr> | |
119 | |
120 <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td> | |
121 <td colspan=2><tt><a href="exceptions.html#Exception">Exception</a> that&nb
sp;can be thrown when computing overlapped thread&
nbsp;time range<br> | |
122 with other events.<br> </tt></td></tr> | |
123 <tr><td> </td> | |
124 <td width="100%"><dl><dt>Method resolution order:</dt> | |
125 <dd><a href="telemetry.web_perf.timeline_interaction_record.html#ThreadTimeRange
OverlappedException">ThreadTimeRangeOverlappedException</a></dd> | |
126 <dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd> | |
127 <dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd> | |
128 <dd><a href="__builtin__.html#object">__builtin__.object</a></dd> | |
129 </dl> | |
130 <hr> | |
131 Data descriptors defined here:<br> | |
132 <dl><dt><strong>__weakref__</strong></dt> | |
133 <dd><tt>list of weak references to the object 
;(if defined)</tt></dd> | |
134 </dl> | |
135 <hr> | |
136 Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception<
/a>:<br> | |
137 <dl><dt><a name="ThreadTimeRangeOverlappedException-__init__"><strong>__init__</
strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedException-__in
it__">__init__</a>(...) initializes x; see help(type(x))&nbs
p;for signature</tt></dd></dl> | |
138 | |
139 <hr> | |
140 Data and other attributes inherited from <a href="exceptions.html#Exception">exc
eptions.Exception</a>:<br> | |
141 <dl><dt><strong>__new__</strong> = <built-in method __new__ of type object>
;<dd><tt>T.<a href="#ThreadTimeRangeOverlappedException-__new__">__new__</a>(S,&
nbsp;...) -> a new <a href="__builtin__.html#object">obje
ct</a> with type S, a subtype of T</tt></dl> | |
142 | |
143 <hr> | |
144 Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseEx
ception</a>:<br> | |
145 <dl><dt><a name="ThreadTimeRangeOverlappedException-__delattr__"><strong>__delat
tr__</strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedExceptio
n-__delattr__">__delattr__</a>('name') <==> del x.name</tt>
</dd></dl> | |
146 | |
147 <dl><dt><a name="ThreadTimeRangeOverlappedException-__getattribute__"><strong>__
getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlapp
edException-__getattribute__">__getattribute__</a>('name') <==>
x.name</tt></dd></dl> | |
148 | |
149 <dl><dt><a name="ThreadTimeRangeOverlappedException-__getitem__"><strong>__getit
em__</strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedExceptio
n-__getitem__">__getitem__</a>(y) <==> x[y]</tt></dd></dl> | |
150 | |
151 <dl><dt><a name="ThreadTimeRangeOverlappedException-__getslice__"><strong>__gets
lice__</strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedExcept
ion-__getslice__">__getslice__</a>(i, j) <==> x[i:j]<br> | |
152 <br> | |
153 Use of negative indices is not supported.</tt></dd
></dl> | |
154 | |
155 <dl><dt><a name="ThreadTimeRangeOverlappedException-__reduce__"><strong>__reduce
__</strong></a>(...)</dt></dl> | |
156 | |
157 <dl><dt><a name="ThreadTimeRangeOverlappedException-__repr__"><strong>__repr__</
strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedException-__re
pr__">__repr__</a>() <==> repr(x)</tt></dd></dl> | |
158 | |
159 <dl><dt><a name="ThreadTimeRangeOverlappedException-__setattr__"><strong>__setat
tr__</strong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedExceptio
n-__setattr__">__setattr__</a>('name', value) <==> x.name&n
bsp;= value</tt></dd></dl> | |
160 | |
161 <dl><dt><a name="ThreadTimeRangeOverlappedException-__setstate__"><strong>__sets
tate__</strong></a>(...)</dt></dl> | |
162 | |
163 <dl><dt><a name="ThreadTimeRangeOverlappedException-__str__"><strong>__str__</st
rong></a>(...)</dt><dd><tt>x.<a href="#ThreadTimeRangeOverlappedException-__str_
_">__str__</a>() <==> str(x)</tt></dd></dl> | |
164 | |
165 <dl><dt><a name="ThreadTimeRangeOverlappedException-__unicode__"><strong>__unico
de__</strong></a>(...)</dt></dl> | |
166 | |
167 <hr> | |
168 Data descriptors inherited from <a href="exceptions.html#BaseException">exceptio
ns.BaseException</a>:<br> | |
169 <dl><dt><strong>__dict__</strong></dt> | |
170 </dl> | |
171 <dl><dt><strong>args</strong></dt> | |
172 </dl> | |
173 <dl><dt><strong>message</strong></dt> | |
174 </dl> | |
175 </td></tr></table> <p> | |
176 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
177 <tr bgcolor="#ffc8d8"> | |
178 <td colspan=3 valign=bottom> <br> | |
179 <font color="#000000" face="helvetica, arial"><a name="TimelineInteractionRecord
">class <strong>TimelineInteractionRecord</strong></a>(<a href="__builtin__.html
#object">__builtin__.object</a>)</font></td></tr> | |
180 | |
181 <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td> | |
182 <td colspan=2><tt>Represents an interaction that took p
lace during a timeline recording.<br> | |
183 <br> | |
184 As a page runs, typically a number of di
fferent (simulated) user interactions<br> | |
185 take place. For instance, a user might click&
nbsp;a button in a mail app causing a<br> | |
186 popup to animate in. Then they might press&nb
sp;another button that sends data to a<br> | |
187 server and simultaneously closes the popup without
an animation. These are two<br> | |
188 interactions.<br> | |
189 <br> | |
190 From the point of view of the page, each
interaction might have a different<br> | |
191 label: ClickComposeButton and SendEmail, for instance.&
nbsp;From the point<br> | |
192 of view of the benchmarking harness, the labe
ls aren't so interesting as what<br> | |
193 the performance expectations are for that interact
ion: was it loading<br> | |
194 resources from the network? was there an anim
ation?<br> | |
195 <br> | |
196 Determining these things is hard to do, simpl
y by observing the state given to<br> | |
197 a page from javascript. There are hints, for&
nbsp;instance if network requests are<br> | |
198 sent, or if a CSS animation is pending.
But this is by no means a complete<br> | |
199 story.<br> | |
200 <br> | |
201 Instead, we expect pages to mark up the
timeline what they are doing, with<br> | |
202 label and flags indicating the semantics of t
hat interaction. This<br> | |
203 is currently done by pushing markers into the
console.time/timeEnd API: this<br> | |
204 for instance can be issued in JS:<br> | |
205 <br> | |
206 var str = 'Interaction.SendEmail';<br> | |
207 console.time(str);<br> | |
208 setTimeout(function() {<br> | |
209 console.timeEnd(str);<br> | |
210 }, 1000);<br> | |
211 <br> | |
212 When run with perf.measurements.timeline_based_measurement r
unning, this will<br> | |
213 then cause a <a href="#TimelineInteractionRecord">TimelineInterac
tionRecord</a> to be created for this range w
ith<br> | |
214 all metrics reported for the marked up 1000ms
time-range.<br> | |
215 <br> | |
216 The valid interaction flags are:<br> | |
217 * repeatable: Allows other interactions&nb
sp;to use the same label<br> </tt></td></tr> | |
218 <tr><td> </td> | |
219 <td width="100%">Methods defined here:<br> | |
220 <dl><dt><a name="TimelineInteractionRecord-GetBounds"><strong>GetBounds</strong>
</a>(*args, **kwargs)</dt></dl> | |
221 | |
222 <dl><dt><a name="TimelineInteractionRecord-GetOverlappedThreadTimeForSlice"><str
ong>GetOverlappedThreadTimeForSlice</strong></a>(self, timeline_slice)</dt><dd><
tt>Get the thread duration of timeline_slice that&
nbsp;overlaps with this record.<br> | |
223 <br> | |
224 There are two cases :<br> | |
225 <br> | |
226 Case 1: timeline_slice runs in the same threa
d as the record.<br> | |
227 <br> | |
228 &n
bsp;| [ timeline
_slice ]<br> | |
229 THREAD 1 |
|&
nbsp; &nb
sp;  
; |<br> | |
230 &n
bsp;| rec
ord starts  
; record ends<br> | |
231 <br> | |
232 &n
bsp; (relative order in thread time)<
br> | |
233 <br> | |
234 As the thread timestamps in timeline_slice&
nbsp;and record are consistent, we<br> | |
235 simply use them to compute the overlap
.<br> | |
236 <br> | |
237 Case 2: timeline_slice runs in a different th
read from the record's.<br> | |
238 <br> | |
239 &n
bsp;|<br> | |
240 THREAD 2 | [ 
; timeline_slice  
; ]<br> | |
241 &n
bsp;|<br> | |
242 <br> | |
243 &n
bsp;|<br> | |
244 THREAD 1 |
| &
nbsp; &nb
sp;  
; |<br> | |
245 &n
bsp;| record sta
rts  
; record ends<br> | |
246 <br> | |
247 &n
bsp; (relative order in wall-time)<br> | |
248 <br> | |
249 Unlike case 1, thread timestamps of a&
nbsp;thread are measured by its<br> | |
250 thread-specific clock, which is inconsistent&nbs
p;with that of the other<br> | |
251 thread, and thus can't be used to 
;compute the overlapped thread duration.<br> | |
252 Hence, we use a heuristic to compute&n
bsp;the overlap (see<br> | |
253 _GetOverlappedThreadTimeForSliceInDifferentThread for more
details)<br> | |
254 <br> | |
255 Args:<br> | |
256 timeline_slice: An instance of telemetry.timelin
e.slice.Slice</tt></dd></dl> | |
257 | |
258 <dl><dt><a name="TimelineInteractionRecord-__init__"><strong>__init__</strong></
a>(self, label, start, end, async_event<font color="#909090">=None</font>, flags
<font color="#909090">=None</font>)</dt></dl> | |
259 | |
260 <dl><dt><a name="TimelineInteractionRecord-__repr__"><strong>__repr__</strong></
a>(self)</dt></dl> | |
261 | |
262 <hr> | |
263 Class methods defined here:<br> | |
264 <dl><dt><a name="TimelineInteractionRecord-FromAsyncEvent"><strong>FromAsyncEven
t</strong></a>(cls, async_event)<font color="#909090"><font face="helvetica, ari
al"> from <a href="__builtin__.html#type">__builtin__.type</a></font></font></dt
><dd><tt>Construct an timeline_interaction_record from an&nb
sp;async event.<br> | |
265 Args:<br> | |
266 async_event: An instance of<br> | |
267 telemetry.timeline.async_slices.AsyncSlice</tt></dd></dl
> | |
268 | |
269 <hr> | |
270 Data descriptors defined here:<br> | |
271 <dl><dt><strong>__dict__</strong></dt> | |
272 <dd><tt>dictionary for instance variables (if defined)<
/tt></dd> | |
273 </dl> | |
274 <dl><dt><strong>__weakref__</strong></dt> | |
275 <dd><tt>list of weak references to the object 
;(if defined)</tt></dd> | |
276 </dl> | |
277 <dl><dt><strong>end</strong></dt> | |
278 </dl> | |
279 <dl><dt><strong>label</strong></dt> | |
280 </dl> | |
281 <dl><dt><strong>repeatable</strong></dt> | |
282 </dl> | |
283 <dl><dt><strong>start</strong></dt> | |
284 </dl> | |
285 </td></tr></table></td></tr></table><p> | |
286 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
287 <tr bgcolor="#eeaa77"> | |
288 <td colspan=3 valign=bottom> <br> | |
289 <font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></b
ig></font></td></tr> | |
290 | |
291 <tr><td bgcolor="#eeaa77"><tt> </tt></td><td>
</td> | |
292 <td width="100%"><dl><dt><a name="-GetJavaScriptMarker"><strong>GetJavaScriptMar
ker</strong></a>(label, flags)</dt><dd><tt>Computes the marker st
ring of an interaction record.<br> | |
293 <br> | |
294 This marker string can be used with JavaScrip
t API console.time()<br> | |
295 and console.timeEnd() to mark the beginning and&nb
sp;end of the<br> | |
296 interaction record..<br> | |
297 <br> | |
298 Args:<br> | |
299 label: The label used to identify the&
nbsp;interaction record.<br> | |
300 flags: the flags for the interaction r
ecord see FLAGS above.<br> | |
301 <br> | |
302 Returns:<br> | |
303 The interaction record marker string (e.g.,
Interaction.Label/flag1,flag2).<br> | |
304 <br> | |
305 Raises:<br> | |
306 AssertionError: If one or more of the&
nbsp;flags is unrecognized.</tt></dd></dl> | |
307 <dl><dt><a name="-IsTimelineInteractionRecord"><strong>IsTimelineInteractionRec
ord</strong></a>(event_name)</dt></dl> | |
308 </td></tr></table><p> | |
309 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section"> | |
310 <tr bgcolor="#55aa55"> | |
311 <td colspan=3 valign=bottom> <br> | |
312 <font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></
font></td></tr> | |
313 | |
314 <tr><td bgcolor="#55aa55"><tt> </tt></td><td>
</td> | |
315 <td width="100%"><strong>FLAGS</strong> = ['repeatable']<br> | |
316 <strong>REPEATABLE</strong> = 'repeatable'</td></tr></table> | |
317 </body></html> | |
OLD | NEW |