summaryrefslogtreecommitdiffstats
path: root/Tools/iExploder/htdocs
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/iExploder/htdocs')
-rw-r--r--Tools/iExploder/htdocs/config.rb6
-rw-r--r--Tools/iExploder/htdocs/cssproperties.in426
-rw-r--r--Tools/iExploder/htdocs/cssvalues.in339
-rw-r--r--Tools/iExploder/htdocs/htmlattrs.in373
-rw-r--r--Tools/iExploder/htdocs/htmltags.in155
-rw-r--r--Tools/iExploder/htdocs/htmlvalues.in35
-rwxr-xr-xTools/iExploder/htdocs/iexploder.cgi45
-rw-r--r--Tools/iExploder/htdocs/iexploder.rb337
-rw-r--r--Tools/iExploder/htdocs/index.html34
-rwxr-xr-xTools/iExploder/htdocs/webserver.rb75
10 files changed, 1825 insertions, 0 deletions
diff --git a/Tools/iExploder/htdocs/config.rb b/Tools/iExploder/htdocs/config.rb
new file mode 100644
index 0000000..d9e7e1b
--- /dev/null
+++ b/Tools/iExploder/htdocs/config.rb
@@ -0,0 +1,6 @@
+# Configuration for iExploder.. not generally tuned.
+
+$HTML_MAX_TAGS = 96;
+$HTML_MAX_ATTRS = 4;
+$CSS_MAX_PROPS = 5;
+
diff --git a/Tools/iExploder/htdocs/cssproperties.in b/Tools/iExploder/htdocs/cssproperties.in
new file mode 100644
index 0000000..d49eb8e
--- /dev/null
+++ b/Tools/iExploder/htdocs/cssproperties.in
@@ -0,0 +1,426 @@
+# From WebKit svn r66165 (WebCore/css/CSSPropertyNames.in)
+-webkit-animation
+-webkit-animation-delay
+-webkit-animation-direction
+-webkit-animation-duration
+-webkit-animation-fill-mode
+-webkit-animation-iteration-count
+-webkit-animation-name
+-webkit-animation-play-state
+-webkit-animation-timing-function
+-webkit-appearance
+-webkit-backface-visibility
+-webkit-background-clip
+-webkit-background-composite
+-webkit-background-origin
+-webkit-background-size
+-webkit-border-end
+-webkit-border-end-color
+-webkit-border-end-style
+-webkit-border-end-width
+-webkit-border-fit
+-webkit-border-horizontal-spacing
+-webkit-border-image
+-webkit-border-radius
+-webkit-border-start
+-webkit-border-start-color
+-webkit-border-start-style
+-webkit-border-start-width
+-webkit-border-vertical-spacing
+-webkit-box-align
+-webkit-box-direction
+-webkit-box-flex
+-webkit-box-flex-group
+-webkit-box-lines
+-webkit-box-ordinal-group
+-webkit-box-orient
+-webkit-box-pack
+-webkit-box-reflect
+-webkit-box-shadow
+-webkit-color-correction
+-webkit-column-break-after
+-webkit-column-break-before
+-webkit-column-break-inside
+-webkit-column-count
+-webkit-column-gap
+-webkit-column-rule
+-webkit-column-rule-color
+-webkit-column-rule-style
+-webkit-column-rule-width
+-webkit-column-span
+-webkit-column-width
+-webkit-columns
+-webkit-font-size-delta
+-webkit-font-smoothing
+-webkit-highlight
+-webkit-hyphenate-character
+-webkit-hyphenate-locale
+-webkit-hyphens
+-webkit-line-break
+-webkit-line-clamp
+-webkit-margin-bottom-collapse
+-webkit-margin-collapse
+-webkit-margin-end
+-webkit-margin-start
+-webkit-margin-top-collapse
+-webkit-marquee
+-webkit-marquee-direction
+-webkit-marquee-increment
+-webkit-marquee-repetition
+-webkit-marquee-speed
+-webkit-marquee-style
+-webkit-mask
+-webkit-mask-attachment
+-webkit-mask-box-image
+-webkit-mask-clip
+-webkit-mask-composite
+-webkit-mask-image
+-webkit-mask-origin
+-webkit-mask-position
+-webkit-mask-position-x
+-webkit-mask-position-y
+-webkit-mask-repeat
+-webkit-mask-repeat-x
+-webkit-mask-repeat-y
+-webkit-mask-size
+-webkit-match-nearest-mail-blockquote-color
+-webkit-nbsp-mode
+-webkit-padding-end
+-webkit-padding-start
+-webkit-perspective
+-webkit-perspective-origin
+-webkit-perspective-origin-x
+-webkit-perspective-origin-y
+-webkit-rtl-ordering
+-webkit-text-decorations-in-effect
+-webkit-text-fill-color
+-webkit-text-security
+-webkit-text-size-adjust
+-webkit-text-stroke
+-webkit-text-stroke-color
+-webkit-text-stroke-width
+-webkit-transform
+-webkit-transform-origin
+-webkit-transform-origin-x
+-webkit-transform-origin-y
+-webkit-transform-origin-z
+-webkit-transform-style
+-webkit-transition
+-webkit-transition-delay
+-webkit-transition-duration
+-webkit-transition-property
+-webkit-transition-timing-function
+-webkit-user-drag
+-webkit-user-modify
+-webkit-user-select
+-webkit-variable-declaration-block
+background
+background-attachment
+background-clip
+background-color
+background-image
+background-origin
+background-position
+background-position-x
+background-position-y
+background-repeat
+background-repeat-x
+background-repeat-y
+background-size
+border
+border-bottom
+border-bottom-color
+border-bottom-left-radius
+border-bottom-right-radius
+border-bottom-style
+border-bottom-width
+border-collapse
+border-color
+border-left
+border-left-color
+border-left-style
+border-left-width
+border-radius
+border-right
+border-right-color
+border-right-style
+border-right-width
+border-spacing
+border-style
+border-top
+border-top-color
+border-top-left-radius
+border-top-right-radius
+border-top-style
+border-top-width
+border-width
+bottom
+box-sizing
+caption-side
+clear
+clip
+color
+content
+counter-increment
+counter-reset
+cursor
+direction
+display
+empty-cells
+float
+font
+font-family
+font-size
+font-stretch
+font-style
+font-variant
+font-weight
+height
+left
+letter-spacing
+line-height
+list-style
+list-style-image
+list-style-position
+list-style-type
+margin
+margin-bottom
+margin-left
+margin-right
+margin-top
+max-height
+max-width
+min-height
+min-width
+opacity
+orphans
+outline
+outline-color
+outline-offset
+outline-style
+outline-width
+overflow
+overflow-x
+overflow-y
+padding
+padding-bottom
+padding-left
+padding-right
+padding-top
+page
+page-break-after
+page-break-before
+page-break-inside
+pointer-events
+position
+quotes
+resize
+right
+size
+src
+table-layout
+text-align
+text-decoration
+text-indent
+text-line-through
+text-line-through-color
+text-line-through-mode
+text-line-through-style
+text-line-through-width
+text-overflow
+text-overline
+text-overline-color
+text-overline-mode
+text-overline-style
+text-overline-width
+text-rendering
+text-shadow
+text-transform
+text-underline
+text-underline-color
+text-underline-mode
+text-underline-style
+text-underline-width
+top
+unicode-bidi
+unicode-range
+vertical-align
+visibility
+white-space
+widows
+width
+word-break
+word-spacing
+word-wrap
+z-index
+zoom
+
+# CSS3 properties - http://www.css3.info/preview/
+background-clip
+background-origin
+border-image
+border-radius
+box-shadow
+box-sizing
+column-count
+column-gap
+column-min-width
+column-rule
+column-rule-color
+column-rule-style
+column-rule-width
+column-space-distribution
+column-span
+column-width
+column-width-policy
+
+# Removed from WebKit between r53119 and r66165
+-webkit-binding
+
+# Removed from WebKit between r44660 and r53119
+-webkit-border-bottom-left-radius
+-webkit-border-bottom-right-radius
+-webkit-border-top-left-radius
+-webkit-border-top-right-radius
+
+# Removed from WebKit between r24523 and r44660
+-webkit-dashboard-region
+scrollbar-3dlight-color
+scrollbar-arrow-color
+scrollbar-darkshadow-color
+scrollbar-face-color
+scrollbar-highlight-color
+scrollbar-shadow-color
+scrollbar-track-color
+
+# All of the following are from khtml's cssproperties.in as of 19oct2004, but are no longer in WebKit
+-khtml-border-horizontal-spacing
+-khtml-border-vertical-spacing
+-khtml-flow-mode
+-khtml-marquee
+-khtml-marquee-direction
+-khtml-marquee-increment
+-khtml-marquee-repetition
+-khtml-marquee-speed
+-khtml-marquee-style
+-khtml-text-decoration-color
+-khtml-user-input
+scrollbar-base-color
+
+# Internet Explorer 6.0 - http://msdn.microsoft.com/workshop/author/css/reference/attributes.asp
+filter:progid:
+filter:
+ime-mode
+layout-flow
+layout-grid
+layout-grid-char
+layout-grid-line
+layout-grid-mode
+layout-grid-type
+line-break
+overflow-x
+overflow-y
+pagebreakafter
+pagebreakbefore
+ruby-align
+ruby-overhang
+ruby-position
+text-autospace
+text-justify
+text-kashida-space
+text-underline-position
+word-break
+writing-mode
+zoom
+
+# from http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/reference.asp
+filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(
+filter:progid:DXImageTransform.Microsoft.Blur(
+filter:progid:DXImageTransform.Microsoft.MotionBlur(
+filter:progid:DXImageTransform.Microsoft.Gradient(
+filter:progid:DXImageTransform.Microsoft.Pixelate(
+
+# From Mozilla Firefox CVS on 2006-04-15 (layout/style/nsCSSPropList.h)
+# grep "^CSS_PROP" nsCSSPropList.h | grep -v "_SVG" |cut -d, -f1 | cut -d\( -f2 | sort
+++ /tmp/moz Tue Apr 18 13:45:30 2006
+-moz-appearance
+-moz-background-clip
+-moz-background-inline-policy
+-moz-background-origin
+-moz-binding
+-moz-border-bottom-colors
+-moz-border-left-colors
+-moz-border-radius
+-moz-border-radius-bottomleft
+-moz-border-radius-bottomright
+-moz-border-radius-topleft
+-moz-border-radius-topright
+-moz-border-right-colors
+-moz-border-top-colors
+-moz-box-align
+-moz-box-direction
+-moz-box-flex
+-moz-box-ordinal-group
+-moz-box-orient
+-moz-box-pack
+-moz-box-sizing
+-moz-column-count
+-moz-column-gap
+-moz-column-width
+-moz-float-edge
+-moz-force-broken-image-icon
+-moz-image-region
+-moz-margin-end
+-moz-margin-start
+-moz-outline-radius
+-moz-outline-radius-bottomleft
+-moz-outline-radius-bottomright
+-moz-outline-radius-topleft
+-moz-outline-radius-topright
+-moz-padding-end
+-moz-padding-start
+-moz-user-focus
+-moz-user-input
+-moz-user-modify
+-moz-user-select
+-x-background-x-position
+-x-background-y-position
+azimuth
+cue
+cue-after
+cue-before
+elevation
+font-size-adjust
+margin-end-value
+margin-left-ltr-source
+margin-left-rtl-source
+margin-left-value
+margin-right-ltr-source
+margin-right-rtl-source
+margin-right-value
+margin-start-value
+marker
+marker-offset
+marks
+padding-end-value
+padding-left-ltr-source
+padding-left-rtl-source
+padding-left-value
+padding-right-ltr-source
+padding-right-rtl-source
+padding-right-value
+padding-start-value
+pause
+pause-after
+pause-before
+pitch
+pitch-range
+richness
+speak
+speak-header
+speak-numeral
+speak-punctuation
+speech-rate
+stress
+voice-family
+volume
diff --git a/Tools/iExploder/htdocs/cssvalues.in b/Tools/iExploder/htdocs/cssvalues.in
new file mode 100644
index 0000000..c19f78f
--- /dev/null
+++ b/Tools/iExploder/htdocs/cssvalues.in
@@ -0,0 +1,339 @@
+"Trebuchet MS",Verdana, Arial, Helvetica, sans-serif
+#339933 !important !important !important
+#9999999999999999999999999999999999999999999
+-5, -5, -5
+-9999%
+-999999999999999999999999999%
+-999999999999999999999999999em
+-999999999999999999999999999px
+-9999em
+-9999px
+-webkit-activelink
+-webkit-auto
+-webkit-baseline-middle
+-webkit-body
+-webkit-box
+-webkit-center
+-webkit-focus-ring-color
+-webkit-inline-box
+-webkit-left
+-webkit-link
+-webkit-marquee
+-webkit-nowrap
+-webkit-overlay
+-webkit-right
+-webkit-text
+-webkit-xxx-large
+0
+0 auto
+0 fixed
+2%
+90000000000000000000000000000000000000000000%
+9999999999999999999999
+99999999999999999999999999999999999999 auto
+99999999999999999999999999999999999999999999px
+999999px solid #fff
+above
+absolute
+activeborder
+activecaption
+after-white-space
+ahead
+alternate
+always
+appworkspace
+aqua
+armenian
+attr("ATTRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
+auto
+avoid
+background
+backwards
+baseline
+below
+bidi-override
+black
+blink
+block
+block clear
+block width
+block-axis
+blue
+bold
+bolder
+border
+border-box
+both
+bottom
+break-word
+button
+button-bevel
+buttonface
+buttonhighlight
+buttonshadow
+buttontext
+capitalize
+caption
+captiontext
+caret
+center
+checkbox
+circle
+cjk-ideographic
+clip
+clip:rect(-0px -2000000px -200000px -0px)
+clip:rect(0px 2000000px 200000px 0px)
+close-quote
+collapse
+compact
+condensed
+content
+content-box
+continuous
+crop
+cross
+crosshair
+cursive
+dashed
+decimal
+decimal-leading-zero
+default
+disc
+discard
+dot-dash
+dot-dot-dash
+dotted
+double
+down
+e-resize
+element
+ellipsis
+embed
+end
+expanded
+extra-condensed
+extra-expanded
+fantasy
+fast
+fixed
+forwards
+fuchsia
+georgian
+gray
+graytext
+green
+grey
+groove
+hand
+hebrew
+help
+helvetica, arial, Courier New, Courier, Mono, Blah, Blah, Blah
+hidden
+hide
+higher
+highlight
+highlighttext
+hiragana
+hiragana-iroha
+horizontal
+icon
+ignore
+inactiveborder
+inactivecaption
+inactivecaptiontext
+infinite
+infobackground
+infotext
+inherit
+initial
+inline
+inline-axis
+inline-block
+inline-table
+inset
+inside
+intrinsic
+invert
+italic
+justify
+katakana
+katakana-iroha
+landscape
+large
+larger
+left
+level
+lighter
+lime
+line-through
+list-item
+listbox
+listitem
+logical
+loud
+lower
+lower-alpha
+lower-greek
+lower-latin
+lower-roman
+lowercase
+ltr
+marker
+maroon
+match
+medium
+menu
+menulist
+menulist-button
+menulist-text
+menulist-textfield
+menutext
+message-box
+middle
+min-intrinsic
+mix
+monospace
+move
+multiple
+n-resize
+narrower
+navy
+ne-resize
+no-close
+no-close-quote
+no-open-quote
+no-repeat
+none
+normal
+normal !important
+nowrap
+nw-resize
+oblique
+olive
+once
+open-quote
+orange
+outset
+outside
+overline
+padding
+pointer
+portrait
+pre
+pre-line
+pre-wrap
+purple
+push-button
+radio
+read-only
+read-write
+read-write-plaintext-only
+red
+relative
+repeat
+repeat-x
+repeat-y
+reverse
+rgb(9999999999, 999999999, 9999999999999)
+ridge
+right
+round
+rtl
+run-in
+s-resize
+sans-serif
+scroll
+scrollbar
+scrollbarbutton-down
+scrollbarbutton-left
+scrollbarbutton-right
+scrollbarbutton-up
+scrollbargripper-horizontal
+scrollbargripper-vertical
+scrollbarthumb-horizontal
+scrollbarthumb-vertical
+scrollbartrack-horizontal
+scrollbartrack-vertical
+se-resize
+searchfield
+searchfield-close
+searchfield-results
+semi-condensed
+semi-expanded
+separate
+serif
+show
+silver
+single
+skip-white-space
+slide
+slider-horizontal
+slider-vertical
+sliderthumb-horizontal
+sliderthumb-vertical
+slow
+small
+small-caps
+small-caption
+smaller
+solid
+space
+square
+square-button
+start
+static
+status-bar
+stretch
+sub
+super
+sw-resize
+table
+table-caption
+table-cell
+table-column
+table-column-group
+table-footer-group
+table-header-group
+table-row
+table-row-group
+teal
+text
+text-bottom
+text-top
+textfield
+thick
+thick dashed yellow
+thick dotted blue
+thin
+threeddarkshadow
+threedface
+threedhighlight
+threedlightshadow
+threedshadow
+top
+transparent
+ultra-condensed
+ultra-expanded
+underline
+unfurl
+up
+upper-alpha
+upper-latin
+upper-roman
+uppercase
+vertical
+visible
+visual
+w-resize
+wait
+wave
+white
+wider
+window
+windowframe
+windowtext
+x-large
+x-small
+xx-large
+xx-small
+yellow
diff --git a/Tools/iExploder/htdocs/htmlattrs.in b/Tools/iExploder/htdocs/htmlattrs.in
new file mode 100644
index 0000000..0dc8116
--- /dev/null
+++ b/Tools/iExploder/htdocs/htmlattrs.in
@@ -0,0 +1,373 @@
+# From WebKit svn r66165 (WebCore/html/HTMLAttributeNames.in)
+abbr
+accept
+accept_charset
+accesskey
+action
+align
+alink
+alt
+archive
+aria-activedescendant
+aria-atomic
+aria-busy
+aria-checked
+aria-controls
+aria-describedby
+aria-disabled
+aria-dropeffect
+aria-expanded
+aria-flowto
+aria-grabbed
+aria-haspopup
+aria-help
+aria-hidden
+aria-label
+aria-labeledby
+aria-labelledby
+aria-level
+aria-live
+aria-multiselectable
+aria-orientation
+aria-owns
+aria-pressed
+aria-readonly
+aria-relevant
+aria-required
+aria-selected
+aria-valuemax
+aria-valuemin
+aria-valuenow
+aria-valuetext
+async
+autocomplete
+autofocus
+autoplay
+autosave
+axis
+background
+behavior
+bgcolor
+bgproperties
+border
+bordercolor
+cellborder
+cellpadding
+cellspacing
+challenge
+char
+charoff
+charset
+checked
+cite
+class
+classid
+clear
+code
+codebase
+codetype
+color
+cols
+colspan
+compact
+composite
+content
+contenteditable
+controls
+coords
+data
+datetime
+declare
+defer
+dir
+direction
+disabled
+draggable
+enctype
+end
+event
+expanded
+face
+focused
+for
+formnovalidate
+frame
+frameborder
+headers
+height
+hidden
+high
+href
+hreflang
+hspace
+http_equiv
+id
+incremental
+indeterminate
+ismap
+keytype
+label
+lang
+language
+leftmargin
+link
+list
+longdesc
+loop
+loopend
+loopstart
+low
+lowsrc
+manifest
+marginheight
+marginwidth
+max
+maxlength
+mayscript
+media
+method
+min
+multiple
+name
+nohref
+noresize
+noshade
+novalidate
+nowrap
+object
+onabort
+onbeforecopy
+onbeforecut
+onbeforeload
+onbeforepaste
+onbeforeprocess
+onbeforeunload
+onblur
+oncanplay
+oncanplaythrough
+onchange
+onclick
+oncontextmenu
+oncopy
+oncut
+ondblclick
+ondrag
+ondragend
+ondragenter
+ondragleave
+ondragover
+ondragstart
+ondrop
+ondurationchange
+onemptied
+onended
+onerror
+onfocus
+onfocusin
+onfocusout
+onhashchange
+oninput
+oninvalid
+onkeydown
+onkeypress
+onkeyup
+onload
+onloadeddata
+onloadedmetadata
+onloadstart
+onmousedown
+onmousemove
+onmouseout
+onmouseover
+onmouseup
+onmousewheel
+onoffline
+ononline
+onorientationchange
+onpagehide
+onpageshow
+onpaste
+onpause
+onplay
+onplaying
+onpopstate
+onprogress
+onratechange
+onreset
+onresize
+onscroll
+onsearch
+onseeked
+onseeking
+onselect
+onselectstart
+onstalled
+onstorage
+onsubmit
+onsuspend
+ontimeupdate
+ontouchcancel
+ontouchend
+ontouchmove
+ontouchstart
+onunload
+onvolumechange
+onwaiting
+onwebkitanimationend
+onwebkitanimationiteration
+onwebkitanimationstart
+onwebkitbeginfullscreen
+onwebkitendfullscreen
+onwebkittransitionend
+optimum
+pattern
+placeholder
+playcount
+pluginurl
+poster
+precision
+preload
+primary
+profile
+progress
+prompt
+readonly
+rel
+required
+results
+rev
+role
+rows
+rowspan
+rules
+sandbox
+scheme
+scope
+scrollamount
+scrolldelay
+scrolling
+selected
+shape
+size
+sortable
+sortdirection
+span
+speech
+spellcheck
+src
+standby
+start
+step
+style
+summary
+tabindex
+tableborder
+target
+text
+title
+top
+topmargin
+truespeed
+type
+usemap
+valign
+value
+valuetype
+version
+viewsource
+vlink
+vspace
+webkitdirectory
+width
+wrap
+
+# Removed from WebKit between r53119 and r56558
+autobuffer
+
+# Removed from WebKit between r14011 and r53119
+left
+pagex
+pagey
+plain
+pluginpage
+pluginspage
+
+# was in khtml in 2004, but is no longer in WebCore
+accept-charset
+html
+http-equiv
+nosave
+oversrc
+unknown
+visibility
+z-index
+
+# From Mozilla CVS 2006-04-15 (mozilla/layout/style/xbl-marquee)
+bounce
+finish
+onbounce
+onfinish
+onstart
+
+
+# IE specific, from msdn.microsoft.com/workshop/author/dhtml/reference/properties
+acceptcharset
+allowtransparency
+balance
+choff
+datafld
+dataformatas
+datapagesize
+datasrc
+dynsrc
+framespacing
+galleryimg
+hidefocus
+methods
+scroll
+units
+urn
+volume
+
+# From Mozilla CVS 2006-04-15 (mozilla/content/base/src/nsGkAtomList.h)
+# To get these, I used:
+# ggrep -r "Get.*Attr" * | perl -ne 'if (/nsHTMLAtoms::(\w+)/) { \
+# system("grep \\($1, content/base/src/nsGkAtomList.h"); }' \
+# | cut -d\" -f2 | sort -u
+autocheck
+base
+bottommargin
+event
+font-weight
+handler
+layout
+observer
+ping
+point-size
+rightmargin
+variable
+
+# events from Mozilla CVS 2006-04-15 (mozilla/content/base/src/nsGkAtomList.h)
+# cat nsGkAtomList.h | grep GK_ATOM | cut -d\" -f2 | egrep "^on[a-z]+"
+onzoom
+onunderflow
+ontext
+onset
+onpopupshown
+onpopupshowing
+onpopuphiding
+onpopuphidden
+onpaint
+onpageshow
+onpagehide
+onoverflowchanged
+onoverflow
+onget
+ondraggesture
+ondragexit
+ondragdrop
+oncompositionstart
+oncompositionend
+oncommandupdate
+oncommand
+onclose
diff --git a/Tools/iExploder/htdocs/htmltags.in b/Tools/iExploder/htdocs/htmltags.in
new file mode 100644
index 0000000..319d528
--- /dev/null
+++ b/Tools/iExploder/htdocs/htmltags.in
@@ -0,0 +1,155 @@
+# From WebKit svn r66165 (WebCore/html/HTMLTagNames.in)
+a
+abbr
+acronym
+address
+applet
+area
+article
+aside
+audio
+b
+base
+basefont
+bdo
+bgsound
+big
+blockquote
+body
+br
+button
+canvas
+caption
+center
+cite
+code
+col
+colgroup
+command
+datagrid
+datalist
+dcell
+dcol
+dd
+del
+details
+dfn
+dir
+div
+dl
+drow
+dt
+em
+embed
+fieldset
+figcaption
+figure
+font
+footer
+form
+frame
+frameset
+h1
+h2
+h3
+h4
+h5
+h6
+head
+header
+hgroup
+hr
+html
+i
+iframe
+image
+img
+input
+ins
+isindex
+kbd
+keygen
+label
+layer
+legend
+li
+link
+listing
+map
+mark
+marquee
+menu
+meta
+meter
+nav
+nobr
+noembed
+noframes
+nolayer
+noscript
+noscript
+object
+ol
+optgroup
+option
+p
+param
+plaintext
+pre
+progress
+q
+rp
+rt
+ruby
+s
+samp
+script
+section
+select
+small
+source
+span
+strike
+strong
+style
+sub
+summary
+sup
+table
+tbody
+td
+textarea
+tfoot
+th
+thead
+title
+tr
+track
+tt
+u
+ul
+var
+video
+wbr
+xmp
+
+# This was in khtml in 10-2004
+ilayer
+
+# Additions from Mozilla CVS, 2006-04-18.
+# mozilla/parser/htmlparser/public/nsHTMLTagList.h
+bgsound
+blink
+multicol
+spacer
+
+# The following tags used to be in Mozilla in 10-2004, now removed
+counter
+endnote
+parsererror
+server
+sound
+sourcetext
+
+# From Internet Explorer - http://msdn.microsoft.com/workshop/author/html/reference/elements.asp
+xml
diff --git a/Tools/iExploder/htdocs/htmlvalues.in b/Tools/iExploder/htdocs/htmlvalues.in
new file mode 100644
index 0000000..d54984f
--- /dev/null
+++ b/Tools/iExploder/htdocs/htmlvalues.in
@@ -0,0 +1,35 @@
+# Many of the following are from mangleme.cgi.c's make_up_value() function
+#
+*
+_blank
+_parent
+_self
+_top
+about:
+about:plugins
+file:
+http:
+jar:
+javascript:
+left
+top
+%n%n%n%n%n
+ftp:
+right
+wysiwyg:
+bottom
+none
+ldap:
+%i %i
+999999999,9999999,999999999,9999999,999999999,9999999,999999999,9999999,9
+999999999,9999999,9
+999999999,9999999
+true
+false
+_SEARCH
+javascript
+off
+on
+vbscript
+password
+image
diff --git a/Tools/iExploder/htdocs/iexploder.cgi b/Tools/iExploder/htdocs/iexploder.cgi
new file mode 100755
index 0000000..89e099c
--- /dev/null
+++ b/Tools/iExploder/htdocs/iexploder.cgi
@@ -0,0 +1,45 @@
+#!/usr/bin/ruby
+# iExploder - Generates bad HTML files to perform QA for web browsers.
+# Developed for the Mozilla Foundation.
+#####################
+#
+# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
+#
+# This software is provided 'as-is', without any express or implied warranty.
+# In no event will the authors be held liable for any damages arising from the
+# use of this software.
+#
+# Permission is granted to anyone to use this software for any purpose,
+# including commercial applications, and to alter it and redistribute it
+# freely, subject to the following restrictions:
+#
+# 1. The origin of this software must not be misrepresented; you must not
+# claim that you wrote the original software. If you use this software in a
+# product, an acknowledgment in the product documentation would be appreciated
+# but is not required.
+#
+# 2. Altered source versions must be plainly marked as such, and must not be
+# misrepresented as being the original software.
+#
+# 3. This notice may not be removed or altered from any source distribution.
+
+require 'cgi';
+require 'iexploder';
+require 'config';
+
+### THE INTERACTION ##################################
+ie = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS)
+ie.readTagFiles()
+
+cgi = CGI.new("html4");
+ie.url=ENV['SCRIPT_NAME'] || '?'
+ie.test_num = cgi.params['test'][0].to_i
+ie.subtest_num = cgi.params['subtest'][0].to_i || 0
+ie.random_mode = cgi.params['random'][0]
+ie.lookup_mode = cgi.params['lookup'][0]
+ie.stop_num = cgi.params['stop'][0].to_i || 0
+ie.setRandomSeed
+
+cgi.out('type' => 'text/html') do
+ ie.buildPage()
+end
diff --git a/Tools/iExploder/htdocs/iexploder.rb b/Tools/iExploder/htdocs/iexploder.rb
new file mode 100644
index 0000000..eee3e38
--- /dev/null
+++ b/Tools/iExploder/htdocs/iexploder.rb
@@ -0,0 +1,337 @@
+# iExploder - Generates bad HTML files to perform QA for web browsers.
+# Developed for the Mozilla Foundation.
+#####################
+#
+# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
+#
+# This software is provided 'as-is', without any express or implied warranty.
+# In no event will the authors be held liable for any damages arising from the
+# use of this software.
+#
+# Permission is granted to anyone to use this software for any purpose,
+# including commercial applications, and to alter it and redistribute it
+# freely, subject to the following restrictions:
+#
+# 1. The origin of this software must not be misrepresented; you must not
+# claim that you wrote the original software. If you use this software in a
+# product, an acknowledgment in the product documentation would be appreciated
+# but is not required.
+#
+# 2. Altered source versions must be plainly marked as such, and must not be
+# misrepresented as being the original software.
+#
+# 3. This notice may not be removed or altered from any source distribution.
+
+$VERSION="1.3.2"
+
+class IExploder
+ attr_accessor :test_num, :subtest_num, :lookup_mode, :random_mode, :url
+ attr_accessor :offset, :lines, :stop_num
+
+ def initialize(max_tags, max_attrs, max_props)
+ @htmlMaxTags = max_tags
+ @htmlMaxAttrs = max_attrs
+ @cssMaxProps = max_props
+ @mangledTagTotal = 0
+ @stop_num = 0
+ end
+
+ def setRandomSeed
+ if @test_num > 0
+ srand(@test_num)
+ else
+ srand
+ end
+ end
+
+
+ def readTagFiles
+ # These if statements are so that mod_ruby doesn't have to reload the files
+ # each time
+
+ if (! @cssTags)
+ @cssTags = readTagFile('cssproperties.in');
+ end
+
+ if (! @htmlTags)
+ @htmlTags = readTagFile('htmltags.in');
+ end
+ if (! @htmlAttr)
+ @htmlAttr = readTagFile('htmlattrs.in');
+ end
+
+ if (! @htmlValues)
+ @htmlValues = readTagFile('htmlvalues.in');
+ end
+
+ if (! @cssValues)
+ @cssValues = readTagFile('cssvalues.in');
+ end
+
+ end
+
+
+ def readTagFile(filename)
+ list = Array.new
+ File.new(filename).readlines.each { |line|
+ line.chop!
+
+ # Don't include comments.
+ if (line !~ /^# /) && (line.length > 0)
+ list << line
+ end
+ }
+ return list
+ end
+
+ # based on make_up_value, essentially.
+ def inventValue
+ value = rand(19);
+ case value
+ when 1..3 then return (@htmlValues[rand(@htmlValues.length)])
+ when 4..5 then return (@htmlValues[rand(@htmlValues.length)] + inventValue())
+ when 6 then return (@htmlValues[rand(@htmlValues.length)] + "//" + inventValue())
+ when 7 then return ''
+ # this may return negative argument?
+ when 8..10 then return rand(255).chr * (rand(256)+8)
+ when 11 then return rand(255).chr * (rand(2048)+8)
+ when 12 then return "#" + rand(999999).to_s
+ when 13 then return rand(999999).to_s + "%"
+ when 14..15 then return "&" + rand(999999).to_s + ";"
+ # filters
+ when 16 then
+ return inventValue() + "=" + inventValue()
+
+ # this my return undefined method + for nil:NilClass
+ when 17 then return inventValue() + "," + inventValue()
+ else
+ if rand(5) > 3
+ return "-" + rand(999999).to_s
+ else
+ return rand(999999).to_s
+ end
+ end
+ end
+
+ # based on make_up_value, essentially.
+ def inventCssValue(tag)
+ value = rand(23);
+ case value
+ when 1..10 then return @cssValues[rand(@cssValues.length)]
+ when 11 then return ''
+ when 12 then return rand(255).chr * (rand(8192)+8)
+ when 13
+ length = rand(1024) + 8
+ return (rand(255).chr * length) + " " + (rand(255).chr * length) + " " + (rand(255).chr * length)
+ when 14 then return (rand(255).chr * (rand(1024)+3)) + "px"
+ when 15 then return (rand(255).chr * (rand(1024)+3)) + "em"
+ when 16 then return "url(" + inventValue() + ")"
+ when 17..18 then return "#" + rand(999999999).to_s
+ when 19 then return "-" + rand(99999999).to_s
+ else return rand(99999999).to_s;
+ end
+ end
+
+
+ def mangleTag(tag)
+ @mangledTagTotal += 1
+ out = ''
+
+ # 20% chance of closing a tag instead of opening it. This
+ # still counts against @mangledTagTotal, however.
+ if rand(10) > 8
+ out = "</" + tag + ">"
+ return out
+ end
+
+ # we're opening it.
+ out = "<" + tag
+
+ # forgot the space between the tag and the attributes
+ if rand(15) > 1
+ out << ' '
+ end
+
+ attrNum = rand(@htmlMaxAttrs) + 1
+
+ 1.upto(attrNum) {
+ attr = @htmlAttr[rand(@htmlAttr.length)]
+
+ out << attr
+
+ # 7.5% of the time we skip the = sign. Don't prefix it
+ # if the attribute ends with a ( however.
+
+
+ if rand(15) > 1
+ out << '='
+ end
+
+ # sometimes quote it, sometimes not. I doubt the importance
+ # of this test, but mangleme-1.2 added it, and adding more
+ # random-ness never hurt anything but time. I'll do it less often.
+ quote = rand(2)
+ if (quote > 1)
+ out << "\""
+ end
+
+ out << inventValue()
+
+ # end the quote when you are done
+ if (quote > 1)
+ out << "\" "
+ end
+
+ # 5% chance we skip the space at the end of the name
+ if rand(20) > 1
+ out << ' '
+ end
+
+ }
+
+ # CSS styles!
+ if rand(4) > 1
+ out << " style=\""
+ 1.upto(rand(@cssMaxProps)+1) {
+ out << @cssTags[rand(@cssTags.length)]
+
+ # very small chance we let the tag run on.
+ if rand(50) > 1
+ out << ": "
+ end
+
+ out << inventCssValue(tag)
+ # we almost always put the ; there.
+ if rand(50) > 1
+ out << '; '
+ end
+ }
+ out << "\""
+ end
+
+ out << ">\n"
+
+ # support our local troops!
+ if (@subtest_num > 0) && filterSubTest()
+ if tag =~ /html|body|head/
+ return '<' + tag + '>'
+ else
+ return "<x-#@mangledTagTotal>\n"
+ end
+ else
+ return out
+ end
+ end
+ #end
+
+ def filterSubTest()
+ result = 1
+ if (@mangledTagTotal >= @offset) && (@mangledTagTotal < (@offset + @lines))
+ result = nil
+ end
+ return result
+ end
+
+ def nextTestNum()
+ if random_mode
+ n = rand(99999999)
+ else
+ if @test_num
+ n = @test_num + 1
+ else
+ n = 1
+ end
+ end
+ return n
+ end
+
+ # If we are at line 30 with 8 extra lines, there is no point to try line 31
+ # with 8 lines as well.. skip back to 1 and bump up the line count.
+ def nextSubTestNum()
+ if (@offset + @lines) > @htmlMaxTags
+ nextNum = ((@lines * 2 -1)) * @htmlMaxTags
+ else
+ nextNum = @subtest_num + 1
+ end
+ return nextNum
+ end
+
+
+ def buildPage
+ if (! @test_num) || (@test_num < 1)
+ @test_num = 1
+ end
+ next_num=nextTestNum()
+ @lines = @subtest_num.div(@htmlMaxTags) + 1
+ @offset = @subtest_num.modulo(@htmlMaxTags)
+
+ # building the HTML
+ bodyText = mangleTag('html')
+ bodyText << "\n<head>\n"
+
+ # Only do redirects if lookup=1 has not been specified.
+ if (! @lookup_mode) && (@lines <= @htmlMaxTags) && (@stop_num != @test_num)
+ newpage = @url + "?"
+ if @subtest_num > 0
+ newpage << "test=" << @test_num.to_s << "&subtest=" << nextSubTestNum().to_s
+ else
+ newpage << "test=" << next_num.to_s
+ end
+
+ if @random_mode
+ newpage << "&random=1"
+ end
+
+ if @stop_num > 0
+ newpage << "&stop=" << @stop_num.to_s
+ end
+
+ bodyText << "\t<META HTTP-EQUIV=\"Refresh\" content=\"0;URL=#{newpage}\">\n"
+ # use both techniques, because you never know how you might be corrupting yourself.
+ bodyText << "\t<script language=\"javascript\">setTimeout('window.location=\"#{newpage}\"', 1000);</script>\n"
+ end
+
+ bodyText << "\t" << mangleTag('meta')
+ bodyText << "\t" << mangleTag('meta')
+ bodyText << "\t" << mangleTag('link')
+
+ bodyText << "\t<title>[#@test_num] iExploder #{$VERSION} - #{inventValue()}</title>\n"
+ bodyText << "</head>\n\n"
+
+ # What tags will we be messing with ######################
+ tagList = [ 'body']
+
+ # we already have 5 tags?
+ 1.upto(@htmlMaxTags - 5 ) { tagList << @htmlTags[rand(@htmlTags.length)] }
+
+ tagList.each { |tag|
+ bodyText << mangleTag(tag)
+ bodyText << inventValue() + "\n"
+ }
+ bodyText << "</body>\n</html>"
+ end
+end
+
+
+
+if $0 == __FILE__
+ max=ARGV[0].to_i
+ puts "testing #{max} tags"
+ test = IExploder.new(max, 5, 5)
+ test.readTagFiles()
+ test.test_num=1
+ test.subtest_num=1
+ counter=0
+ test.lines=0
+
+ while test.lines < max
+ test.lines = test.subtest_num.div(max) + 1
+ test.offset = test.subtest_num.modulo(max)
+ test.subtest_num=test.nextSubTestNum
+ counter = counter + 1
+ puts "[#{counter}] subtest #{test.subtest_num} is #{test.lines} lines with #{test.offset} offset"
+ end
+
+ puts "for #{max} tests, you will have #{counter} iterations until #{test.subtest_num}"
+end
+
diff --git a/Tools/iExploder/htdocs/index.html b/Tools/iExploder/htdocs/index.html
new file mode 100644
index 0000000..849bc6b
--- /dev/null
+++ b/Tools/iExploder/htdocs/index.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>iExploder 1.3.2</title>
+</head>
+<body>
+<h2>iExploder: Web Browser Quality Assurance Tester</h2>
+<small>Written by <a href="http://toadstool.se/">Thomas Str&ouml;mberg</a> for the
+<a href="http://www.mozilla.org/firefox/">Mozilla FireFox</a> project</small>
+
+
+<ul>
+ <li><a href="iexploder.cgi">Start test sequence from the beginning!</a></li>
+ <li><a href="iexploder.cgi?random=1">Start test sequence in random</a></li>
+ <li>Start testing from a test number:
+ <form method="get" action="iexploder.cgi" name="test">
+ Test: <input size="9" name="test" value="1"> Subtest: <input size="2" name="subtest" value="">
+ <input value="Start" type="submit">
+ </form>
+ </li>
+
+ <li>Lookup a single test number:
+ <form method="get" action="iexploder.cgi" name="test">
+ <input type="hidden" name="lookup" value="1">
+ Test: <input size="9" name="test" value="1"> Subtest: <input size="2" name="subtest" value="">
+ <input value="Lookup" type="submit"></form>
+ </li>
+</ul>
+
+If your browser crashes, please contact thomas%stromberg.org!
+
+</body>
+</html>
+
diff --git a/Tools/iExploder/htdocs/webserver.rb b/Tools/iExploder/htdocs/webserver.rb
new file mode 100755
index 0000000..5176172
--- /dev/null
+++ b/Tools/iExploder/htdocs/webserver.rb
@@ -0,0 +1,75 @@
+#!/usr/bin/ruby
+# iExploder - Generates bad HTML files to perform QA for web browsers.
+# Developed for the Mozilla Foundation.
+#####################
+#
+# Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
+#
+# This software is provided 'as-is', without any express or implied warranty.
+# In no event will the authors be held liable for any damages arising from the
+# use of this software.
+#
+# Permission is granted to anyone to use this software for any purpose,
+# including commercial applications, and to alter it and redistribute it
+# freely, subject to the following restrictions:
+#
+# 1. The origin of this software must not be misrepresented; you must not
+# claim that you wrote the original software. If you use this software in a
+# product, an acknowledgment in the product documentation would be appreciated
+# but is not required.
+#
+# 2. Altered source versions must be plainly marked as such, and must not be
+# misrepresented as being the original software.
+#
+# 3. This notice may not be removed or altered from any source distribution.
+
+require 'webrick'
+require 'iexploder';
+require 'config';
+
+include WEBrick
+### THE INTERACTION ##################################
+$ie_preload = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS)
+$ie_preload.readTagFiles()
+$ie_preload.url='/iexploder.cgi'
+
+if ARGV[0]
+ port = ARGV[0].to_i
+else
+ port = 2000
+end
+
+puts "* iExploder #{$VERSION} will be available at http://localhost:#{port}"
+puts "* Max Tags: #$HTML_MAX_TAGS Max Attrs: #$HTML_MAX_ATTRS Max Props: #$CSS_MAX_PROPS"
+puts
+
+s = HTTPServer.new( :Port => port )
+class IEServlet < HTTPServlet::AbstractServlet
+ def do_GET(req, res)
+ ie = $ie_preload.dup
+ ie.test_num = req.query['test'].to_i
+ ie.subtest_num = req.query['subtest'].to_i || 0
+ ie.random_mode = req.query['random']
+ ie.lookup_mode = req.query['lookup']
+ ie.stop_num = req.query['stop'].to_i
+ ie.setRandomSeed
+
+ res['Content-Type'] = 'text/html'
+ res.body = ie.buildPage()
+ end
+end
+
+class IEForm < HTTPServlet::AbstractServlet
+ def do_GET(req, res)
+ res['Content-Type'] = 'text/html'
+ res.body = File.open("index.html").readlines.join("\n")
+ end
+end
+
+
+
+s.mount("/iexploder.cgi", IEServlet)
+s.mount("/", IEForm)
+trap("INT") { s.shutdown }
+
+s.start