summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/manual-tests
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-06 11:45:16 +0100
committerSteve Block <steveblock@google.com>2011-05-12 13:44:10 +0100
commitcad810f21b803229eb11403f9209855525a25d57 (patch)
tree29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /Source/WebCore/manual-tests
parent121b0cf4517156d0ac5111caf9830c51b69bae8f (diff)
downloadexternal_webkit-cad810f21b803229eb11403f9209855525a25d57.zip
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'Source/WebCore/manual-tests')
-rw-r--r--Source/WebCore/manual-tests/ATSU-bad-layout.html24
-rw-r--r--Source/WebCore/manual-tests/DOMContextMenuEvent.html56
-rw-r--r--Source/WebCore/manual-tests/Default-port-frame.html12
-rw-r--r--Source/WebCore/manual-tests/JavaScript-bookmarklets.html55
-rw-r--r--Source/WebCore/manual-tests/NPN_Invoke/English.lproj/Localized.r17
-rw-r--r--Source/WebCore/manual-tests/NPN_Invoke/Info.plist30
-rw-r--r--Source/WebCore/manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj/project.pbxproj253
-rw-r--r--Source/WebCore/manual-tests/NPN_Invoke/main.c265
-rw-r--r--Source/WebCore/manual-tests/NPN_Invoke/test.html29
-rw-r--r--Source/WebCore/manual-tests/WebKitSite.webarchivebin0 -> 133460 bytes
-rw-r--r--Source/WebCore/manual-tests/accessibility/java-applet.html20
-rw-r--r--Source/WebCore/manual-tests/accessibility/resources/AppletTest.classbin0 -> 633 bytes
-rw-r--r--Source/WebCore/manual-tests/accessibility/resources/AppletTest.java44
-rw-r--r--Source/WebCore/manual-tests/accidental-strict-mode.html13
-rw-r--r--Source/WebCore/manual-tests/animate-duration.html65
-rw-r--r--Source/WebCore/manual-tests/animate-left.html43
-rw-r--r--Source/WebCore/manual-tests/animate-none.html207
-rw-r--r--Source/WebCore/manual-tests/animated-gif-bfcache-crash.html50
-rw-r--r--Source/WebCore/manual-tests/animated-gif-looping.html20
-rw-r--r--Source/WebCore/manual-tests/animation-with-transition.html60
-rw-r--r--Source/WebCore/manual-tests/animation/animateColor-by.svg6
-rw-r--r--Source/WebCore/manual-tests/animation/animateColor-from-by.svg6
-rw-r--r--Source/WebCore/manual-tests/animation/animateColor-repeat-indefinite.svg6
-rw-r--r--Source/WebCore/manual-tests/animation/animateColor-to-from.svg6
-rw-r--r--Source/WebCore/manual-tests/animation/animateColor-to.svg6
-rw-r--r--Source/WebCore/manual-tests/animation/animateColor-values-simple.svg6
-rw-r--r--Source/WebCore/manual-tests/animation/animateMotion-to.svg8
-rw-r--r--Source/WebCore/manual-tests/animation/animateTransform-keyTimes.svg11
-rw-r--r--Source/WebCore/manual-tests/animation/animateTransform-parser.svg86
-rw-r--r--Source/WebCore/manual-tests/animation/animateTransform-repeat-once.svg8
-rw-r--r--Source/WebCore/manual-tests/animation/animateTransform-toanimation.svg9
-rw-r--r--Source/WebCore/manual-tests/animation/set-to.svg10
-rw-r--r--Source/WebCore/manual-tests/animation/transitions-and-paused-animations.html71
-rw-r--r--Source/WebCore/manual-tests/applet-finish-parsing-children.html11
-rw-r--r--Source/WebCore/manual-tests/applet-param-no-name.html4
-rw-r--r--Source/WebCore/manual-tests/array-out-of-memory.html42
-rw-r--r--Source/WebCore/manual-tests/arrow-key-events.html93
-rw-r--r--Source/WebCore/manual-tests/audio-volume.html28
-rw-r--r--Source/WebCore/manual-tests/autocompletion-fire-onchange.html40
-rw-r--r--Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-ESC.html50
-rw-r--r--Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-typing-1.html59
-rw-r--r--Source/WebCore/manual-tests/autocorrection/autocorrection-contraction.html52
-rw-r--r--Source/WebCore/manual-tests/autocorrection/continue-typing-to-dismiss-reversion.html49
-rw-r--r--Source/WebCore/manual-tests/autocorrection/delete-to-dismiss-reversion.html49
-rw-r--r--Source/WebCore/manual-tests/autocorrection/delete-to-end-of-word-to-show-reversion.html49
-rw-r--r--Source/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html49
-rw-r--r--Source/WebCore/manual-tests/autocorrection/move-to-end-of-word-to-show-reversion.html49
-rw-r--r--Source/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html49
-rw-r--r--Source/WebCore/manual-tests/autocorrection/type-whitespace-to-dismiss-reversion.html50
-rw-r--r--Source/WebCore/manual-tests/autofill-popup-width-and-item-direction.html37
-rw-r--r--Source/WebCore/manual-tests/autofill_alignment.html25
-rw-r--r--Source/WebCore/manual-tests/autoscroll-over-scrollbar.html8
-rw-r--r--Source/WebCore/manual-tests/autoscroll-when-outside-window.html7
-rw-r--r--Source/WebCore/manual-tests/autoscroll.html32
-rw-r--r--Source/WebCore/manual-tests/back-forward-during-alert-1.html3
-rw-r--r--Source/WebCore/manual-tests/back-forward-during-alert-2.html10
-rw-r--r--Source/WebCore/manual-tests/back.html1
-rw-r--r--Source/WebCore/manual-tests/background-image-change-in-page-cache.html30
-rw-r--r--Source/WebCore/manual-tests/bad-clearTimeout-crash.html13
-rw-r--r--Source/WebCore/manual-tests/bidi-parens.html18
-rw-r--r--Source/WebCore/manual-tests/bidi-visible-control-characters.html12
-rw-r--r--Source/WebCore/manual-tests/bugzilla-14899.html33
-rw-r--r--Source/WebCore/manual-tests/bugzilla-3855.html34
-rw-r--r--Source/WebCore/manual-tests/bugzilla-48077.html87
-rw-r--r--Source/WebCore/manual-tests/bugzilla-4840.html26
-rw-r--r--Source/WebCore/manual-tests/bugzilla-5768.html41
-rw-r--r--Source/WebCore/manual-tests/bugzilla-6821.html57
-rw-r--r--Source/WebCore/manual-tests/canvas-mask-redraw.html65
-rw-r--r--Source/WebCore/manual-tests/caret-image.html9
-rw-r--r--Source/WebCore/manual-tests/caretScrolling.html18
-rw-r--r--Source/WebCore/manual-tests/chrome-bidi-text.html5
-rw-r--r--Source/WebCore/manual-tests/chromium/no-autofill-on-readonly.html33
-rw-r--r--Source/WebCore/manual-tests/chromium/onchange-reload-popup.html44
-rw-r--r--Source/WebCore/manual-tests/chromium/select-close-popup-value-change.html20
-rw-r--r--Source/WebCore/manual-tests/chromium/suggestions-popup-font-change.html21
-rw-r--r--Source/WebCore/manual-tests/clear-input-file.html27
-rw-r--r--Source/WebCore/manual-tests/clearTimeout-crash-bug29832.html20
-rw-r--r--Source/WebCore/manual-tests/close-on-closedWindow.html39
-rw-r--r--Source/WebCore/manual-tests/compositing/accel-comp-iframe-tab-repaint.html15
-rw-r--r--Source/WebCore/manual-tests/compositing/assert-on-tab-switch.html20
-rw-r--r--Source/WebCore/manual-tests/compositing/caret-in-compositing-frame.html7
-rw-r--r--Source/WebCore/manual-tests/compositing/font-smoothing.html34
-rw-r--r--Source/WebCore/manual-tests/compositing/missing-iframe-contents.html33
-rw-r--r--Source/WebCore/manual-tests/compositing/resources/composited-subframe.html28
-rw-r--r--Source/WebCore/manual-tests/compositing/resources/editable-compositing-subframe.html9
-rw-r--r--Source/WebCore/manual-tests/compositing/resources/flash-frame.html3
-rw-r--r--Source/WebCore/manual-tests/compositing/resources/tab-repaint-part-2.html18
-rw-r--r--Source/WebCore/manual-tests/compositing/show-composited-iframe-on-back-button.html76
-rw-r--r--Source/WebCore/manual-tests/computed-transform-value.html49
-rw-r--r--Source/WebCore/manual-tests/containing-block-position-change.html35
-rw-r--r--Source/WebCore/manual-tests/contenteditable-link.html29
-rw-r--r--Source/WebCore/manual-tests/context-click-generated-content.html21
-rw-r--r--Source/WebCore/manual-tests/context-click-unfocused-frame.html17
-rw-r--r--Source/WebCore/manual-tests/crash-and-no-repaint-after-wake-from-sleep.html186
-rw-r--r--Source/WebCore/manual-tests/crash-on-accessing-domwindow-without-frame.html22
-rw-r--r--Source/WebCore/manual-tests/crash-on-find-with-no-selection.html12
-rw-r--r--Source/WebCore/manual-tests/css3-cursor-fallback-quirks.html64
-rw-r--r--Source/WebCore/manual-tests/css3-cursor-fallback-strict.html56
-rw-r--r--Source/WebCore/manual-tests/cur-hotspot.html12
-rw-r--r--Source/WebCore/manual-tests/cursor-empty-url.html3
-rw-r--r--Source/WebCore/manual-tests/cursor-max-size.html25
-rw-r--r--Source/WebCore/manual-tests/cursor.html38
-rw-r--r--Source/WebCore/manual-tests/cursorfallback.xml32
-rw-r--r--Source/WebCore/manual-tests/custom-cursors.html10
-rw-r--r--Source/WebCore/manual-tests/database-threading-stress-test-2.html51
-rw-r--r--Source/WebCore/manual-tests/database-threading-stress-test.html84
-rw-r--r--Source/WebCore/manual-tests/debugger-caught-uncaught-exceptions.html35
-rw-r--r--Source/WebCore/manual-tests/deleteToEndOfLine.html20
-rw-r--r--Source/WebCore/manual-tests/dictionary-scrolled-iframe.html28
-rw-r--r--Source/WebCore/manual-tests/directory-drop-on-view.html20
-rw-r--r--Source/WebCore/manual-tests/disable-javascript-reload.html21
-rw-r--r--Source/WebCore/manual-tests/disabled-option-elements.html26
-rw-r--r--Source/WebCore/manual-tests/display-none-option.html11
-rw-r--r--Source/WebCore/manual-tests/divx-plugin-fails-to-draw.html12
-rw-r--r--Source/WebCore/manual-tests/dom-manipulation-on-resize.html28
-rw-r--r--Source/WebCore/manual-tests/dom/document-write-synchronous-after-page-load.html23
-rw-r--r--Source/WebCore/manual-tests/dom/form-control-for-label.html12
-rw-r--r--Source/WebCore/manual-tests/dom/progressbar.html8
-rw-r--r--Source/WebCore/manual-tests/drag-caret.html3
-rw-r--r--Source/WebCore/manual-tests/drag-cursor-notallowed.html111
-rw-r--r--Source/WebCore/manual-tests/drag-enter-alert.html29
-rw-r--r--Source/WebCore/manual-tests/drag-escape.html57
-rw-r--r--Source/WebCore/manual-tests/drag-image-table-part-decorations.html19
-rw-r--r--Source/WebCore/manual-tests/drag-image-to-address-bar.html24
-rw-r--r--Source/WebCore/manual-tests/drag-image-to-desktop.html15
-rw-r--r--Source/WebCore/manual-tests/drag-image.html27
-rw-r--r--Source/WebCore/manual-tests/drag-move-in-search-field.html11
-rw-r--r--Source/WebCore/manual-tests/drag-out-of-background-window.html26
-rw-r--r--Source/WebCore/manual-tests/drag-with-div-or-image-as-data-image.html55
-rw-r--r--Source/WebCore/manual-tests/drag_select_highlighting.html14
-rw-r--r--Source/WebCore/manual-tests/drag_with_opacity.html33
-rw-r--r--Source/WebCore/manual-tests/drop-in-empty-doc.html6
-rw-r--r--Source/WebCore/manual-tests/drop-text-acquires-style.html11
-rw-r--r--Source/WebCore/manual-tests/empty-link-target.html28
-rw-r--r--Source/WebCore/manual-tests/empty-script-crash.html6
-rw-r--r--Source/WebCore/manual-tests/empty-title-popup.html3
-rw-r--r--Source/WebCore/manual-tests/find-count-matches-after-text-control.html14
-rw-r--r--Source/WebCore/manual-tests/first-line-style-crash.html23
-rw-r--r--Source/WebCore/manual-tests/flash-unload-tab.html39
-rw-r--r--Source/WebCore/manual-tests/flipped-text-rendering.html14
-rw-r--r--Source/WebCore/manual-tests/focus-change-between-key-events.html24
-rw-r--r--Source/WebCore/manual-tests/focus-select-when-clicked.html29
-rw-r--r--Source/WebCore/manual-tests/focusringcolor-change-on-theme-change.html8
-rw-r--r--Source/WebCore/manual-tests/form-control-madness.html46
-rw-r--r--Source/WebCore/manual-tests/form-element-spelling.html6
-rw-r--r--Source/WebCore/manual-tests/form-value-restore.html9
-rw-r--r--Source/WebCore/manual-tests/frame-hover.html5
-rw-r--r--Source/WebCore/manual-tests/frames/nested-iframe-blit-on-scroll.html31
-rw-r--r--Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subframe.html10
-rw-r--r--Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subsubframe.html10
-rw-r--r--Source/WebCore/manual-tests/go-back-after-alert.html7
-rw-r--r--Source/WebCore/manual-tests/goBack-blank-tab-page.html19
-rw-r--r--Source/WebCore/manual-tests/gtk/caret-browsing.html7
-rw-r--r--Source/WebCore/manual-tests/gtk/copy-htmltext.html24
-rw-r--r--Source/WebCore/manual-tests/gtk/cursor-image.html4
-rw-r--r--Source/WebCore/manual-tests/gtk/floatingdiv.html149
-rw-r--r--Source/WebCore/manual-tests/gtk/paste-richtext-from-firefox.html30
-rw-r--r--Source/WebCore/manual-tests/gtk/plugin-resize-scroll.html28
-rw-r--r--Source/WebCore/manual-tests/gtk/resources/cell.curbin0 -> 326 bytes
-rw-r--r--Source/WebCore/manual-tests/gtk/resources/long_cell.cur0
-rw-r--r--Source/WebCore/manual-tests/hash-ref.html25
-rw-r--r--Source/WebCore/manual-tests/image-prefetch-stress.html20
-rw-r--r--Source/WebCore/manual-tests/ime-keydown-preventdefault.html27
-rw-r--r--Source/WebCore/manual-tests/indexeddb-persists.html69
-rw-r--r--Source/WebCore/manual-tests/inline-input-marking.html38
-rw-r--r--Source/WebCore/manual-tests/input-empty-on-focus.html6
-rw-r--r--Source/WebCore/manual-tests/input-starved-by-timers.html51
-rw-r--r--Source/WebCore/manual-tests/input-type-datetime-default-value.html80
-rw-r--r--Source/WebCore/manual-tests/input-type-file-autocomplete-frame-1.html23
-rw-r--r--Source/WebCore/manual-tests/input-type-file-autocomplete-frame-2.html7
-rw-r--r--Source/WebCore/manual-tests/input-type-file-autocomplete-refresh.html10
-rw-r--r--Source/WebCore/manual-tests/input-type-file-drag-drop.html18
-rw-r--r--Source/WebCore/manual-tests/input-type-text-unconfirmed-inline-input.html20
-rw-r--r--Source/WebCore/manual-tests/inspector-document-methods-override.html14
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/console-alert-document-body.html14
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/console-alert-object.html14
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/console-alert-this.html17
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/console-eval.html11
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/console-str-alert-object.html15
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/console-str-getter.html12
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/inspector-evaluate.html11
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/inspector-hasAttributes.html18
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/inspector-treeElementIdentifier.html17
-rw-r--r--Source/WebCore/manual-tests/inspector-wrappers/inspector-wrappers-test-utils.js46
-rw-r--r--Source/WebCore/manual-tests/inspector/bp-in-named-eval-after-reload.html65
-rw-r--r--Source/WebCore/manual-tests/inspector/command-line-api.html6
-rw-r--r--Source/WebCore/manual-tests/inspector/console-assert.html37
-rw-r--r--Source/WebCore/manual-tests/inspector/console-call-line-numbers.html14
-rw-r--r--Source/WebCore/manual-tests/inspector/console-dir.html31
-rw-r--r--Source/WebCore/manual-tests/inspector/console-log-formatting.html68
-rw-r--r--Source/WebCore/manual-tests/inspector/console-time.html33
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-execution-while-paused.html15
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-pause-during-load.html5
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-pause-on-else-statements.html18
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-pause-on-for-in-statements.html18
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-pause-on-for-statements.html16
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-scopes-inspection.html35
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-shortcuts-with-console-opened.html16
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-status-bar-buttons-state.html2
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-step-on-do-while-statements.html29
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-step-on-for-in-statements.html35
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-step-on-for-statements.html28
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-step-on-while-statements.html29
-rw-r--r--Source/WebCore/manual-tests/inspector/debugger-watch-expressions.html115
-rw-r--r--Source/WebCore/manual-tests/inspector/display-form-data.html249
-rw-r--r--Source/WebCore/manual-tests/inspector/display-sql-null.html21
-rw-r--r--Source/WebCore/manual-tests/inspector/display-sql-transaction-error.html24
-rw-r--r--Source/WebCore/manual-tests/inspector/dom-mutation.html31
-rw-r--r--Source/WebCore/manual-tests/inspector/duplicate-resource-urls.html61
-rw-r--r--Source/WebCore/manual-tests/inspector/error-warning-count.html60
-rw-r--r--Source/WebCore/manual-tests/inspector/errors-with-space in-url.html7
-rw-r--r--Source/WebCore/manual-tests/inspector/escape-links.html1
-rw-r--r--Source/WebCore/manual-tests/inspector/forzen-ui-while-paused.html11
-rw-r--r--Source/WebCore/manual-tests/inspector/hidden-evals.html118
-rw-r--r--Source/WebCore/manual-tests/inspector/highlight-nodes.html23
-rw-r--r--Source/WebCore/manual-tests/inspector/highlight-source-line.html4
-rw-r--r--Source/WebCore/manual-tests/inspector/multiple-console-messages.html86
-rw-r--r--Source/WebCore/manual-tests/inspector/named-evals.html72
-rw-r--r--Source/WebCore/manual-tests/inspector/profiler-test-call.html35
-rw-r--r--Source/WebCore/manual-tests/inspector/profiler-test-many-calls-in-the-same-scope.html42
-rw-r--r--Source/WebCore/manual-tests/inspector/remember-last-script.html42
-rw-r--r--Source/WebCore/manual-tests/inspector/resources/loop-statements.js22
-rw-r--r--Source/WebCore/manual-tests/inspector/resources/mutate-frame-2.html12
-rw-r--r--Source/WebCore/manual-tests/inspector/resources/mutate-frame.html10
-rw-r--r--Source/WebCore/manual-tests/inspector/resources/script-console-calls.js8
-rw-r--r--Source/WebCore/manual-tests/inspector/resources/script-error.js6
-rw-r--r--Source/WebCore/manual-tests/inspector/returnEvent-crash.html17
-rw-r--r--Source/WebCore/manual-tests/inspector/styled-error-bubbles-in-scripts.html6
-rw-r--r--Source/WebCore/manual-tests/inspector/webinspector-log.html22
-rw-r--r--Source/WebCore/manual-tests/interrupted-compound-transform.html79
-rw-r--r--Source/WebCore/manual-tests/invalid-mouse-event.html23
-rw-r--r--Source/WebCore/manual-tests/item-background.html155
-rw-r--r--Source/WebCore/manual-tests/java-string-object-type.html24
-rw-r--r--Source/WebCore/manual-tests/js-timers-beneath-modal-dialog.html19
-rw-r--r--Source/WebCore/manual-tests/keep_spelling_markers.html24
-rw-r--r--Source/WebCore/manual-tests/keyboard-menukey-event.html31
-rw-r--r--Source/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html29
-rw-r--r--Source/WebCore/manual-tests/keyboard_select_non_english.html36
-rw-r--r--Source/WebCore/manual-tests/korean-input-space.htmlbin0 -> 1248 bytes
-rw-r--r--Source/WebCore/manual-tests/large-size-image-crash.html6
-rw-r--r--Source/WebCore/manual-tests/layoutroot_detach.xml33
-rw-r--r--Source/WebCore/manual-tests/left-overflow-repaint.html61
-rw-r--r--Source/WebCore/manual-tests/link-cursor-auto.html24
-rw-r--r--Source/WebCore/manual-tests/linkjump-1.html79
-rw-r--r--Source/WebCore/manual-tests/linkjump-2.html37
-rw-r--r--Source/WebCore/manual-tests/linkjump-3.html125
-rw-r--r--Source/WebCore/manual-tests/linkjump-4.html132
-rw-r--r--Source/WebCore/manual-tests/linkjump-5.html24
-rw-r--r--Source/WebCore/manual-tests/liveconnect-applet-array-parameters.html32
-rw-r--r--Source/WebCore/manual-tests/liveconnect-applet-get-boolean.html7
-rw-r--r--Source/WebCore/manual-tests/liveconnect-security-exception.html32
-rw-r--r--Source/WebCore/manual-tests/load-deferrer-resume-crash.html33
-rw-r--r--Source/WebCore/manual-tests/load-deferrer-script-element.html44
-rw-r--r--Source/WebCore/manual-tests/localstorage-empty-database.html16
-rw-r--r--Source/WebCore/manual-tests/location-host-canonicalization.html15
-rw-r--r--Source/WebCore/manual-tests/log-keypress-events.html34
-rw-r--r--Source/WebCore/manual-tests/mail-attachments.html16
-rw-r--r--Source/WebCore/manual-tests/mask-composite-missing-images.html23
-rw-r--r--Source/WebCore/manual-tests/match-marker-rects.html33
-rw-r--r--Source/WebCore/manual-tests/media-controls-when-javascript-disabled.html26
-rw-r--r--Source/WebCore/manual-tests/media-elements/video-replaces-poster.html15
-rw-r--r--Source/WebCore/manual-tests/memory/MessageUidsAlreadyDownloaded24296
-rw-r--r--Source/WebCore/manual-tests/memory/string-growth.html16
-rw-r--r--Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseText.html57
-rw-r--r--Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseXML.html117
-rw-r--r--Source/WebCore/manual-tests/memory/xhr-multiple-requests.html55
-rw-r--r--Source/WebCore/manual-tests/memory/xhr-repeated-string-access.xml43
-rw-r--r--Source/WebCore/manual-tests/modal-dialog-arguments.html19
-rw-r--r--Source/WebCore/manual-tests/modal-dialog-blur-selfclose.html3
-rw-r--r--Source/WebCore/manual-tests/modal-dialog-blur.html34
-rw-r--r--Source/WebCore/manual-tests/modal-dialog.html27
-rw-r--r--Source/WebCore/manual-tests/mouseevent-on-closeddoc.html22
-rw-r--r--Source/WebCore/manual-tests/mouseevents-on-textnodes.html43
-rw-r--r--Source/WebCore/manual-tests/named-window-blank-target.html19
-rw-r--r--Source/WebCore/manual-tests/nested-plug-ins.html45
-rw-r--r--Source/WebCore/manual-tests/new-window-subresource-crash.html20
-rw-r--r--Source/WebCore/manual-tests/no-listbox-rendering.html66
-rw-r--r--Source/WebCore/manual-tests/no-repaint-after-wake-from-sleep.html183
-rw-r--r--Source/WebCore/manual-tests/non-bmp.html12
-rw-r--r--Source/WebCore/manual-tests/onbeforeunload-close_with_javascript.html40
-rw-r--r--Source/WebCore/manual-tests/onblur-remove.html31
-rw-r--r--Source/WebCore/manual-tests/onclick_in_noncontent.html19
-rw-r--r--Source/WebCore/manual-tests/onfocus-alert-blinking-caret.html8
-rw-r--r--Source/WebCore/manual-tests/onsearch-enter.html7
-rw-r--r--Source/WebCore/manual-tests/onunload-form-submit-crash.html9
-rw-r--r--Source/WebCore/manual-tests/open-after-close.html16
-rw-r--r--Source/WebCore/manual-tests/open-close-tokenizer-crash.html6
-rw-r--r--Source/WebCore/manual-tests/open-url-undefined.html11
-rw-r--r--Source/WebCore/manual-tests/optgroup-empty-and-nested.html80
-rw-r--r--Source/WebCore/manual-tests/overlappingTableSpans.html27
-rw-r--r--Source/WebCore/manual-tests/paint-during-plugin-attach.html0
-rw-r--r--Source/WebCore/manual-tests/panScroll.html32
-rw-r--r--Source/WebCore/manual-tests/partially-opaque-form-elements.html27
-rw-r--r--Source/WebCore/manual-tests/partially-opaque-text-input.html25
-rw-r--r--Source/WebCore/manual-tests/password-caps-lock.html24
-rw-r--r--Source/WebCore/manual-tests/password-ctrl-click-lose-focus.html23
-rw-r--r--Source/WebCore/manual-tests/paste-crash.html26
-rw-r--r--Source/WebCore/manual-tests/plain-text-paste.html57
-rw-r--r--Source/WebCore/manual-tests/plugin-controller-datasource.html23
-rw-r--r--Source/WebCore/manual-tests/plugin-in-iframe-scroll.html7
-rw-r--r--Source/WebCore/manual-tests/plugin-visible-rect-change.html25
-rw-r--r--Source/WebCore/manual-tests/plugins/flip4mac-update-alert-over-navigation.html30
-rw-r--r--Source/WebCore/manual-tests/plugins/gtk-windowed-grey-glitch.html20
-rw-r--r--Source/WebCore/manual-tests/plugins/object-clipping.html22
-rw-r--r--Source/WebCore/manual-tests/plugins/plugin-paint-causes-layout.html39
-rw-r--r--Source/WebCore/manual-tests/plugins/test.swfbin0 -> 10085 bytes
-rw-r--r--Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.html25
-rw-r--r--Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.swfbin0 -> 5705 bytes
-rw-r--r--Source/WebCore/manual-tests/plugins/windowed.html109
-rw-r--r--Source/WebCore/manual-tests/plugins/windowless.html108
-rw-r--r--Source/WebCore/manual-tests/pointer-events.html203
-rw-r--r--Source/WebCore/manual-tests/post-multi-file-upload.html35
-rw-r--r--Source/WebCore/manual-tests/pre-tab-selection-rect.html66
-rw-r--r--Source/WebCore/manual-tests/preload-scanner-entities.html7
-rw-r--r--Source/WebCore/manual-tests/print-before-load.html16
-rw-r--r--Source/WebCore/manual-tests/print-onload-with-image.html13
-rw-r--r--Source/WebCore/manual-tests/print-with-height-transition-in-screen-stylesheet.html26
-rw-r--r--Source/WebCore/manual-tests/property-map-save-crash.html49
-rw-r--r--Source/WebCore/manual-tests/qt/main.html10
-rw-r--r--Source/WebCore/manual-tests/qt/numpad-enter-key.html22
-rw-r--r--Source/WebCore/manual-tests/qt/plugin-iframe.html26
-rw-r--r--Source/WebCore/manual-tests/qt/plugin-sibling-frame-include.html17
-rw-r--r--Source/WebCore/manual-tests/qt/plugin-sibling-frame.html6
-rw-r--r--Source/WebCore/manual-tests/qt/qtplugin-scrolling.html32
-rw-r--r--Source/WebCore/manual-tests/qt/qtplugin.html27
-rw-r--r--Source/WebCore/manual-tests/qt/unload-alert.html8
-rw-r--r--Source/WebCore/manual-tests/quit-inside-unload.html14
-rw-r--r--Source/WebCore/manual-tests/redirect.html2
-rw-r--r--Source/WebCore/manual-tests/redirectHistory/redir-1.html10
-rw-r--r--Source/WebCore/manual-tests/redirectHistory/redir-2.html9
-rw-r--r--Source/WebCore/manual-tests/redirectHistory/redir-3.html11
-rw-r--r--Source/WebCore/manual-tests/redirection-target.html6
-rw-r--r--Source/WebCore/manual-tests/redraw-page-cache-visited-links.html34
-rw-r--r--Source/WebCore/manual-tests/remove-form-node-with-radio-buttons-crash.html33
-rw-r--r--Source/WebCore/manual-tests/remove-input-file-onchange.html42
-rw-r--r--Source/WebCore/manual-tests/remove-on-drop-crash.html10
-rw-r--r--Source/WebCore/manual-tests/remove-select-onchange.html9
-rw-r--r--Source/WebCore/manual-tests/reset-initiatedDrag.html27
-rw-r--r--Source/WebCore/manual-tests/resources/200x100.pngbin0 -> 236 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/200x200.pngbin0 -> 314 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/3dolph.gifbin0 -> 17455 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.classbin0 -> 2145 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.java89
-rw-r--r--Source/WebCore/manual-tests/resources/CheckerApplet.classbin0 -> 425 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/CheckerApplet.java21
-rw-r--r--Source/WebCore/manual-tests/resources/Default-port-frame-contents.html4
-rw-r--r--Source/WebCore/manual-tests/resources/DrawMessage.classbin0 -> 1219 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/StringTypeTest.classbin0 -> 354 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/StringTypeTest.java7
-rw-r--r--Source/WebCore/manual-tests/resources/TestApplet.classbin0 -> 427 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/TestApplet.java16
-rw-r--r--Source/WebCore/manual-tests/resources/alert-and-go-back.html4
-rw-r--r--Source/WebCore/manual-tests/resources/animated-10x.gifbin0 -> 1253 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/animated-2x.gifbin0 -> 2311 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/animated-infinite.gifbin0 -> 1661 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/apple.jpgbin0 -> 6388 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/before-go-back.html17
-rw-r--r--Source/WebCore/manual-tests/resources/big-page.html2
-rw-r--r--Source/WebCore/manual-tests/resources/chrome-bidi-text-window.html61
-rw-r--r--Source/WebCore/manual-tests/resources/containsAnimatedGif.html3
-rw-r--r--Source/WebCore/manual-tests/resources/cur-hotspot.curbin0 -> 4286 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/cursor-empty-url.css1
-rw-r--r--Source/WebCore/manual-tests/resources/drag-image.pngbin0 -> 229 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/drop-in-empty-doc.xhtml0
-rw-r--r--Source/WebCore/manual-tests/resources/empty-file.js0
-rw-r--r--Source/WebCore/manual-tests/resources/frame1.html8
-rw-r--r--Source/WebCore/manual-tests/resources/frame2.html8
-rw-r--r--Source/WebCore/manual-tests/resources/hash-ref-test.html24
-rw-r--r--Source/WebCore/manual-tests/resources/helpCursor.tiffbin0 -> 274 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/hover-subframe-1.html29
-rw-r--r--Source/WebCore/manual-tests/resources/hover-subframe-2.html29
-rw-r--r--Source/WebCore/manual-tests/resources/large-size-image-crash.gifbin0 -> 16204 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/liveconnect-security-exception-popup.html47
-rw-r--r--Source/WebCore/manual-tests/resources/load-deferrer-script-element.js5
-rw-r--r--Source/WebCore/manual-tests/resources/lorem-text.html34
-rw-r--r--Source/WebCore/manual-tests/resources/mouseevent-on-closeddoc.html1
-rwxr-xr-xSource/WebCore/manual-tests/resources/multiFileResources/post-echo-and-notify-done.cgi12
-rw-r--r--Source/WebCore/manual-tests/resources/multiFileResources/testFile1.html4
-rw-r--r--Source/WebCore/manual-tests/resources/multiFileResources/testFile2.html4
-rw-r--r--Source/WebCore/manual-tests/resources/multiFileResources/testFile3.html5
-rw-r--r--Source/WebCore/manual-tests/resources/named-window-blank-target-step2.html19
-rw-r--r--Source/WebCore/manual-tests/resources/named-window-blank-target-step3.html14
-rw-r--r--Source/WebCore/manual-tests/resources/named-window-blank-target-step4.html14
-rw-r--r--Source/WebCore/manual-tests/resources/nested-plug-ins-inner-frame.html1
-rw-r--r--Source/WebCore/manual-tests/resources/nested-plug-ins-outer-frame.html3
-rw-r--r--Source/WebCore/manual-tests/resources/nestedframesets.html4
-rw-r--r--Source/WebCore/manual-tests/resources/non-animated.gifbin0 -> 1642 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/open-after-close-popup.html5
-rw-r--r--Source/WebCore/manual-tests/resources/open-close-tokenizer-crash.html8
-rw-r--r--Source/WebCore/manual-tests/resources/orange.movbin0 -> 875 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/plain-text-paste.dmgbin0 -> 63687 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/plugin-in-iframe-scroll-iframe.html6
-rw-r--r--Source/WebCore/manual-tests/resources/popup200x100.html8
-rw-r--r--Source/WebCore/manual-tests/resources/popup200x200.html8
-rwxr-xr-xSource/WebCore/manual-tests/resources/print-subframe.html1
-rw-r--r--Source/WebCore/manual-tests/resources/redraw-page-cache-visited-links-2.html19
-rw-r--r--Source/WebCore/manual-tests/resources/simple_image.pngbin0 -> 10585 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/spinbox.swfbin0 -> 1083 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/testframe-link_text.html5
-rw-r--r--Source/WebCore/manual-tests/resources/testframeset.html4
-rw-r--r--Source/WebCore/manual-tests/resources/textarea-form-back-on-submit.html16
-rw-r--r--Source/WebCore/manual-tests/resources/touch-poster.pngbin0 -> 11681 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/video-tab.html1
-rw-r--r--Source/WebCore/manual-tests/resources/webkit-background.pngbin0 -> 41522 bytes
-rw-r--r--Source/WebCore/manual-tests/resources/will-go-back.html11
-rw-r--r--Source/WebCore/manual-tests/resources/window-close-during-parsing-popup1.html11
-rw-r--r--Source/WebCore/manual-tests/resources/window-close-during-parsing-popup2.html7
-rw-r--r--Source/WebCore/manual-tests/resources/write-after-open-popup.html5
-rw-r--r--Source/WebCore/manual-tests/right-click-crash.html6
-rw-r--r--Source/WebCore/manual-tests/screen-availLeft.html27
-rw-r--r--Source/WebCore/manual-tests/scrollIntoView-horizontal.html33
-rw-r--r--Source/WebCore/manual-tests/scrollIntoView-vertical.html45
-rw-r--r--Source/WebCore/manual-tests/scrollbar-hittest.html26
-rw-r--r--Source/WebCore/manual-tests/scrollbar-hittest2.html21
-rw-r--r--Source/WebCore/manual-tests/scrollbar-hover-active.html76
-rw-r--r--Source/WebCore/manual-tests/scrolling-nestedframesets.html28
-rw-r--r--Source/WebCore/manual-tests/secure-keyboard-enabled-after-submit.html34
-rw-r--r--Source/WebCore/manual-tests/select-delete-item.html21
-rw-r--r--Source/WebCore/manual-tests/select-element-type-select.html33
-rw-r--r--Source/WebCore/manual-tests/select-narrow-width.html48
-rw-r--r--Source/WebCore/manual-tests/select-onchange-after-js.html47
-rw-r--r--Source/WebCore/manual-tests/select-option-in-onload.html30
-rw-r--r--Source/WebCore/manual-tests/select-popup-on-spacebar.html29
-rw-r--r--Source/WebCore/manual-tests/select-scroll.html34
-rw-r--r--Source/WebCore/manual-tests/select-webkit-appearance-off-narrow-select.html49
-rw-r--r--Source/WebCore/manual-tests/select_alignment.html34
-rw-r--r--Source/WebCore/manual-tests/select_dropdown_box_alignment.html30
-rw-r--r--Source/WebCore/manual-tests/select_hr.html234
-rw-r--r--Source/WebCore/manual-tests/selection-drag-crash.html14
-rw-r--r--Source/WebCore/manual-tests/show-hide-object.html64
-rw-r--r--Source/WebCore/manual-tests/show-modal-dialog-test.html15
-rw-r--r--Source/WebCore/manual-tests/showModalDialog-returnValue.html13
-rw-r--r--Source/WebCore/manual-tests/simple-image-compositing.html76
-rw-r--r--Source/WebCore/manual-tests/slider-thumb-tracking.html28
-rw-r--r--Source/WebCore/manual-tests/spatial-navigation/frameset.html7
-rw-r--r--Source/WebCore/manual-tests/spatial-navigation/links.html8
-rw-r--r--Source/WebCore/manual-tests/spatial-navigation/spatial-navigation-test-cases.html147
-rw-r--r--Source/WebCore/manual-tests/stale-currentEvent.html57
-rw-r--r--Source/WebCore/manual-tests/stale-scrollbar-client-crash.html54
-rw-r--r--Source/WebCore/manual-tests/style-keypress-events.html38
-rw-r--r--Source/WebCore/manual-tests/submit-form-with-target-twice.html15
-rw-r--r--Source/WebCore/manual-tests/subview-click-assertion.html32
-rw-r--r--Source/WebCore/manual-tests/svg-animated-gifs.svg17
-rw-r--r--Source/WebCore/manual-tests/svg-animation-parseValues.svg15
-rw-r--r--Source/WebCore/manual-tests/svg-crash-hovering-use.svg30
-rw-r--r--Source/WebCore/manual-tests/svg-cursor-changes.svg29
-rw-r--r--Source/WebCore/manual-tests/svg-deep-clone-to-new-doc.html56
-rw-r--r--Source/WebCore/manual-tests/svg-filter-animation.svg120
-rw-r--r--Source/WebCore/manual-tests/svg-link-hover-use.svg9
-rw-r--r--Source/WebCore/manual-tests/svg-links.svg12
-rw-r--r--Source/WebCore/manual-tests/svg-node-count-vs-scroll.xhtml42
-rw-r--r--Source/WebCore/manual-tests/svg-repaint-foreignObject.svg81
-rw-r--r--Source/WebCore/manual-tests/svg-repaint-group.svg81
-rw-r--r--Source/WebCore/manual-tests/svg-repaint-image.svg77
-rw-r--r--Source/WebCore/manual-tests/svg-repaint-path.svg77
-rw-r--r--Source/WebCore/manual-tests/svg-text-selection.svg9
-rw-r--r--Source/WebCore/manual-tests/svg-tooltip.svg62
-rw-r--r--Source/WebCore/manual-tests/system-color-change.html7
-rw-r--r--Source/WebCore/manual-tests/tabbing-input-google.html24
-rw-r--r--Source/WebCore/manual-tests/target-test.html1
-rw-r--r--Source/WebCore/manual-tests/target_new-1.html11
-rw-r--r--Source/WebCore/manual-tests/target_new.html28
-rw-r--r--Source/WebCore/manual-tests/targeted.html1
-rw-r--r--Source/WebCore/manual-tests/template.html24
-rw-r--r--Source/WebCore/manual-tests/test-iframes-loading-the-same-resource.html19
-rw-r--r--Source/WebCore/manual-tests/text-field-autoscroll.html23
-rw-r--r--Source/WebCore/manual-tests/textarea-after-stylesheet-link.html18
-rw-r--r--Source/WebCore/manual-tests/textarea-caret-position-after-auto-spell-correct.html14
-rw-r--r--Source/WebCore/manual-tests/textarea-focus.html29
-rw-r--r--Source/WebCore/manual-tests/textarea-iframe-navigation.html17
-rw-r--r--Source/WebCore/manual-tests/textarea-iframe-navigation2.html12
-rw-r--r--Source/WebCore/manual-tests/textarea-onpaste.html9
-rw-r--r--Source/WebCore/manual-tests/textarea-reset-default-value.html24
-rw-r--r--Source/WebCore/manual-tests/textfield-onblur.html37
-rw-r--r--Source/WebCore/manual-tests/timeout-test.html13
-rw-r--r--Source/WebCore/manual-tests/timeout-test.php3
-rw-r--r--Source/WebCore/manual-tests/title-internal-whitespace.html12
-rw-r--r--Source/WebCore/manual-tests/transition-accelerated.html46
-rw-r--r--Source/WebCore/manual-tests/transition-delay.html59
-rw-r--r--Source/WebCore/manual-tests/transition-events.html90
-rw-r--r--Source/WebCore/manual-tests/transition-left.html46
-rw-r--r--Source/WebCore/manual-tests/transition-timing-functions.html122
-rw-r--r--Source/WebCore/manual-tests/transitions.html54
-rw-r--r--Source/WebCore/manual-tests/transitions2.html52
-rw-r--r--Source/WebCore/manual-tests/update-empty-popup.html28
-rw-r--r--Source/WebCore/manual-tests/user-drag-with-decorations.html7
-rw-r--r--Source/WebCore/manual-tests/video-in-non-frontmost-tab.html4
-rw-r--r--Source/WebCore/manual-tests/video-player.html103
-rw-r--r--Source/WebCore/manual-tests/video-rtsp.html11
-rw-r--r--Source/WebCore/manual-tests/video-waiting-seeking.html81
-rw-r--r--Source/WebCore/manual-tests/visited-link-new-window.html18
-rw-r--r--Source/WebCore/manual-tests/webarchive-test.html9
-rw-r--r--Source/WebCore/manual-tests/whitespace-pre-affinity.html16
-rw-r--r--Source/WebCore/manual-tests/win/contextmenu-key.html112
-rw-r--r--Source/WebCore/manual-tests/win/contextmenu-key2.html13
-rw-r--r--Source/WebCore/manual-tests/win/milliondollar.html137
-rw-r--r--Source/WebCore/manual-tests/window-close-during-parsing.html18
-rw-r--r--Source/WebCore/manual-tests/window-open-features-parsing.html38
-rwxr-xr-xSource/WebCore/manual-tests/window-print-subframe.html5
-rw-r--r--Source/WebCore/manual-tests/window-sizing.html126
-rw-r--r--Source/WebCore/manual-tests/wml/StartTests.wml35
-rw-r--r--Source/WebCore/manual-tests/wml/a-br-element.wml11
-rw-r--r--Source/WebCore/manual-tests/wml/a-element.wml10
-rw-r--r--Source/WebCore/manual-tests/wml/a-img-element.wml10
-rw-r--r--Source/WebCore/manual-tests/wml/access-target.wml9
-rw-r--r--Source/WebCore/manual-tests/wml/anchor-br-element.wml10
-rw-r--r--Source/WebCore/manual-tests/wml/anchor-element.wml33
-rw-r--r--Source/WebCore/manual-tests/wml/anchor-img-element.wml10
-rw-r--r--Source/WebCore/manual-tests/wml/card-newcontext-attr.wml18
-rw-r--r--Source/WebCore/manual-tests/wml/card-onenterbackward.wml23
-rw-r--r--Source/WebCore/manual-tests/wml/card-onenterforward.wml13
-rw-r--r--Source/WebCore/manual-tests/wml/card-ontimer.wml21
-rw-r--r--Source/WebCore/manual-tests/wml/deck-access-control.wml10
-rw-r--r--Source/WebCore/manual-tests/wml/input-format.wml22
-rw-r--r--Source/WebCore/manual-tests/wml/onevent-go.wml17
-rw-r--r--Source/WebCore/manual-tests/wml/onevent-noop.wml11
-rw-r--r--Source/WebCore/manual-tests/wml/onevent-prev.wml19
-rw-r--r--Source/WebCore/manual-tests/wml/onevent-refresh.wml16
-rw-r--r--Source/WebCore/manual-tests/wml/onevent-shadow.wml28
-rw-r--r--Source/WebCore/manual-tests/wml/resources/smiley.pngbin0 -> 2856 bytes
-rw-r--r--Source/WebCore/manual-tests/wml/select-element.wml24
-rw-r--r--Source/WebCore/manual-tests/wml/select-onpick-event-crash.wml12
-rw-r--r--Source/WebCore/manual-tests/wml/select-onpick-event.wml14
-rw-r--r--Source/WebCore/manual-tests/wml/setvar-element.wml15
-rw-r--r--Source/WebCore/manual-tests/wml/targetdeck.wml13
-rw-r--r--Source/WebCore/manual-tests/wml/task-go-in-anchor.wml9
-rw-r--r--Source/WebCore/manual-tests/wml/task-prev-in-anchor.wml11
-rw-r--r--Source/WebCore/manual-tests/wml/task-refresh-in-anchor.wml15
-rw-r--r--Source/WebCore/manual-tests/wml/template-go.wml18
-rw-r--r--Source/WebCore/manual-tests/wml/template-ontimer.wml16
-rw-r--r--Source/WebCore/manual-tests/wml/timer.wml30
-rw-r--r--Source/WebCore/manual-tests/wml/variable-substitution.wml33
-rw-r--r--Source/WebCore/manual-tests/word-spacing-highlight.html15
-rw-r--r--Source/WebCore/manual-tests/wordXML-selectall.xml3
-rw-r--r--Source/WebCore/manual-tests/write-after-open.html42
-rw-r--r--Source/WebCore/manual-tests/xhr-failure-behind-alert.html10
536 files changed, 20327 insertions, 0 deletions
diff --git a/Source/WebCore/manual-tests/ATSU-bad-layout.html b/Source/WebCore/manual-tests/ATSU-bad-layout.html
new file mode 100644
index 0000000..ab725cb
--- /dev/null
+++ b/Source/WebCore/manual-tests/ATSU-bad-layout.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=9808">Bugzilla bug 9808</a> REGRESSION: Incorrect layout (and ERROR) when forcing ATSU For All Text</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Choose <i>Use ATSU For All Text</i> from Safari&rsquo;s <i>Debug</i> menu and reload this page.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The text &ldquo;Lorem ipsum&rdquo; below will remain on one line.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+There will be a line break after &ldquo;Lorem&rdquo; (and at many other places on this page).
+</p>
+
+<span>Lorem</span> ipsum
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/DOMContextMenuEvent.html b/Source/WebCore/manual-tests/DOMContextMenuEvent.html
new file mode 100644
index 0000000..5c0fc33
--- /dev/null
+++ b/Source/WebCore/manual-tests/DOMContextMenuEvent.html
@@ -0,0 +1,56 @@
+<html>
+<script type="text/javascript">
+
+function context_event(event)
+{
+ if (window.event)
+ {
+ event = window.event;
+ }
+ var swallow = document.getElementById("swallow_context").checked;
+
+ var str =
+ "EVENT PROPERTIES<br>" +
+ "cancelable = "+event.cancelable+"<br>" +
+ "ctrlKey = "+event.ctrlKey+"<br>" +
+ "metaKey = "+event.metaKey+"<br>" +
+ "shiftKey = "+event.shiftKey+"<br>" +
+ "<br>" +
+ "TEST PROPERTIES<br>" +
+ "prevent default = "+swallow+"<br>" +
+ "event time = "+new Date()+"<br>" +
+ "";
+ document.getElementById("event_info").innerHTML=str;
+
+ if (swallow)
+ {
+ if ((typeof event.cancelBubble) != "undefined")
+ event.cancelBubble=true;
+
+ if ((typeof event.preventDefault) != "undefined")
+ event.preventDefault();
+
+ if ((typeof event.returnValue) != "undefined")
+ event.returnValue = false;
+
+ if ((typeof event.stopPropagation) != "undefined")
+ event.stopPropagation();
+
+ return false;
+ }
+
+ return true;
+}
+
+</script>
+
+<body oncontextmenu="return context_event(event)">
+<div>To activate context menu, right-click or ctrl-click anywhere on the page.</div>
+<div>&nbsp;</div>
+<div><input type="checkbox" value="1" name="swallow_context" id="swallow_context"> Prevent default context menu</div>
+<div>&nbsp;</div>
+<tt id="event_info" style='background-color:#eeeeee'>
+ -- No event captured --
+</tt>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/Default-port-frame.html b/Source/WebCore/manual-tests/Default-port-frame.html
new file mode 100644
index 0000000..660947d
--- /dev/null
+++ b/Source/WebCore/manual-tests/Default-port-frame.html
@@ -0,0 +1,12 @@
+To run this test you will need to put this file and Default-port-frame-contents.html
+on a webserver and then point your browser to http://localhost/Default-port-frame.html.
+We cannot make this a LayoutTest because we don't want to mess with people's default ports.
+<br>
+<iframe src="http://localhost:80/resources/Default-port-frame-contents.html"> </iframe>
+<script>
+ function test() {
+ var result = typeof frames[0].testData != 'undefined';
+ alert(result ? 'Success' : 'Failed');
+ }
+</script>
+<input type="button" onclick="test()" value="Click Me To Test" ></input> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/JavaScript-bookmarklets.html b/Source/WebCore/manual-tests/JavaScript-bookmarklets.html
new file mode 100644
index 0000000..0b71f6f
--- /dev/null
+++ b/Source/WebCore/manual-tests/JavaScript-bookmarklets.html
@@ -0,0 +1,55 @@
+<script>
+var arr = new Array("var%20x=' ';", // Space %20
+ "var%20x='#';", // # %23
+ "var%20x='$';", // $ %24
+ "var%20x='%';", // % %25
+ "var%20x='&';", // & %26
+ "var%20x='/';", // / %2F
+ "var%20x=':';", // : %3A
+ "var%20x=';';", // ; %3B
+ "var%20x='<';", // < %3C
+ "var%20x='=';", // = %3D
+ "var%20x='>';", // > %3E
+ "var%20x='?';", // ? %3F
+ "var%20x='@';", // @ %40
+ "var%20x='[';", // [ %5B
+ "var%20x='\\';", // \ %5C
+ "var%20x=']';", // ] %5D
+ "var%20x='^';", // ^ %5E
+ "var%20x='`';", // ' %60
+ "var%20x='{';", // { %7B
+ "var%20x='|';", // | %7C
+ "var%20x='}';", // } %7D
+ "var%20x='~';"); // ~ %7E
+
+
+function makeLinks()
+{
+ var str = "javascript:";
+ var anchor, anchorText;
+ for (key in arr)
+ {
+ anchor = document.createElement("a");
+ anchor.setAttribute("href", str+arr[key]);
+ anchorText = document.createTextNode(arr[key]);
+ anchor.appendChild(anchorText);
+ document.body.appendChild(anchor);
+ document.body.appendChild(document.createElement("br"));
+ }
+}
+
+</script>
+<body onload="makeLinks();">
+This test is for <a href="rdar://problem/5310312">rdar://problem/5310312</a> and can be run manually only.<br>
+<a href="rdar://problem/5379908">rdar://problem/5379908</a> tracks the effort to enhance DRT to make this into a layout test.<br>
+<br>
+<b>Directions:</b>
+<ol>
+<li> drag each link below to the bookmarks bar to create bookmarks
+<li> open the JavaScript console (in the debug menu)
+<li> click on all the bookmarks you've just created
+</ol>
+<b>Expected results:</b>
+no parse errors in the JavaScript console<br>
+<br>
+</body> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/NPN_Invoke/English.lproj/Localized.r b/Source/WebCore/manual-tests/NPN_Invoke/English.lproj/Localized.r
new file mode 100644
index 0000000..f5c8373
--- /dev/null
+++ b/Source/WebCore/manual-tests/NPN_Invoke/English.lproj/Localized.r
@@ -0,0 +1,17 @@
+#include <CoreServices/CoreServices.r>
+
+// Plugin info
+resource 'STR#' (126) { {
+ "Tests NPN_Invoke()",
+ "NPN_Invoke Test Plug-In"
+} };
+
+// MIME Type descriptions
+resource 'STR#' (127) { {
+ "NPN_Invoke test"
+} };
+
+// MIME Types
+resource 'STR#' (128) { {
+ "test/npn-invoke"
+} };
diff --git a/Source/WebCore/manual-tests/NPN_Invoke/Info.plist b/Source/WebCore/manual-tests/NPN_Invoke/Info.plist
new file mode 100644
index 0000000..f7684e3
--- /dev/null
+++ b/Source/WebCore/manual-tests/NPN_Invoke/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>NPN_Invoke</string>
+ <key>CFBundleGetInfoString</key>
+ <string>420+, Copyright 2006 Apple Computer, Inc.</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.apple.test.plugins.npn-invoke</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>BRPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CFPlugInDynamicRegisterFunction</key>
+ <string></string>
+ <key>CFPlugInDynamicRegistration</key>
+ <string>NO</string>
+</dict>
+</plist>
diff --git a/Source/WebCore/manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj/project.pbxproj b/Source/WebCore/manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..a8a08f3
--- /dev/null
+++ b/Source/WebCore/manual-tests/NPN_Invoke/NPN_Invoke.xcodeproj/project.pbxproj
@@ -0,0 +1,253 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 2220AF6109A447200030077C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2220AF6009A447200030077C /* WebKit.framework */; };
+ 2220B04709A459ED0030077C /* Localized.r in Rez */ = {isa = PBXBuildFile; fileRef = 2220B04609A459ED0030077C /* Localized.r */; };
+ 84226A8E06823C4700780194 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84226A8D06823C4700780194 /* Carbon.framework */; };
+ 8454AD210680F60300DFAEA4 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 8454AD200680F60300DFAEA4 /* main.c */; };
+ 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
+ 2220AF6009A447200030077C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; };
+ 2220B03809A459B20030077C /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; name = English; path = English.lproj/Localized.r; sourceTree = "<group>"; };
+ 84226A8D06823C4700780194 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
+ 8454AD200680F60300DFAEA4 /* main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+ 8D576316048677EA00EA77CD /* NPN_Invoke.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NPN_Invoke.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8D576313048677EA00EA77CD /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 84226A8E06823C4700780194 /* Carbon.framework in Frameworks */,
+ 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */,
+ 2220AF6109A447200030077C /* WebKit.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 089C166AFE841209C02AAC07 /* NetscapeMoviePlugIn */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB77AFFE84173DC02AAC07 /* Source */,
+ 089C167CFE841241C02AAC07 /* Resources */,
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
+ 19C28FB6FE9D52B211CA2CBB /* Products */,
+ );
+ name = NetscapeMoviePlugIn;
+ sourceTree = "<group>";
+ };
+ 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ 84226A8D06823C4700780194 /* Carbon.framework */,
+ 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */,
+ 2220AF6009A447200030077C /* WebKit.framework */,
+ );
+ name = "External Frameworks and Libraries";
+ sourceTree = "<group>";
+ };
+ 089C167CFE841241C02AAC07 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 8D576317048677EA00EA77CD /* Info.plist */,
+ 2220B04609A459ED0030077C /* Localized.r */,
+ );
+ name = Resources;
+ sourceTree = "<group>";
+ };
+ 08FB77AFFE84173DC02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 8454AD200680F60300DFAEA4 /* main.c */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 19C28FB6FE9D52B211CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8D576316048677EA00EA77CD /* NPN_Invoke.plugin */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 8D57630D048677EA00EA77CD /* NPN_Invoke */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NPN_Invoke" */;
+ buildPhases = (
+ 8D576311048677EA00EA77CD /* Sources */,
+ 8333A742068B76EA00241F49 /* Rez */,
+ 8D57630F048677EA00EA77CD /* Resources */,
+ 8D576313048677EA00EA77CD /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = NPN_Invoke;
+ productInstallPath = "$(HOME)/Library/Bundles";
+ productName = NetscapeMoviePlugIn;
+ productReference = 8D576316048677EA00EA77CD /* NPN_Invoke.plugin */;
+ productType = "com.apple.product-type.bundle";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 089C1669FE841209C02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NPN_Invoke" */;
+ compatibilityVersion = "Xcode 2.4";
+ developmentRegion = English;
+ hasScannedForEncodings = 1;
+ knownRegions = (
+ English,
+ Japanese,
+ French,
+ German,
+ );
+ mainGroup = 089C166AFE841209C02AAC07 /* NetscapeMoviePlugIn */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 8D57630D048677EA00EA77CD /* NPN_Invoke */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 8D57630F048677EA00EA77CD /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+ 8333A742068B76EA00241F49 /* Rez */ = {
+ isa = PBXRezBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2220B04709A459ED0030077C /* Localized.r in Rez */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8D576311048677EA00EA77CD /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8454AD210680F60300DFAEA4 /* main.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ 2220B04609A459ED0030077C /* Localized.r */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 2220B03809A459B20030077C /* English */,
+ );
+ name = Localized.r;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 149C298408902C53008A9EFC /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ FRAMEWORK_SEARCH_PATHS = "$(FRAMEWORK_SEARCH_PATHS)";
+ GCC_DEBUGGING_SYMBOLS = full;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "/Library/Internet Plug-Ins";
+ PRODUCT_NAME = NPN_Invoke;
+ WRAPPER_EXTENSION = plugin;
+ };
+ name = Debug;
+ };
+ 149C298508902C53008A9EFC /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ FRAMEWORK_SEARCH_PATHS = "$(FRAMEWORK_SEARCH_PATHS)";
+ GCC_DEBUGGING_SYMBOLS = full;
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "/Library/Internet Plug-Ins";
+ PRODUCT_NAME = NPN_Invoke;
+ WRAPPER_EXTENSION = plugin;
+ };
+ name = Release;
+ };
+ 149C298808902C53008A9EFC /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+ };
+ name = Debug;
+ };
+ 149C298908902C53008A9EFC /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 149C298308902C53008A9EFC /* Build configuration list for PBXNativeTarget "NPN_Invoke" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 149C298408902C53008A9EFC /* Debug */,
+ 149C298508902C53008A9EFC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 149C298708902C53008A9EFC /* Build configuration list for PBXProject "NPN_Invoke" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 149C298808902C53008A9EFC /* Debug */,
+ 149C298908902C53008A9EFC /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 089C1669FE841209C02AAC07 /* Project object */;
+}
diff --git a/Source/WebCore/manual-tests/NPN_Invoke/main.c b/Source/WebCore/manual-tests/NPN_Invoke/main.c
new file mode 100644
index 0000000..4a6d706
--- /dev/null
+++ b/Source/WebCore/manual-tests/NPN_Invoke/main.c
@@ -0,0 +1,265 @@
+/*
+ IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
+ consideration of your agreement to the following terms, and your use, installation,
+ modification or redistribution of this Apple software constitutes acceptance of these
+ terms. If you do not agree with these terms, please do not use, install, modify or
+ redistribute this Apple software.
+
+ In consideration of your agreement to abide by the following terms, and subject to these
+ terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in
+ this original Apple software (the "Apple Software"), to use, reproduce, modify and
+ redistribute the Apple Software, with or without modifications, in source and/or binary
+ forms; provided that if you redistribute the Apple Software in its entirety and without
+ modifications, you must retain this notice and the following text and disclaimers in all
+ such redistributions of the Apple Software. Neither the name, trademarks, service marks
+ or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
+ the Apple Software without specific prior written permission from Apple. Except as expressly
+ stated in this notice, no other rights or licenses, express or implied, are granted by Apple
+ herein, including but not limited to any patent rights that may be infringed by your
+ derivative works or by other works in which the Apple Software may be incorporated.
+
+ The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
+ EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
+ USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+ IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
+ REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
+ WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
+ OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <WebKit/npapi.h>
+#import <WebKit/npfunctions.h>
+#import <WebKit/npruntime.h>
+
+NPNetscapeFuncs *browser;
+
+NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved);
+NPError NPP_Destroy(NPP instance, NPSavedData** save);
+NPError NPP_SetWindow(NPP instance, NPWindow* window);
+NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype);
+NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
+int32_t NPP_WriteReady(NPP instance, NPStream* stream);
+int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer);
+void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
+void NPP_Print(NPP instance, NPPrint* platformPrint);
+int16_t NPP_HandleEvent(NPP instance, void* event);
+void NPP_URLNotify(NPP instance, const char* URL, NPReason reason, void* notifyData);
+NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value);
+NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value);
+
+#pragma export on
+// Mach-o entry points
+NPError NP_Initialize(NPNetscapeFuncs *browserFuncs);
+NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs);
+void NP_Shutdown(void);
+// For compatibility with CFM browsers.
+int main(NPNetscapeFuncs *browserFuncs, NPPluginFuncs *pluginFuncs, NPP_ShutdownProcPtr *shutdown);
+#pragma export off
+
+
+typedef void (* FunctionPointer) (void);
+typedef void (* TransitionVector) (void);
+static FunctionPointer functionPointerForTVector(TransitionVector);
+static TransitionVector tVectorForFunctionPointer(FunctionPointer);
+
+// Mach-o entry points
+NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
+{
+ browser = browserFuncs;
+ return NPERR_NO_ERROR;
+}
+
+NPError NP_GetEntryPoints(NPPluginFuncs* pluginFuncs)
+{
+ pluginFuncs->version = 11;
+ pluginFuncs->size = sizeof(pluginFuncs);
+ pluginFuncs->newp = NPP_New;
+ pluginFuncs->destroy = NPP_Destroy;
+ pluginFuncs->setwindow = NPP_SetWindow;
+ pluginFuncs->newstream = NPP_NewStream;
+ pluginFuncs->destroystream = NPP_DestroyStream;
+ pluginFuncs->asfile = NPP_StreamAsFile;
+ pluginFuncs->writeready = NPP_WriteReady;
+ pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write;
+ pluginFuncs->print = NPP_Print;
+ pluginFuncs->event = NPP_HandleEvent;
+ pluginFuncs->urlnotify = NPP_URLNotify;
+ pluginFuncs->getvalue = NPP_GetValue;
+ pluginFuncs->setvalue = NPP_SetValue;
+
+ return NPERR_NO_ERROR;
+}
+
+void NP_Shutdown(void)
+{
+
+}
+
+// For compatibility with CFM browsers.
+int main(NPNetscapeFuncs *browserFuncs, NPPluginFuncs *pluginFuncs, NPP_ShutdownProcPtr *shutdown)
+{
+ browser = malloc(sizeof(NPNetscapeFuncs));
+ bzero(browser, sizeof(NPNetscapeFuncs));
+
+ browser->size = browserFuncs->size;
+ browser->version = browserFuncs->version;
+
+ // Since this is a mach-o plug-in and the browser is CFM because it is calling main, translate
+ // our function points into TVectors so the browser can call them.
+ browser->geturl = (NPN_GetURLProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->geturl);
+ browser->posturl = (NPN_PostURLProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->posturl);
+ browser->requestread = (NPN_RequestReadProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->requestread);
+ browser->newstream = (NPN_NewStreamProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->newstream);
+ browser->write = (NPN_WriteProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->write);
+ browser->destroystream = (NPN_DestroyStreamProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->destroystream);
+ browser->status = (NPN_StatusProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->status);
+ browser->uagent = (NPN_UserAgentProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->uagent);
+ browser->memalloc = (NPN_MemAllocProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->memalloc);
+ browser->memfree = (NPN_MemFreeProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->memfree);
+ browser->memflush = (NPN_MemFlushProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->memflush);
+ browser->reloadplugins = (NPN_ReloadPluginsProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->reloadplugins);
+ browser->geturlnotify = (NPN_GetURLNotifyProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->geturlnotify);
+ browser->posturlnotify = (NPN_PostURLNotifyProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->posturlnotify);
+ browser->getvalue = (NPN_GetValueProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->getvalue);
+ browser->setvalue = (NPN_SetValueProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->setvalue);
+ browser->invalidaterect = (NPN_InvalidateRectProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->invalidaterect);
+ browser->invalidateregion = (NPN_InvalidateRegionProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->invalidateregion);
+ browser->forceredraw = (NPN_ForceRedrawProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->forceredraw);
+ browser->getJavaEnv = (NPN_GetJavaEnvProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->getJavaEnv);
+ browser->getJavaPeer = (NPN_GetJavaPeerProcPtr)functionPointerForTVector((TransitionVector)browserFuncs->getJavaPeer);
+
+ pluginFuncs->version = 11;
+ pluginFuncs->size = sizeof(pluginFuncs);
+ pluginFuncs->newp = (NPP_NewProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_New);
+ pluginFuncs->destroy = (NPP_DestroyProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_Destroy);
+ pluginFuncs->setwindow = (NPP_SetWindowProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_SetWindow);
+ pluginFuncs->newstream = (NPP_NewStreamProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_NewStream);
+ pluginFuncs->destroystream = (NPP_DestroyStreamProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_DestroyStream);
+ pluginFuncs->asfile = (NPP_StreamAsFileProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_StreamAsFile);
+ pluginFuncs->writeready = (NPP_WriteReadyProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_WriteReady);
+ pluginFuncs->write = (NPP_WriteProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_Write);
+ pluginFuncs->print = (NPP_PrintProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_Print);
+ pluginFuncs->event = (NPP_HandleEventProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_HandleEvent);
+ pluginFuncs->urlnotify = (NPP_URLNotifyProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_URLNotify);
+ pluginFuncs->getvalue = (NPP_GetValueProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_GetValue);
+ pluginFuncs->setvalue = (NPP_SetValueProcPtr)tVectorForFunctionPointer((FunctionPointer)NPP_SetValue);
+
+ *shutdown = (NPP_ShutdownProcPtr)tVectorForFunctionPointer((FunctionPointer)NP_Shutdown);
+
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved)
+{
+ // Call window.alert("Success!")
+ NPError error;
+ NPObject *windowObject = NULL;
+ error = browser->getvalue(instance, NPNVWindowNPObject, &windowObject);
+ if (error == NPERR_NO_ERROR) {
+ NPVariant alertMessage;
+ STRINGZ_TO_NPVARIANT("Success!", alertMessage);
+ NPVariant result;
+ browser->invoke(instance, windowObject, browser->getstringidentifier("alert"), &alertMessage, 1, &result);
+ browser->releaseobject(windowObject);
+ }
+
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_Destroy(NPP instance, NPSavedData** save)
+{
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_SetWindow(NPP instance, NPWindow* window)
+{
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype)
+{
+ *stype = NP_ASFILEONLY;
+ return NPERR_NO_ERROR;
+}
+
+NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason)
+{
+ return NPERR_NO_ERROR;
+}
+
+int32_t NPP_WriteReady(NPP instance, NPStream* stream)
+{
+ return 0;
+}
+
+int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer)
+{
+ return 0;
+}
+
+void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname)
+{
+}
+
+void NPP_Print(NPP instance, NPPrint* platformPrint)
+{
+
+}
+
+int16_t NPP_HandleEvent(NPP instance, void* event)
+{
+ return 1;
+}
+
+void NPP_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData)
+{
+
+}
+
+NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
+{
+ return NPERR_GENERIC_ERROR;
+}
+
+NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value)
+{
+ return NPERR_GENERIC_ERROR;
+}
+
+// function pointer converters
+
+FunctionPointer functionPointerForTVector(TransitionVector tvp)
+{
+ const uint32_t temp[6] = {0x3D800000, 0x618C0000, 0x800C0000, 0x804C0004, 0x7C0903A6, 0x4E800420};
+ uint32_t *newGlue = NULL;
+
+ if (tvp != NULL) {
+ newGlue = (uint32_t *)malloc(sizeof(temp));
+ if (newGlue != NULL) {
+ unsigned i;
+ for (i = 0; i < 6; i++) newGlue[i] = temp[i];
+ newGlue[0] |= ((UInt32)tvp >> 16);
+ newGlue[1] |= ((UInt32)tvp & 0xFFFF);
+ MakeDataExecutable(newGlue, sizeof(temp));
+ }
+ }
+
+ return (FunctionPointer)newGlue;
+}
+
+TransitionVector tVectorForFunctionPointer(FunctionPointer fp)
+{
+ FunctionPointer *newGlue = NULL;
+ if (fp != NULL) {
+ newGlue = (FunctionPointer *)malloc(2 * sizeof(FunctionPointer));
+ if (newGlue != NULL) {
+ newGlue[0] = fp;
+ newGlue[1] = NULL;
+ }
+ }
+ return (TransitionVector)newGlue;
+}
diff --git a/Source/WebCore/manual-tests/NPN_Invoke/test.html b/Source/WebCore/manual-tests/NPN_Invoke/test.html
new file mode 100644
index 0000000..5164701
--- /dev/null
+++ b/Source/WebCore/manual-tests/NPN_Invoke/test.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+<title>NPN_Invoke() test</title>
+</head>
+<body>
+
+<object width="0" height="0" type="test/npn-invoke">
+ <!-- Fallback content to describe how to run the test -- />
+ <p>You do not have the &quot;NPN_Invoke&quot; plugin installed. Before you run this test:</p>
+ <ol>
+ <li>Build the included Xcode project, &quot;NPN_Invoke.xcodeproj&quot;.</li>
+ <li>Copy the built plugin (NPN_Invoke.plugin) to /Library/Internet Plug-Ins.</li>
+ <li>Restart Safari.</li>
+ </ol>
+</object>
+
+<p>This tests NPN_Invoke(), part of the Netscape Plugin API scripting interface.</p>
+<p>To verify, you must run this test with JavaScript enabled and then repeat the test with JavaScript disabled.</p>
+
+<h4>JavaScript enabled</h4>
+<p style="color: green">Success: An alert dialog is shown with the message &quot;Success!&quot;</p>
+<p style="color: red">Failure: No alert dialog is shown, or the message is not &quot;Success!&quot;</p>
+
+<h4>JavaScript disabled</h4>
+<p style="color: green">Success: No alert dialog is shown, and Safari remains open (does not crash).</p>
+<p style="color: red">Failure: An alert dialog is shown, or Safari crashes.</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/WebKitSite.webarchive b/Source/WebCore/manual-tests/WebKitSite.webarchive
new file mode 100644
index 0000000..d9f9c88
--- /dev/null
+++ b/Source/WebCore/manual-tests/WebKitSite.webarchive
Binary files differ
diff --git a/Source/WebCore/manual-tests/accessibility/java-applet.html b/Source/WebCore/manual-tests/accessibility/java-applet.html
new file mode 100644
index 0000000..5b5fd69
--- /dev/null
+++ b/Source/WebCore/manual-tests/accessibility/java-applet.html
@@ -0,0 +1,20 @@
+<html>
+<body id="body">
+
+<applet code="AppletTest.class" width=200 height=140 codebase="resources" name="appletTest"></applet>
+
+<p>This test checks our support for accessibility of java applets.</p>
+<p>To test: (on mac only)
+<ol>
+ <li>Open Accessibility Inspector. Move mouse onto white area of web area.
+ <li>Press Cmd+F7 to lock onto the web area.
+ <li>Click on the "Go To" drop down in the window that appears.
+ <li>Choose AXChildren and select the AXGroup "Button".
+ <li>Choose AXChildren again and do the same.
+ <li>Continue this until you see the AXButton.
+ <li>If you do not see an AXButton, the test fails.
+</ol>
+<hr>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/accessibility/resources/AppletTest.class b/Source/WebCore/manual-tests/accessibility/resources/AppletTest.class
new file mode 100644
index 0000000..5e551a3
--- /dev/null
+++ b/Source/WebCore/manual-tests/accessibility/resources/AppletTest.class
Binary files differ
diff --git a/Source/WebCore/manual-tests/accessibility/resources/AppletTest.java b/Source/WebCore/manual-tests/accessibility/resources/AppletTest.java
new file mode 100644
index 0000000..2c98a32
--- /dev/null
+++ b/Source/WebCore/manual-tests/accessibility/resources/AppletTest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* Source for a test applet used by layout tests. */
+
+import javax.swing.*;
+
+public class AppletTest extends JApplet {
+
+ public void init() {
+
+ setLayout(null);
+ JButton button = new JButton("button");
+ JTextField textField = new JTextField("TextField",20);
+
+ button.setBounds(10,10,100,30);
+ textField.setBounds(10,40,100,40);
+
+ add(button);
+ add(textField);
+ }
+}
diff --git a/Source/WebCore/manual-tests/accidental-strict-mode.html b/Source/WebCore/manual-tests/accidental-strict-mode.html
new file mode 100644
index 0000000..45ff8b7
--- /dev/null
+++ b/Source/WebCore/manual-tests/accidental-strict-mode.html
@@ -0,0 +1,13 @@
+<p>This tests for regression against <a href="http://bugs.webkit.org/show_bug.cgi?id=7102">REGRESSION: parse mode gets set to strict after going back from non-HTML content</a></p>
+
+<ol>
+<li> Click on PDF link below. Wait for PDF to fully load.
+<li> Click "Back" button once.
+<li> Click the link again.
+<li> Click "Back" button once.
+</ol>
+
+<p>In the failing case, the thin line above the link will get much thicker. If it remains the same, this test has passed.</p>
+
+<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img width=1 height=1 alt=""></td></tr></table>
+<div><a href="http://www.irs.gov/pub/irs-pdf/fw4.pdf">http://www.irs.gov/pub/irs-pdf/fw4.pdf</a></div>
diff --git a/Source/WebCore/manual-tests/animate-duration.html b/Source/WebCore/manual-tests/animate-duration.html
new file mode 100644
index 0000000..d8bf81e
--- /dev/null
+++ b/Source/WebCore/manual-tests/animate-duration.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Overriding Animations</title>
+ <script src="../../shared/javascript/utils.js" type="text/javascript" charset="utf-8"></script>
+ <style type="text/css" media="screen">
+
+ .container {
+ position: relative;
+ width: 400px;
+ height: 120px;
+ border: 1px solid black;
+ margin: 10px;
+ }
+ .box {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ background-color: blue;
+ z-index: 0;
+ -webkit-animation-name: "slide";
+ -webkit-animation-duration: 1s;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: infinite;
+ }
+
+ .one {
+ -webkit-animation-duration: 0s;
+ }
+
+ .two {
+ -webkit-animation-duration: 0;
+ }
+
+ @-webkit-keyframes slide {
+ from { -webkit-transform: translateX(0); }
+ to { -webkit-transform: translateX(280px); }
+ }
+
+ </style>
+</head>
+<body>
+ <p>Single anim (should keep animating)</p>
+ <div class="container" onclick="toggleClassName(this, 'highlighted')">
+ <div class="box none">
+ </div>
+ </div>
+ <p>duration: "0s" (should not animate)</p>
+ <div class="container" onclick="toggleClassName(this, 'highlighted')">
+ <div class="box one">
+ </div>
+ </div>
+ <p>duration: "0" (should animate since inherits valid duration)</p>
+ <div class="container" onclick="toggleClassName(this, 'highlighted')">
+ <div class="box two">
+ </div>
+ </div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/animate-left.html b/Source/WebCore/manual-tests/animate-left.html
new file mode 100644
index 0000000..3ced2ec
--- /dev/null
+++ b/Source/WebCore/manual-tests/animate-left.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Animation of left property</title>
+ <style>
+ div {
+ position: relative;
+ left: 100px;
+ height: 200px;
+ width: 200px;
+ background-color: #9bb;
+ -webkit-animation-name: bounce;
+ -webkit-animation-duration: 2s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: ease-in-out;
+ }
+
+ @-webkit-keyframes bounce {
+ from {
+ left: 100px;
+ }
+ to {
+ left: 300px;
+ }
+ }
+
+ </style>
+</head>
+<body>
+ <h1>Animation of 'left' property</h1>
+
+ <p>The element below should bounce 200 pixels left and right continuously</p>
+
+ <div id="target">
+ This element should animate.
+ </div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/animate-none.html b/Source/WebCore/manual-tests/animate-none.html
new file mode 100644
index 0000000..4cb2c8b
--- /dev/null
+++ b/Source/WebCore/manual-tests/animate-none.html
@@ -0,0 +1,207 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>Testing animation-name: none</title>
+
+ <style type="text/css" media="screen">
+ div {
+ width: 300px;
+ height: 100px;
+ margin: 10px;
+ -webkit-animation-name: 'fail';
+ -webkit-animation-duration: 3.5s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: linear;
+ }
+
+ @-webkit-keyframes 'fail' {
+ from {
+ -webkit-transform: rotate(-90deg);
+ }
+ to {
+ -webkit-transform: rotate(90deg);
+ }
+ }
+
+ #box1 {
+ position: relative;
+ background-color: blue;
+ -webkit-animation-name: 'sway1';
+ -webkit-animation-duration: 2.5s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: linear;
+ }
+
+ @-webkit-keyframes 'sway1' {
+ from {
+ -webkit-transform: translate(0, 0);
+ }
+ to {
+ -webkit-transform: translate(200px, 0);
+ }
+ }
+
+ #box2 {
+ position: relative;
+ background-color: red;
+ -webkit-animation-name: 'sway2';
+ -webkit-animation-duration: 3s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: linear;
+ }
+
+ @-webkit-keyframes 'sway2' {
+ from {
+ -webkit-transform: translate(0px, 0);
+ }
+ to {
+ -webkit-transform: translate(200px, 0);
+ }
+ }
+
+ #box3 {
+ position: relative;
+ background-color: green;
+ -webkit-animation-name: 'sway3';
+ -webkit-animation-duration: 3.5s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: linear;
+ }
+
+ @-webkit-keyframes 'sway3' {
+ from {
+ -webkit-transform: translate(0px, 0);
+ }
+ to {
+ -webkit-transform: translate(200px, 0);
+ }
+ }
+
+ #box4 {
+ position: relative;
+ background-color: orange;
+ -webkit-animation-name: 'none';
+ -webkit-animation-duration: 3s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: linear;
+ }
+
+ #box5 {
+ position: relative;
+ background-color: purple;
+ -webkit-animation-name: 'none';
+ -webkit-animation-duration: 3s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ -webkit-animation-timing-function: linear;
+ }
+
+ #box6 {
+ position: relative;
+ background-color: blue;
+ -webkit-animation-name: 'fade', 'sway6';
+ -webkit-animation-duration: 3s, 4s;
+ -webkit-animation-iteration-count: infinite, infinite;
+ -webkit-animation-direction: alternate, alternate;
+ -webkit-animation-timing-function: linear, linear;
+ }
+
+ @-webkit-keyframes 'sway6' {
+ from {
+ -webkit-transform: translate(0px, 0);
+ }
+ to {
+ -webkit-transform: translate(200px, 0);
+ }
+ }
+
+ @-webkit-keyframes 'fade' {
+ from {
+ opacity: 1.0;
+ }
+ to {
+ opacity: 0.1;
+ }
+ }
+
+ /* set up animation that should never be run */
+ @-webkit-keyframes none {
+ from {
+ -webkit-transform: translate(200px, 0) rotate(-90deg);
+ }
+ to {
+ -webkit-transform: translate(0px, 0) rotate(90deg);
+ }
+ }
+
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ function killanims() {
+ console.log("click");
+ var box1 = document.getElementById("box1");
+ box1.style.webkitAnimationName = '';
+ var box2 = document.getElementById("box2");
+ box2.style.webkitAnimationName = 'none';
+ var box3 = document.getElementById("box3");
+ box3.style.webkitAnimationName = "'none'";
+ var box6 = document.getElementById("box6");
+ box6.style.webkitAnimationName = "none, 'sway6'";
+ }
+
+ setTimeout(killanims, 2000);
+ </script>
+ </head>
+ <body>
+
+ <h2>Testing animation: none</h2>
+
+ <p>
+ After 2 seconds only the blue rectangles should be
+ animating.
+ Any resulting animation
+ that involves rotation or fading means that this test has FAILED.</p>
+
+ <div id="box1">
+ This rectangle starts with an animation. After 2 seconds a timer
+ will set the animation-name on the element to '' (the empty string).
+ The CSS rule should cause the animation to continue.
+ </div>
+
+ <div id="box2">
+ This rectangle starts with an animation. After 2 seconds a timer
+ will set the animation-name on the element to 'none' (as an identifier).
+ This should cause the animation to stop.
+ </div>
+
+ <div id="box3">
+ This rectangle starts with an animation. After 2 seconds a timer
+ will set the animation-name on the element to 'none' (as a string).
+ This should cause the animation to stop.
+ </div>
+
+ <div id="box4">
+ This rectangle starts with an animation, but animation-name is
+ set to 'none' (as an identifier). No animation should run.
+ </div>
+
+ <div id="box5">
+ This rectangle starts with an animation, but animation-name is
+ set to 'none' (as a string). No animation should run.
+ </div>
+
+ <div id="box6">
+ This rectangle starts with two animations. After 2 seconds a timer
+ will set the animation-name on the fade to 'none'. The other
+ animation (horizontal) should continue.
+ </div>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/animated-gif-bfcache-crash.html b/Source/WebCore/manual-tests/animated-gif-bfcache-crash.html
new file mode 100644
index 0000000..581a957
--- /dev/null
+++ b/Source/WebCore/manual-tests/animated-gif-bfcache-crash.html
@@ -0,0 +1,50 @@
+<html>
+<script>
+
+var theWindow;
+
+function step1()
+{
+ theWindow = window.open("./resources/containsAnimatedGif.html", "x");
+ setTimeout(step2, 100);
+}
+
+function step2()
+{
+ window.open("about:blank", "x");
+ setTimeout(step3, 100);
+}
+
+function step3()
+{
+ theWindow.close();
+ theWindow = window.open("./resources/containsAnimatedGif.html");
+ setTimeout(step4, 500);
+}
+
+function step4()
+{
+ theWindow.close();
+ document.getElementById("results").appendChild(document.createTextNode("PASSED"));
+}
+
+</script>
+
+<body>
+<p>This page tests the fix for <br>
+<a href="rdar://problem/6978362">rdar://problem/6978362</a> Repro crash animating GIF if previously used in a closed window's back/forward list <br>
+<a href="https://bugs.webkit.org/show_bug.cgi?id=26568">Bug 26568</a> <br>
+<p>Prerequisites:<br>
+<ul><li>run the LayoutTest's webserver (WebKitTools/run-webkit-httpd)</ul>
+<p>Then click this button: <input type="button" value="Run test" onclick="step1()">
+<p>Expected results:<br>
+<ul>
+<li>A window will open, loading a page with an animated gif.</li>
+<li>about:blank will be loaded in that window, putting the animated gif in the back/forward cache.</li>
+<li>That window will close.</li>
+<li>A new window will open, loading that page with the animated gif</li>
+<li>No crash means test passed </li>
+</ul>
+<span style="color:green;" id="results"></span>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/animated-gif-looping.html b/Source/WebCore/manual-tests/animated-gif-looping.html
new file mode 100644
index 0000000..7dff13c
--- /dev/null
+++ b/Source/WebCore/manual-tests/animated-gif-looping.html
@@ -0,0 +1,20 @@
+<html>
+<body>
+<div>
+ <img src="./resources/animated-infinite.gif">
+ <p>This should animate.</p>
+</div>
+<div>
+ <img src="./resources/non-animated.gif">
+ <p>This should not animate and you should see a cross.</p>
+</div
+<div>
+ <img src="./resources/animated-2x.gif">
+ <p>This animation should loop 2 times.</p>
+</div
+<div>
+ <img src="./resources/animated-10x.gif">
+ <p>This animation should loop 10 times.</p>
+</div
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/animation-with-transition.html b/Source/WebCore/manual-tests/animation-with-transition.html
new file mode 100644
index 0000000..37a7589
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation-with-transition.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>simple-animation</title>
+ <style type="text/css" media="screen">
+ div {
+ position: relative;
+ left: 10px;
+ top: 10px;
+ width: 200px;
+ height: 200px;
+ background-color: #696;
+ -webkit-transition: left 5s, top 5s;
+ }
+
+ .animate {
+ -webkit-animation-name: simple;
+ -webkit-animation-duration: 2s;
+ -webkit-animation-timing-function: linear;
+ -webkit-animation-fill-mode: backwards;
+ }
+
+ @-webkit-keyframes simple {
+ 50% {
+ left: 300px;
+ }
+ 100% {
+ left: 80px;
+ }
+ }
+
+
+ </style>
+ <script type="text/javascript" charset="utf-8">
+
+ function doTransition() {
+ var div = document.querySelector("div");
+ div.style.left = "200px";
+ }
+
+ function doAnimation() {
+ var div = document.querySelector("div");
+ div.className = "animate";
+ }
+
+ </script>
+</head>
+<body>
+ <p>Testing setting an animation while a transition is running, in the
+ case where the animation synthesizes the initial keyframe</p>
+ <p>
+ Start the transition, then start the animation.</p>
+ <p>
+ <a href="https://bugs.webkit.org/show_bug.cgi?id=41188">https://bugs.webkit.org/show_bug.cgi?id=41188</a>
+ </p>
+ <button onclick="doTransition();">Transition</button>
+ <button onclick="doAnimation();">Set Animation</button>
+<div></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/animation/animateColor-by.svg b/Source/WebCore/manual-tests/animation/animateColor-by.svg
new file mode 100644
index 0000000..d528865
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateColor-by.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100' fill='black'>
+ <animateColor attributeName="fill" by='green' dur='3s' fill='freeze' />
+ </rect>
+ <text x='10' y='120'>The rect should animate from black to green over 3 seconds</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateColor-from-by.svg b/Source/WebCore/manual-tests/animation/animateColor-from-by.svg
new file mode 100644
index 0000000..5d0be05
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateColor-from-by.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100'>
+ <animateColor attributeName="fill" from='#DD0000' by='#0000DD' dur='3s' fill='freeze' />
+ </rect>
+ <text x='10' y='120'>The rect should animate from red to purple over 3 seconds</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateColor-repeat-indefinite.svg b/Source/WebCore/manual-tests/animation/animateColor-repeat-indefinite.svg
new file mode 100644
index 0000000..c2339f6
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateColor-repeat-indefinite.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100'>
+ <animateColor attributeName="fill" values='blue; green' dur='2s' repeatCount='indefinite' />
+ </rect>
+ <text x='10' y='120'>The rect should animate from blue to green over 2 seconds, repeatedly.</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateColor-to-from.svg b/Source/WebCore/manual-tests/animation/animateColor-to-from.svg
new file mode 100644
index 0000000..ecd4357
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateColor-to-from.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100'>
+ <animateColor attributeName="fill" from='blue' to='green' dur='3s' fill='freeze' />
+ </rect>
+ <text x='10' y='120'>The rect should animate from blue to green over 3 seconds</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateColor-to.svg b/Source/WebCore/manual-tests/animation/animateColor-to.svg
new file mode 100644
index 0000000..4a276c6
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateColor-to.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100' fill='blue'>
+ <animateColor attributeName="fill" to='green' dur='3s' fill='freeze' />
+ </rect>
+ <text x='10' y='120'>The rect should animate from blue to green over 3 seconds</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateColor-values-simple.svg b/Source/WebCore/manual-tests/animation/animateColor-values-simple.svg
new file mode 100644
index 0000000..b512651
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateColor-values-simple.svg
@@ -0,0 +1,6 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100'>
+ <animateColor attributeName="fill" values='blue; green' dur='3s' fill='freeze' />
+ </rect>
+ <text x='10' y='120'>The rect should animate from blue to green over 3 seconds</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateMotion-to.svg b/Source/WebCore/manual-tests/animation/animateMotion-to.svg
new file mode 100644
index 0000000..17e2cdc
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateMotion-to.svg
@@ -0,0 +1,8 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100'>
+ <animateMotion to='100,0' dur='3s' />
+ </rect>
+ <text x='10' y='120'>
+ The rect should from 0,0 to 100,0 over 3 seconds.
+ </text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateTransform-keyTimes.svg b/Source/WebCore/manual-tests/animation/animateTransform-keyTimes.svg
new file mode 100644
index 0000000..049a070
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateTransform-keyTimes.svg
@@ -0,0 +1,11 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect fill='blue' width='100' height='100'>
+ <animateTransform attributeName="transform" type='translate' values='0,0; 10,0; 100,0' keyTimes='0; .6; 1' dur='3s' fill='freeze' />
+ </rect>
+ <rect fill='none' stroke='orange' x='10' width='100' height='100' />
+ <rect fill='none' stroke='green' x='100' width='100' height='100' />
+ <text x='10' y='120'>
+ The rect should from 0,0 to 100,0 over 3 seconds.
+ <tspan dy='20' x='10'>It should be at the orange at 2 seconds and the green at 3 seconds.</tspan>
+ </text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateTransform-parser.svg b/Source/WebCore/manual-tests/animation/animateTransform-parser.svg
new file mode 100644
index 0000000..4e0dd72
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateTransform-parser.svg
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+animateTransform parsing code coverage for translate, rotate, skewX
+
+TODO: does not test e/E exponent notation
+
+-->
+<svg xmlns="http://www.w3.org/2000/svg" width="800px" height="600px">
+ <g transform="translate(-90, -90)">
+ <circle fill="none" stroke="black" stroke-width="3" cx="200" cy="200" r="100" />
+ <line x1="200" y1="200" x2="300" y2="200" stroke="red" stroke-width="30" stroke-linecap="round">
+ <animateTransform attributeName="transform" type="rotate" from=" 0, 200, 200" to=" 360, 200, 200"
+ dur="5s" />
+ </line>
+ <line x1="200" y1="200" x2="300" y2="200" stroke="green" stroke-width="20" stroke-linecap="round">
+ <animateTransform attributeName="transform" type="rotate" from=" 0 200 200" to=" 360 200 200"
+ dur="5s" />
+ </line>
+ <line x1="200" y1="200" x2="300" y2="200" stroke="blue" stroke-width="10" stroke-linecap="round">
+ <animateTransform attributeName="transform" type="rotate" from=" 0,200,200" to=" 360,200,200"
+ dur="5s" />
+ </line>
+ <line x1="200" y1="200" x2="300" y2="200" stroke="white" stroke-width="5" stroke-linecap="round">
+ <animateTransform attributeName="transform" type="rotate" from=" 0,+200 +200" to=" 360 +200 +200"
+ dur="5s" />
+ </line>
+ </g>
+ <g transform="translate(300, 10)">
+ <rect fill="none" stroke="black" stroke-width="3" x="0" y="0" width="200" height="200" />
+ <circle fill="red" cx="0" cy="0" r="30">
+ <animateTransform attributeName="transform" type="translate" from="0, 0" to="200, 200" dur="5s" />
+ </circle>
+ <circle fill="green" cx="0" cy="0" r="20">
+ <animateTransform attributeName="transform" type="translate" from="0 0" to="200 200" dur="5s" />
+ </circle>
+ <circle fill="blue" cx="0" cy="0" r="10">
+ <animateTransform attributeName="transform" type="translate" from="0,0" to="200,200" dur="5s" />
+ </circle>
+ <circle fill="yellow" cx="0" cy="0" r="5">
+ <animateTransform attributeName="transform" type="translate" from=" +0,+0" to=" +200 +200" dur="5s" />
+ </circle>
+ </g>
+ <g transform="translate(10, 300)">
+ <rect fill="none" stroke="black" stroke-width="3" x="0" y="0" width="200" height="200" />
+ <rect fill="red" x="0" y="0" width="40" height="100">
+ <animateTransform attributeName="transform" type="scale" from="1,1" by="0,1" dur="5s" />
+ </rect>
+ <rect fill="green" x="0" y="0" width="30" height="100">
+ <animateTransform attributeName="transform" type="scale" from="1 1" by="0 1" dur="5s" />
+ </rect>
+ <rect fill="blue" x="0" y="0" width="20" height="100">
+ <animateTransform attributeName="transform" type="scale" from="1, 1" by="0, 1" dur="5s" />
+ </rect>
+ <rect fill="yellow" x="0" y="0" width="10" height="100">
+ <animateTransform attributeName="transform" type="scale" from="+1,+1" by=" +0, +1" dur="5s" />
+ </rect>
+
+ <rect fill="red" x="0" y="0" width="100" height="40">
+ <animateTransform attributeName="transform" type="scale" from="1,1" by="1,0" dur="5s" />
+ </rect>
+ <rect fill="green" x="0" y="0" width="100" height="30">
+ <animateTransform attributeName="transform" type="scale" from="1 1" by="1 0" dur="5s" />
+ </rect>
+ <rect fill="blue" x="0" y="0" width="100" height="20">
+ <animateTransform attributeName="transform" type="scale" from="1, 1" by="1, 0" dur="5s" />
+ </rect>
+ <rect fill="yellow" x="0" y="0" width="100" height="10">
+ <animateTransform attributeName="transform" type="scale" from="+1,+1" by=" +1, +0" dur="5s" />
+ </rect>
+ </g>
+
+ <g transform="translate(300, 300)">
+ <rect fill="none" stroke="black" stroke-width="3" x="0" y="0" width="200" height="200" />
+ <rect fill="red" x="0" y="0" width="100" height="100">
+ <animateTransform attributeName="transform" type="skewX" from="0" by="45" dur="5s" />
+ </rect>
+ <rect fill="green" x="0" y="0" width="50" height="100">
+ <animateTransform attributeName="transform" type="skewX" from="0" by=" 45" dur="5s" />
+ </rect>
+ <rect fill="blue" x="0" y="0" width="25" height="100">
+ <animateTransform attributeName="transform" type="skewX" from="0" by=" +45.0" dur="5s" />
+ </rect>
+ </g>
+</svg>
+
diff --git a/Source/WebCore/manual-tests/animation/animateTransform-repeat-once.svg b/Source/WebCore/manual-tests/animation/animateTransform-repeat-once.svg
new file mode 100644
index 0000000..b1951ba
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateTransform-repeat-once.svg
@@ -0,0 +1,8 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect fill='blue' width='100' height='100'>
+ <animateTransform attributeName="transform" type='translate' from='0,0' to='100,0' dur='2s' repeatCount='2' fill='freeze' />
+ </rect>
+ <text x='10' y='120'>
+ The rect should from 0,0 to 100,0 over 2 seconds, twice.
+ </text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/animateTransform-toanimation.svg b/Source/WebCore/manual-tests/animation/animateTransform-toanimation.svg
new file mode 100644
index 0000000..b15ffd3
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/animateTransform-toanimation.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="800px" height="600px">
+ <g transform="translate(10, 300)">
+ <rect fill="red" x="0" y="0" width="100" height="100">
+ <animateTransform attributeName="transform" type="scale" to="5" dur="5s" />
+ </rect>
+ </g>
+</svg>
+
diff --git a/Source/WebCore/manual-tests/animation/set-to.svg b/Source/WebCore/manual-tests/animation/set-to.svg
new file mode 100644
index 0000000..8b35459
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/set-to.svg
@@ -0,0 +1,10 @@
+<svg xmlns='http://www.w3.org/2000/svg'>
+ <rect width='100' height='100' fill='red' />
+ <rect x='-100' width='100' height='100' fill='red'>
+ <set attributeName='x' to='0' dur='3s' />
+ <set attributeName='fill' to='green' dur='3s' />
+ </rect>
+ <text x='10' y='120'>
+ There should be a 100x100 green rect at 0,0.
+ </text>
+</svg>
diff --git a/Source/WebCore/manual-tests/animation/transitions-and-paused-animations.html b/Source/WebCore/manual-tests/animation/transitions-and-paused-animations.html
new file mode 100644
index 0000000..388d837
--- /dev/null
+++ b/Source/WebCore/manual-tests/animation/transitions-and-paused-animations.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Transitions and paused animations</title>
+ <style type="text/css" media="screen">
+
+ .container {
+ height: 200px;
+ width: 200px;
+ border: 1px solid black;
+ -webkit-transition: -webkit-transform 0.5s;
+ }
+
+ .moved {
+ -webkit-transform: translateX(100px);
+
+ }
+ .box {
+ position: relative;
+ height: 100px;
+ width: 100px;
+ margin: 50px;
+ background-color: blue;
+ -webkit-transform: translateZ(0);
+ -webkit-animation: fade 1s infinite linear alternate;
+ }
+
+ .moved .box {
+ -webkit-animation-play-state: paused;
+ }
+
+ @-webkit-keyframes fade {
+ from { -webkit-transform: rotate(-20deg); }
+ to { -webkit-transform: rotate(20deg); }
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+
+ function runTest()
+ {
+ var box = document.querySelectorAll('.box')[0];
+ var container = document.querySelectorAll('.container')[0];
+
+ window.setTimeout(function() {
+ container.className = 'container';
+ }, 250);
+
+ window.setTimeout(function() {
+ container.className = 'container moved';
+ }, 1500);
+
+ window.setTimeout(function() {
+ container.className = 'container';
+ }, 3000);
+ }
+
+ window.addEventListener('load', runTest, false)
+ </script>
+</head>
+<body>
+
+<p>Box should animate smoothly left, then right then left again, and not jump at the end.</p>
+<div class="container moved">
+ <div class="box"></div>
+</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/applet-finish-parsing-children.html b/Source/WebCore/manual-tests/applet-finish-parsing-children.html
new file mode 100644
index 0000000..842fd85
--- /dev/null
+++ b/Source/WebCore/manual-tests/applet-finish-parsing-children.html
@@ -0,0 +1,11 @@
+<p>
+ Test for <i><a href="rdar://problem/5816522">Bug 5816522</a> REGRESSION (r30111-30112): Tahoe web cam website has some text in Chinese or japanese</i>.
+</p>
+<p>
+ You should see the word PASS below.
+</p>
+<applet codebase="resources" code="DrawMessage.class" width=534 height=50>
+<param name=text value="FAIL">
+<script src="data:text/javascript,document.body.offsetTop;"/>
+<param name=text value="PASS">
+</applet>
diff --git a/Source/WebCore/manual-tests/applet-param-no-name.html b/Source/WebCore/manual-tests/applet-param-no-name.html
new file mode 100644
index 0000000..c6e8821
--- /dev/null
+++ b/Source/WebCore/manual-tests/applet-param-no-name.html
@@ -0,0 +1,4 @@
+<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=8437">http://bugs.webkit.org/show_bug.cgi?id=8437</a></p>
+<p>This tests an applet element with a param element inside it with no name. If Java is enabled and Safari did not crash, then the test passed.</p>
+<applet code=""><param></applet>
+<script>document.body.offsetTop;</script>
diff --git a/Source/WebCore/manual-tests/array-out-of-memory.html b/Source/WebCore/manual-tests/array-out-of-memory.html
new file mode 100644
index 0000000..486e200
--- /dev/null
+++ b/Source/WebCore/manual-tests/array-out-of-memory.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script>
+
+function runArrayOOMTest() {
+ document.write("<p>Starting test...</p>");
+
+ // The index 'target' is the location in the array we expect to fault on access, should the size calculation of the realloc of the vector be allowed
+ // to overflow. The vector needs to be ((target + 1) * sizeof(JSValue*)) bytes long to hold 'target', or approximately 2/3 UINT32_MAX. Upon growing
+ // the array an additional 50% capacity will be allocated, plus the storage object header, taking the size of the allocation over UINT32_MAX.
+ var target = Math.floor(0xFFFFFFFF / 6);
+ // In order to force arr[target] to be stored in the vector, rather than the sparse map, we need ensure the vector is sufficiently densely populated.
+ var populate = Math.floor(target / 8 + 1);
+
+ try {
+ var arr = new Array();
+ for (i=0; i < populate; ++i)
+ arr[i] = 0;
+ arr[target] = 0;
+ } catch(e) {
+ var expect_name = "Error";
+ var expect_message = "Out of memory";
+ if ((e.name == expect_name) && (e.message == expect_message))
+ document.write("<p>SUCCESS</p>");
+ else
+ document.write("<p>FAIL - Expected \"" + expect_name + "/" + expect_message + "\", got \"" + e.name + "/" + e.message + "\".</p>");
+
+ return;
+ }
+
+ document.write("<p>FAIL - Expected exception.</p>");
+}
+
+</script>
+</head>
+<body>
+<p>This test checks that Array objects fail gracefully (throw exception) when array length grows large.</p>
+<p>This test may run for over 20 seconds on a fast machine, and will consume hundereds of MB of memory.</p>
+<input type="button" onclick="runArrayOOMTest()" value="Start">
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/arrow-key-events.html b/Source/WebCore/manual-tests/arrow-key-events.html
new file mode 100644
index 0000000..81231f1
--- /dev/null
+++ b/Source/WebCore/manual-tests/arrow-key-events.html
@@ -0,0 +1,93 @@
+<body>
+<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=3387">bug 3387</a>:
+Redundant keydown, keypress, keyup events sent for arrow keys.</p>
+
+<p>Try pressing arrow keys, PgUp/PgDown/Home/End, Esc, or function keys.
+The test passes if the box below doesn't turn red.<p>
+
+<div id="result" style="width:100px; height:100px; background-color:blue;"></div>
+
+<script>
+
+ var console_messages = document.createElement("ol");
+ document.body.appendChild(console_messages);
+
+ window.onkeydown = registerWindow;
+ window.onkeypress = registerWindow;
+ window.onkeyup = registerWindow;
+
+ document.onkeydown = registerDocument;
+ document.onkeypress = registerDocument;
+ document.onkeyup = registerDocument;
+
+ document.body.onkeydown = registerBody;
+ document.body.onkeypress = registerBody;
+ document.body.onkeyup = registerBody;
+
+ document.documentElement.onkeydown = registerDocumentElement;
+ document.documentElement.onkeypress = registerDocumentElement;
+ document.documentElement.onkeyup = registerDocumentElement;
+
+ var bodyKeyDownCount = 0;
+ var documentElementKeyDownCount = 0;
+ var windowKeyDownCount = 0;
+ var documentKeyDownCount = 0;
+
+ function log(message)
+ {
+ var item = document.createElement("li");
+ item.appendChild(document.createTextNode(message));
+ item.style.fontSize = '8px';
+ console_messages.appendChild(item);
+ }
+
+ function registerBody(e)
+ {
+ if ((e.type == "keydown" && ++bodyKeyDownCount != 1)
+ || (e.type == "keyup" && --bodyKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log("body: " + e.type);
+ return true;
+ }
+
+ function registerDocumentElement(e)
+ {
+ if ((e.type == "keydown" && ++documentElementKeyDownCount != 1)
+ || (e.type == "keyup" && --documentElementKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log(" documentElement: " + e.type);
+ return true;
+ }
+
+ function registerDocument(e)
+ {
+ if ((e.type == "keydown" && ++documentKeyDownCount != 1)
+ || (e.type == "keyup" && --documentKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log("  document: " + e.type);
+ return true;
+ }
+
+ function registerWindow(e)
+ {
+ if ((e.type == "keydown" && ++windowKeyDownCount != 1)
+ || (e.type == "keyup" && --windowKeyDownCount != 0))
+ document.getElementById("result").style.backgroundColor = "red";
+
+ if (!e)
+ e = window.event;
+ log("   window: " + e.type);
+ return true;
+ }
+
+</script>
+</body>
diff --git a/Source/WebCore/manual-tests/audio-volume.html b/Source/WebCore/manual-tests/audio-volume.html
new file mode 100644
index 0000000..f7e698c
--- /dev/null
+++ b/Source/WebCore/manual-tests/audio-volume.html
@@ -0,0 +1,28 @@
+<html>
+ <script>
+ function load()
+ {
+ var url="http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov";
+ var vid = document.getElementById('vid')
+ vid.src = url;
+ vid.volume = 0.05;
+ vid.load();
+ }
+ function setVolume(vol)
+ {
+ var vid = document.getElementById('vid')
+ vid.volume = vol;
+ }
+ </script>
+
+ <body>
+
+ <video id=vid controls autoplay>
+ </video>
+ <p>TEST: Audio volume should be 0.05 when the movie begins playing.</p>
+ <input type="button" value="Load movie" onclick="load()">
+ <br>
+ <input type="button" value="volume=1.0" onclick="setVolume(1.0)">
+ <input type="button" value="volume=0.05" onclick="setVolume(0.05)">
+ </body>
+</html?
diff --git a/Source/WebCore/manual-tests/autocompletion-fire-onchange.html b/Source/WebCore/manual-tests/autocompletion-fire-onchange.html
new file mode 100644
index 0000000..c6ba288
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocompletion-fire-onchange.html
@@ -0,0 +1,40 @@
+<html>
+<head>
+<script>
+// This test case is based on the test case http://data.ici-bas.fr/chromiumissue10879/.
+window.changed = false;
+function checkForChange()
+{
+ if (!location.search)
+ return true;
+
+ if (!window.changed && document.getElementById("field").value != "")
+ log("FAIL");
+ else
+ log("PASS");
+ return false;
+}
+
+function log(msg)
+{
+ document.getElementById("log").appendChild(document.createTextNode(msg + "\n"));
+}
+</script>
+</head>
+<body>
+<p id="description">This test verifies that on autocompletion the 'onchange' event is fired.</p>
+<p>Steps to reproduce:</p>
+<ol>
+ <li>In the input field, type the word &quot;apple&quot; (without quotes). Then click the button Submit or hit the return/enter
+ key on your keyboard</li>
+ <li>Once the page reloads, in the input field, type &quot;ap&quot; (without quotes) and let the browser autocomplete the word (or select
+ &quot;apple&quot; from the autocompletion drop-down list contextual menu). Then click the button Submit or hit the return/enter
+ key on your keyboard.</li>
+</ol>
+<form method="get" onsubmit="return checkForChange()">
+ <p><input type="text" name="field" id="field" value="" onchange="window.changed = true"/></p>
+ <p><input type="submit" value="Submit"/></p>
+</form>
+<pre id="log"></pre>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-ESC.html b/Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-ESC.html
new file mode 100644
index 0000000..185e5c6
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-ESC.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('c');
+ typeCharacterCommand('o');
+ typeCharacterCommand('l');
+ typeCharacterCommand('l');
+ typeCharacterCommand('a');
+ typeCharacterCommand('p');
+ typeCharacterCommand('s');
+}
+
+</script>
+
+<title>Autocorrection Cancellation By ESC Test</title>
+</head>
+<body>
+<div><p>This test verifies that autocorrection is not applied when user dismisses correction panel by pressing
+ESC key.</p>
+<p>After seeing the correction panel, press ESC key, then press space. You should see the phrase "the collaps"
+where "collaps" has red mispell underline. </p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously
+dismissed 'collapse' as the correct spelling of 'collaps' several times, the spell checker will not provide
+'collapse' as a suggestion anymore. To fix this, remove all files in ~/Library/Spelling.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-typing-1.html b/Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-typing-1.html
new file mode 100644
index 0000000..9637195
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/autocorrection-cancelled-by-typing-1.html
@@ -0,0 +1,59 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+ if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+
+function keepTyping() {
+ typeCharacterCommand('i');
+ typeCharacterCommand('n');
+ typeCharacterCommand('g');
+ typeCharacterCommand(' ');
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+}
+
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('c');
+ typeCharacterCommand('o');
+ typeCharacterCommand('l');
+ typeCharacterCommand('l');
+ typeCharacterCommand('a');
+ typeCharacterCommand('p');
+ typeCharacterCommand('s');
+ setTimeout("keepTyping()", 1000);
+}
+
+</script>
+
+<title>Autocorrection Cancellation By Typing Test</title>
+</head>
+<body>
+<div>This test verifies that autocorrection behaves correctly when continuing typing in a word on
+which autocorrection panel is hown. You should see correction panel showing 'collapse' after 'collaps' is entered. And after a pause, phrase 'the collapsing' is shown without underline.</div>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously dismissed 'collapse' as the correct spelling of 'collaps' several times, the spell checker will not provide 'collapse' as a suggestion anymore. To fix this, remove all files in ~/Library/Spelling.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/autocorrection-contraction.html b/Source/WebCore/manual-tests/autocorrection/autocorrection-contraction.html
new file mode 100644
index 0000000..ef5bb68
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/autocorrection-contraction.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function keepTyping() {
+ typeCharacterCommand('\'');
+ typeCharacterCommand('t');
+ typeCharacterCommand(' ');
+}
+
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('i');
+ typeCharacterCommand('s');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('w');
+ typeCharacterCommand('o');
+ typeCharacterCommand('u');
+ typeCharacterCommand('l');
+ typeCharacterCommand('d');
+ typeCharacterCommand('n');
+ setTimeout("keepTyping()", 1000);
+}
+
+</script>
+
+<title>Delete to Dismiss Reversion Panel Test</title>
+</head>
+<body>
+<div><p>This test verifies that, after typing an apostrophe, if the current word is part of a contraction, previously shown autocorrection will not be applied.</p>
+<p>After loading the page, you should see correction panel shows "would" for "wouldn". Then after typing "'t", the correction panel dissappears and the final sentence is "this wouldn't".</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/continue-typing-to-dismiss-reversion.html b/Source/WebCore/manual-tests/autocorrection/continue-typing-to-dismiss-reversion.html
new file mode 100644
index 0000000..b8521c0
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/continue-typing-to-dismiss-reversion.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execMoveSelectionBackwardByCharacterCommand();
+}
+
+</script>
+
+<title>Continue Typing to Dismiss Reversion Panel Test</title>
+</head>
+<body>
+<div><p>This test verifies that, after reversion panel is shown, continue typing will dismiss the reversion panel.</p>
+<p>After seeing the reversion panel, start typing (excluding whitespace). You should see the panel being
+dismissed once you start typing.</p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously
+frequently revert 'message' to 'mesage'. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/delete-to-dismiss-reversion.html b/Source/WebCore/manual-tests/autocorrection/delete-to-dismiss-reversion.html
new file mode 100644
index 0000000..c39b2ac
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/delete-to-dismiss-reversion.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execMoveSelectionBackwardByCharacterCommand();
+}
+
+</script>
+
+<title>Delete to Dismiss Reversion Panel Test</title>
+</head>
+<body>
+<div><p>This test verifies that, after reversion panel is shown, continue deleting the word will dismiss the reversion panel.</p>
+<p>After seeing the reversion panel, start deleting the corrected word character by character. You should see the panel being
+dismissed once you start deleting.</p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously
+frequently revert 'message' to 'mesage'. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/delete-to-end-of-word-to-show-reversion.html b/Source/WebCore/manual-tests/autocorrection/delete-to-end-of-word-to-show-reversion.html
new file mode 100644
index 0000000..320ed8c
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/delete-to-end-of-word-to-show-reversion.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execDeleteCommand();
+}
+
+</script>
+
+<title>Delete to End of Word to Show Reversion Panel Test</title>
+</head>
+<body>
+<div><p>This test verifies that reversion panel is shown when user moves carret to previously corrected word using delete key.</p>
+<p>After seeing the reversion panel, press ESC key, then space key. You should see the phrase "the mesage"
+where "mesage" has red mispell underline. </p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously
+frequently revert 'message' to 'mesage'. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html b/Source/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html
new file mode 100644
index 0000000..56724f1
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/dismiss-multiple-guesses.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('e');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execMoveSelectionBackwardByCharacterCommand();
+}
+
+</script>
+
+<title>Dismiss Multiple Guesses Test</title>
+</head>
+<body>
+<div><p>This test verifies that pressing ESC key diusmisses multiple guesses panel correctly</p>
+<p>After seeing the panel with multiple candidates, pressing ESC key to dismiss the panel.</p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/move-to-end-of-word-to-show-reversion.html b/Source/WebCore/manual-tests/autocorrection/move-to-end-of-word-to-show-reversion.html
new file mode 100644
index 0000000..8ca2a6b
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/move-to-end-of-word-to-show-reversion.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execMoveSelectionBackwardByCharacterCommand();
+}
+
+</script>
+
+<title>Move to End of Word to Show Reversion Panel Test</title>
+</head>
+<body>
+<div><p>This test verifies that reversion panel is shown when user moves carret to previously corrected word</p>
+<p>After seeing the reversion panel, press ESC key, then space key. You should see the phrase "the mesage"
+where "mesage" has red mispell underline. </p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously
+frequently revert 'message' to 'mesage'. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html b/Source/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html
new file mode 100644
index 0000000..dc8881f
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/select-from-multiple-guesses.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('e');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execMoveSelectionBackwardByCharacterCommand();
+}
+
+</script>
+
+<title>Select From Multiple Guesses Test</title>
+</head>
+<body>
+<div><p>This test verifies that multiple guesses on mispelled word is working correctly</p>
+<p>After seeing the panel with multiple candidates, use left and/or right arrow key to select the desired candidate, and then use return key to confirm. You can also use this test to test that pressing ESC key will dismiss the panel.</p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autocorrection/type-whitespace-to-dismiss-reversion.html b/Source/WebCore/manual-tests/autocorrection/type-whitespace-to-dismiss-reversion.html
new file mode 100644
index 0000000..eeea0f7
--- /dev/null
+++ b/Source/WebCore/manual-tests/autocorrection/type-whitespace-to-dismiss-reversion.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+<script src=../../../LayoutTests/editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
+
+<script>
+function editingTest() {
+ typeCharacterCommand('t');
+ typeCharacterCommand('h');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ typeCharacterCommand('m');
+ typeCharacterCommand('e');
+ typeCharacterCommand('s');
+ typeCharacterCommand('a');
+ typeCharacterCommand('g');
+ typeCharacterCommand('e');
+ typeCharacterCommand(' ');
+ execMoveSelectionBackwardByCharacterCommand();
+}
+
+</script>
+
+<title>Type Whitespace to Dismiss Reversion Panel Test</title>
+</head>
+<body>
+<div><p>This test verifies that, after reversion panel is shown, typing whitespace will dismiss the reversion panel.
+It also keep the existing autocorrection underline.</p>
+<p>After seeing the reversion panel, type whitespace. You should see the panel being dismissed once you start typing.
+However, the word "message" still has blue underline.</p>
+<p style="color:green">Note, this test can fail due to user specific spell checking data. If the user has previously
+frequently revert 'message' to 'mesage'. To fix this, remove all files in ~/Library/Spelling, then kill AppleSpell.service process.</p>
+<div contenteditable id="root" class="editing">
+<span id="test"></span>
+</div>
+
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autofill-popup-width-and-item-direction.html b/Source/WebCore/manual-tests/autofill-popup-width-and-item-direction.html
new file mode 100644
index 0000000..fa0a80a
--- /dev/null
+++ b/Source/WebCore/manual-tests/autofill-popup-width-and-item-direction.html
@@ -0,0 +1,37 @@
+<html>
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+<title>
+Test the popup list box's width and its items' display directionality
+</title>
+</head>
+<body>
+<p>
+Autofill popup list box should have the same width as its input field's width.
+If the submitted input text is longer, it will be truncated to fit in the
+input field's width
+<p> Try type some long text in the "Last name" input box,
+ Say "abcd abcd abcd abcd abcd abcd".
+then click "Submit". Open the file again, and type the first letter "a",
+the form autofill pop-up should show up now with the width the same as
+the width of the input field, and the text "abcd abcd abcd abcd abcd abcd" got
+truncated to fit in.
+<p> Try type the following text into the "First name" and "Last name".
+<ul>
+<li>abcd efg
+<li>שששששש ננננננ בבבבבבבבב
+<li>abc ××× defghijklmnopq
+<li>×××××××××× abcdefghijklmn בבבבבבב
+<li>hi!
+<li>××!
+</ul>
+They should be displayed as RTL in the popup of "First name",
+and should be displayed as LTR in the popup of the "Last name".
+<br>
+<form action="form_action.asp" method="get">
+ First name: <input type="text" name="fname" dir="rtl"/><br />
+ Last name: <input type="text" name="lname" /><br />
+ <input type="submit" value="Submit" />
+</form>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autofill_alignment.html b/Source/WebCore/manual-tests/autofill_alignment.html
new file mode 100644
index 0000000..4863e41
--- /dev/null
+++ b/Source/WebCore/manual-tests/autofill_alignment.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+<title>
+Test auto-fill drop-down items' alignment
+</title>
+</head>
+<body>
+<p>
+Autofill drop-down item's alignment should be the same as the input field.
+It should align left if the input field's direction is ltr. It should
+align right if the input field's direction is rtl.
+<p> Try type some text in the "First name" and "Last name" input box,
+then click "Submit". Open the file again, double click the "First name"
+field, the drop-down box should be opened with the items aligned right.
+Double click the "Last name" field, the drop-down box should be opened
+with the items aligned left.
+<br>
+<form action="form_action.asp" method="get">
+ First name: <input type="text" name="fname" dir="rtl"/><br />
+ Last name: <input type="text" name="lname" /><br />
+ <input type="submit" value="Submit" />
+</form>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/autoscroll-over-scrollbar.html b/Source/WebCore/manual-tests/autoscroll-over-scrollbar.html
new file mode 100644
index 0000000..2330ed1
--- /dev/null
+++ b/Source/WebCore/manual-tests/autoscroll-over-scrollbar.html
@@ -0,0 +1,8 @@
+<html>
+ <body>
+ <h1><a href="https://bugs.webkit.org/show_bug.cgi?id=40403">Bug 40403</a></h1>
+ <p>Click down somewhere in this text, then move the pointer over the scrollbar at the bottom of the window, stop there, holding the mouse button down.</p>
+ <div style="height:3000px; width:3000px;"></div>
+ <p>If the bug occurs, then this text won't be selected until you move the mouse slightly. If the bug does not occur, this text should be selected.</p>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/autoscroll-when-outside-window.html b/Source/WebCore/manual-tests/autoscroll-when-outside-window.html
new file mode 100644
index 0000000..91b4ecf
--- /dev/null
+++ b/Source/WebCore/manual-tests/autoscroll-when-outside-window.html
@@ -0,0 +1,7 @@
+<html>
+ <body>
+ <p>Click somewhere in this text, then quickly drag past the bottom of the window and hold still to allow auto-scrolling to happen.</p>
+ <div style="height:3000px"></div>
+ <p>If the bug occurs, then this text won't be selected until you move the mouse slightly. If the bug does not occur, this text should be selected.</p>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/autoscroll.html b/Source/WebCore/manual-tests/autoscroll.html
new file mode 100644
index 0000000..db9bd90
--- /dev/null
+++ b/Source/WebCore/manual-tests/autoscroll.html
@@ -0,0 +1,32 @@
+<head>
+<script>
+function addFrameText() {
+ frameDoc = window.frames[0].document;
+ item = frameDoc.createElement("p");
+ item.appendChild(frameDoc.createTextNode("Hello, world!"));
+ for (i = 0; i < 1000; ++i) {
+ frameDoc.body.appendChild(item.cloneNode(true));
+ }
+}
+</script>
+</head>
+
+<body onload="javascript:addFrameText()">
+
+<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=11718">bug 11718</a>:
+When I mouse up after dragging a selection outside of a iframe, the iframe continues to scroll automatically.</p>
+
+<p>Make the frame autoscroll by moving the mouse pointer outside of it while selecting.
+Autoscrolling should stop when you release the mouse button outside the frame (in the main frame,
+in another subframe, or just outside the window).</p>
+
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=49209">bug 49209</a>:
+Open another page in a different tab, middle click in the first iframe, scroll up, and select the other tab. The pan scrolling
+cursor should disappear, and you should exit pan scrolling mode.</p>
+
+<IFRAME FRAMEBORDER=1></IFRAME>
+<br>
+<IFRAME FRAMEBORDER=1></IFRAME>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/back-forward-during-alert-1.html b/Source/WebCore/manual-tests/back-forward-during-alert-1.html
new file mode 100644
index 0000000..41a6e6a
--- /dev/null
+++ b/Source/WebCore/manual-tests/back-forward-during-alert-1.html
@@ -0,0 +1,3 @@
+<body>
+View this page, then click <a href="back-forward-during-alert-2.html">here.</a>
+</body>
diff --git a/Source/WebCore/manual-tests/back-forward-during-alert-2.html b/Source/WebCore/manual-tests/back-forward-during-alert-2.html
new file mode 100644
index 0000000..931af01
--- /dev/null
+++ b/Source/WebCore/manual-tests/back-forward-during-alert-2.html
@@ -0,0 +1,10 @@
+<script>
+function loaded()
+{
+ alert("While this alert is showing, two-fingered swipe back using a MacBook trackpad, Magic Trackpad, or Magic Mouse. You should not be able to navigate back. If you can, dismissing this dialog will likely result in a crash.");
+}
+</script>
+
+<body onload="loaded();">
+Follow the instructions in the alert that shows up on page load.
+</body>
diff --git a/Source/WebCore/manual-tests/back.html b/Source/WebCore/manual-tests/back.html
new file mode 100644
index 0000000..4eea5df
--- /dev/null
+++ b/Source/WebCore/manual-tests/back.html
@@ -0,0 +1 @@
+<input type="button" onclick="history.back()" value="Go Back"> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/background-image-change-in-page-cache.html b/Source/WebCore/manual-tests/background-image-change-in-page-cache.html
new file mode 100644
index 0000000..c6fb38e
--- /dev/null
+++ b/Source/WebCore/manual-tests/background-image-change-in-page-cache.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=12773">12773</a> REGRESSION (r19490): Crash on ipx-server.de</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click the link below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+A SUCCESS message will appear at the bottom of the page and Safari will not crash.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Safari will crash or the SUCCESS message will not appear.
+</p>
+
+<div style="background-image: url(resources/3dolph.gif); height: 2px; width: 2px;">
+</div>
+<a href="?clicked">Click here</a>
+<div id="result"></div>
+<script>
+ if (location.href.match("clicked$"))
+ document.getElementById("result").innerText = "SUCCESS";
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/bad-clearTimeout-crash.html b/Source/WebCore/manual-tests/bad-clearTimeout-crash.html
new file mode 100644
index 0000000..b7ee23c
--- /dev/null
+++ b/Source/WebCore/manual-tests/bad-clearTimeout-crash.html
@@ -0,0 +1,13 @@
+If the back/forward cache is enabled, this test will crash instead of going to the next page that says PASS.
+
+It cannot be automated because DumpRenderTree doesn't support the back/forward cache.
+
+<script>
+if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+
+setTimeout('',1000);
+clearTimeout(0);
+clearTimeout(0);
+window.location = "data:text/html,This test shouldn't crash. PASS.<scr" + "ipt>if (window.layoutTestController) layoutTestController.notifyDone()</scr" + "ipt>";
+</script>
diff --git a/Source/WebCore/manual-tests/bidi-parens.html b/Source/WebCore/manual-tests/bidi-parens.html
new file mode 100644
index 0000000..cbbd854
--- /dev/null
+++ b/Source/WebCore/manual-tests/bidi-parens.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+<style>
+.console {
+ font-family: Arial, Times New Roman
+}
+</style>
+</head>
+<body>
+<p>This test checks for a regression against <a href="http://bugs.webkit.org/show_bug.cgi?id=3435">3435 Parentheses are backwards in Hebrew text (no bidi mirroring?)</a>.</p>
+<p>Success: parentheses encapsulate word.</p>
+<p>Failure: parentheses face away from word.</p>
+<hr>
+<p id="console" dir="rtl">
+(למדינות)
+</p>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/bidi-visible-control-characters.html b/Source/WebCore/manual-tests/bidi-visible-control-characters.html
new file mode 100644
index 0000000..7eeac06
--- /dev/null
+++ b/Source/WebCore/manual-tests/bidi-visible-control-characters.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-8">
+<title>Internal bidi control characters are visible</title>
+</head>
+<body>
+<p>Since the current default font does not contain bidi control characters, this test needs to be manual. The following paragraph should contain only 3 hebrew characters (and no control characters).</p>
+<p style="font-family:Arial;">&#x05d2;&#x05d1;&#x05d0;</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/bugzilla-14899.html b/Source/WebCore/manual-tests/bugzilla-14899.html
new file mode 100644
index 0000000..1cee31a
--- /dev/null
+++ b/Source/WebCore/manual-tests/bugzilla-14899.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+ <script>
+ function test()
+ {
+ document.getElementById("z").style.display='block';
+ open("data:text/html,SUCCESS");
+ }
+ </script>
+</head>
+<body>
+ <p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=14899">Bugzilla bug 14899</a> !d->m_view->needsLayout() in Frame::paint() (Causes assert)</p>
+
+ <p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+ Make sure you are using a debug build of the Web Kit framework. Click the Test button below.
+ </p>
+
+ <p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+ A new window will open.
+ </p>
+
+ <p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+ An assertion failure will occur.
+ </p>
+ <button onclick="test()">Test</button>
+ <div id="z" style="display: none;">
+ <object>
+ <embed width="40" src="resources/orange.mov" controller="false">
+ </object>
+ </div>
+</body>
diff --git a/Source/WebCore/manual-tests/bugzilla-3855.html b/Source/WebCore/manual-tests/bugzilla-3855.html
new file mode 100644
index 0000000..dd19104
--- /dev/null
+++ b/Source/WebCore/manual-tests/bugzilla-3855.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=3855">Bugzilla Bug 3855</a> Table with Form Field and Hidden DIV crashes Safari</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Type in the text field below.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Safari will not crash, text will show up in text field as expected.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Safari will crash.
+</p>
+
+Type in the input field below:
+<form>
+<div style="display:none;">
+<table>
+ <tr>
+ <td>test</td>
+ </tr>
+ </table>
+</div>
+
+<input type='text' value='' />
+</form>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/bugzilla-48077.html b/Source/WebCore/manual-tests/bugzilla-48077.html
new file mode 100644
index 0000000..67bb1f1
--- /dev/null
+++ b/Source/WebCore/manual-tests/bugzilla-48077.html
@@ -0,0 +1,87 @@
+<html>
+<!--
+This test case is used to prove HTMLParserScheduler should be suspended when page loading is deferred. See https://bugs.webkit.org/show_bug.cgi?id=48077.
+However, this test case can work only when customHTMLTokenizerChunkSize() is equal to or smaller than 256. To reproduce the problem with other settings, try
+adding more tags into body.
+
+To use the test case, open it in browser, when the alert shows up, wait for a few seconds, and close the alert. If it shows "Error detected", that means the problem exists.
+-->
+<script>
+var showingAlert = false;
+
+function log(message, replace)
+{
+ if (replace)
+ document.getElementById("result").innerHTML = message;
+ else
+ document.getElementById("result").innerHTML += "<br>" + message;
+}
+
+function showAlert()
+{
+ showingAlert = true;
+ alert("Test");
+ showingAlert = false;
+}
+
+// Insert a script element so the script will be executed when the resource is loaded.
+function insertScript()
+{
+ var head = document.getElementsByTagName("head")[0];
+ var myScript = document.createElement('script');
+ myScript.type = 'text/javascript';
+ myScript.src = 'resources/bugzilla-48077.js';
+ head.appendChild(myScript);
+}
+function check()
+{
+ // Check JS re-entrancy. If showingAlert is true, we are still in showAlert().
+ if (showingAlert)
+ log("Error detected!", false);
+ else
+ log("No error detected.", false);
+}
+
+// Do a time consuming job so we can make HTML parser run over time limit.
+function logTime()
+{
+ // time consuming job;
+ var startTime = new Date();
+ do {
+ var currentTime = new Date();
+ log(currentTime, true);
+ } while (currentTime - startTime < 1000);
+}
+</script>
+<body>
+<p id="result"></p>
+
+<script>
+insertScript();
+</script>
+
+<!-- Time consuming job to make HTML parser run over chunk time limit -->
+<script>
+logTime();
+</script>
+
+<!-- Lots of tags to make HTML parser run over chunk size limit -->
+<a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a>
+
+<!-- Time consuming job to make HTML parser run over chunk time limit -->
+<script>
+logTime();
+</script>
+
+<!-- Lots of tags to make HTML parser run over chunk size limit -->
+<a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a><a>1</a>
+
+
+<script>
+check();
+</script>
+
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/bugzilla-4840.html b/Source/WebCore/manual-tests/bugzilla-4840.html
new file mode 100644
index 0000000..6cf68bd
--- /dev/null
+++ b/Source/WebCore/manual-tests/bugzilla-4840.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=4840">Bugzilla bug 4840</a> Frames only resize wider, can't make them narrower</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Drag the vertical split bar below to the left and release it.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The frames will resize accordingly, with the split bar where you released it.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The split bar will not follow the mouse when dragged to the left. After releasing
+the mouse button, the frames will not resize and the split bar will continue to
+follow the mouse.
+</p>
+
+<iframe style="width: 100%; height: 200px;" src="data:text/html,<frameset cols=%22*, *%22><frameset rows=%22*, *%22><frame src=%22about:blank%22><frame src=%22about:blank%22></frameset><frame src=%22about:blank%22></frameset>"></iframe>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/bugzilla-5768.html b/Source/WebCore/manual-tests/bugzilla-5768.html
new file mode 100644
index 0000000..4ead9f2
--- /dev/null
+++ b/Source/WebCore/manual-tests/bugzilla-5768.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
+"http://www.w3.org/TR/html4/frameset.dtd">
+<html>
+<head>
+<title>No relayout when all frames are fixed</title>
+<script type="text/javascript">
+if (window.layoutTestController)
+ layoutTestController.waitUntilDone();
+var i = 0;
+function test()
+{
+ i++;
+ var f = document.getElementById('f');
+ switch(i) {
+ case 1:
+ window.setTimeout(test, 100);
+ break;
+ case 2:
+ f.src = "resources/frame2.html";
+ break;
+ case 3:
+ window.setTimeout(test, 100);
+ break;
+ case 4:
+ f.src = "resources/frame1.html";
+ break;
+ case 5:
+ window.setTimeout(test, 100);
+ break;
+ case 6:
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ break;
+ }
+}
+</script>
+</head>
+<frameset>
+ <frame onload="test()" id="f" src="resources/frame1.html" noresize>
+</frameset>
+</html>
diff --git a/Source/WebCore/manual-tests/bugzilla-6821.html b/Source/WebCore/manual-tests/bugzilla-6821.html
new file mode 100644
index 0000000..a653945
--- /dev/null
+++ b/Source/WebCore/manual-tests/bugzilla-6821.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<style>
+ div { width: 60px; text-align: center;
+ position: relative; }
+ div#a { background: green; }
+ div#b { background: yellow; }
+ div#a:hover { background: red; }
+ div#b:hover { background: green; }
+ span#c:hover { color: red; }
+</style>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=6821">Bugzilla bug 6821</a> Fix for 5983 will not always update hover correctly.</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Move the mouse over the text &ldquo;Hover here&rdquo; until it disappears and &ldquo;Wait&rdquo; appears, then DO NOT MOVE the mouse
+until the end of the test.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+After a second, you should see &ldquo;Only green now&rdquo; over a green background.
+No other colors should be visible.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+&ldquo;Only green now&rdquo; will appear over a yellow background with a red
+rect at the top. If you move the mouse over the background, the colors will
+change to green eventually.
+</p>
+
+<hr>
+
+<script type="text/javascript">
+function hideC()
+{
+ c.style.display = 'none';
+}
+
+function hoveredC()
+{
+ window.setTimeout(hideC, 1000);
+}
+
+</script>
+
+<div id="a">
+<div style="height: 20px;"></div>
+<span id="c" onmouseover="hoveredC()">Hover here<br><span style="background: black;">&nbsp;Wait&nbsp;</span></span>
+</div>
+<div id="b">
+Only green now
+</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/canvas-mask-redraw.html b/Source/WebCore/manual-tests/canvas-mask-redraw.html
new file mode 100644
index 0000000..f166b3a
--- /dev/null
+++ b/Source/WebCore/manual-tests/canvas-mask-redraw.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Canvas Mask</title>
+ <style type="text/css" media="screen">
+ #canvas1 {
+ height: 300px;
+ width: 400px;
+ border: 1px solid black;
+ }
+
+ .masked {
+/* -webkit-transform: rotate(10deg);*/
+ -webkit-mask: -webkit-canvas(canvas1);
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+
+ var gPageWidth = 320;
+ var gPageHeight = 200;
+
+ function drawPageShadow(shadowWidth)
+ {
+ var ctx = document.getCSSCanvasContext('2d', 'canvas1', gPageWidth, gPageHeight);
+ ctx.clearRect (0, 0, gPageWidth, gPageHeight);
+
+ var gradient = ctx.createLinearGradient(0, 0, shadowWidth, 0);
+ gradient.addColorStop(0, 'rgba(0,0,0,1)');
+ gradient.addColorStop(1, 'rgba(0,0,0,0)');
+ ctx.fillStyle = gradient;
+ ctx.fillRect (0, 0, shadowWidth, gPageHeight);
+ }
+
+ function redrawCanvas(event)
+ {
+ drawPageShadow(event.pageX);
+ }
+
+ function onPageLoad()
+ {
+ drawPageShadow(640);
+ }
+
+ window.addEventListener('load', onPageLoad, false);
+
+ </script>
+</head>
+<body>
+
+ <p>Hovering over the image or text should cause the element to be redrawn with a new mask</p>
+ <a href="https://bugs.webkit.org/show_bug.cgi?id=19954">https://bugs.webkit.org/show_bug.cgi?id=19954</a>
+ <h2>Image with mask</h2>
+ <img src="http://www.google.com/intl/en_ALL/images/logo.gif" width="320" height="200" alt="Clown Fish" class="masked"
+ onmousemove="redrawCanvas(event)">
+
+ <h2>Div with mask</h2>
+ <div class="masked" style="width: 640px" onmousemove="redrawCanvas(event)">
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ </div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/caret-image.html b/Source/WebCore/manual-tests/caret-image.html
new file mode 100644
index 0000000..a6dff5e
--- /dev/null
+++ b/Source/WebCore/manual-tests/caret-image.html
@@ -0,0 +1,9 @@
+<p>
+Test to see if caret works correctly to the right of an image.
+If the test is successful, the caret will look thin as usual.
+If the test fails, the caret will be a big black box the size of the image.
+</p>
+
+<div id="test" contenteditable="true">free<img src="resources/webkit-background.png">lunch</div>
+
+<script>window.getSelection().setPosition(document.getElementById("test"), 2);</script>
diff --git a/Source/WebCore/manual-tests/caretScrolling.html b/Source/WebCore/manual-tests/caretScrolling.html
new file mode 100644
index 0000000..6fb8044
--- /dev/null
+++ b/Source/WebCore/manual-tests/caretScrolling.html
@@ -0,0 +1,18 @@
+<html>
+<p>Manual test for fix for <a href="rdar://problem/3690705">rdar://problem/3690705</a> "caret does not move when scrolling overflow: auto editable area"</p>
+<p>
+Click inside the block below, a caret should appear. Grab the block's scroll handle and scroll down. The caret blinks, try to grab the scroll handle while the caret is visible. The caret should scroll and disappear when it reaches the block's border.
+</p>
+
+<div contentEditable style="border: 1px solid blue; height: 100px; overflow:scroll;">
+one<br>
+two<br>
+three<br>
+four<br>
+five<br>
+six<br>
+seven<br>
+eight<br>
+</div>
+
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/chrome-bidi-text.html b/Source/WebCore/manual-tests/chrome-bidi-text.html
new file mode 100644
index 0000000..99c0a7b
--- /dev/null
+++ b/Source/WebCore/manual-tests/chrome-bidi-text.html
@@ -0,0 +1,5 @@
+<p>
+ This tests drawing bidirectional text in Windows Safari chrome. Click the
+ Start button and follow the instructions.
+</p>
+<button onclick='open("resources/chrome-bidi-text-window.html", null, "toolbar=no")'>Start</button> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/chromium/no-autofill-on-readonly.html b/Source/WebCore/manual-tests/chromium/no-autofill-on-readonly.html
new file mode 100644
index 0000000..9724aaa
--- /dev/null
+++ b/Source/WebCore/manual-tests/chromium/no-autofill-on-readonly.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+</head>
+<body>
+ <p>This page tests that the autofill popup is not shown for read-only and disabled text inputs.</p>
+ <p>Do the following:</p>
+ <ul>
+ <li>Enter a name in the input text in Form 1 and press submit. This is so the autofill has a value for that field.</li>
+ <li>Reload the page so the input text is empty. Click twice on the Form 1 text input. An autofill popup with the name you entered previously should be shown.</li>
+ <li>Click twice on the Form 2 text input. No autofill popup should be shown.</li>
+ <li>Click twice on the Form 3 text input. No autofill popup should be shown.</li>
+ </ul>
+
+ <h1>Form 1 (text input non read-only)</h1>
+ <form action="no-autofill-on-readonly.html">
+ Name:<input type="text" name="name"></input><br>
+ <input type="submit"></input>
+ </form>
+
+ <h1>Form 2 (text input read-only)</h1>
+ <form action="no-autofill-on-readonly.html">
+ Name:<input type="text" name="name" READONLY></input><br>
+ <input type="submit"></input>
+ </form>
+
+ <h1>Form 3 (text input disabled)</h1>
+ <form action="no-autofill-on-readonly.html">
+ Name:<input type="text" name="name" DISABLED></input><br>
+ <input type="submit"></input>
+ </form>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/chromium/onchange-reload-popup.html b/Source/WebCore/manual-tests/chromium/onchange-reload-popup.html
new file mode 100644
index 0000000..ce8f21e
--- /dev/null
+++ b/Source/WebCore/manual-tests/chromium/onchange-reload-popup.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <script type="text/javascript">
+
+ function addEvent(obj, evType, fn) {
+ if (obj.addEventListener){
+ obj.addEventListener(evType, fn, false);
+ return true;
+ } else if (obj.attachEvent){
+ var r = obj.attachEvent("on"+evType, fn);
+ return r;
+ } else {
+ return false;
+ }
+ }
+
+ function reloadSelect() {
+ var container = document.getElementById('container');
+ container.innerHTML = '<select id="menu"> \
+ <option value="abcd">abcd</option>\
+ <option value="defg">efgh</option>\
+ </select>';
+
+ var menu = document.getElementById('menu');
+ addEvent(menu, 'change', reloadSelect);
+ }
+
+ </script>
+</head>
+<body>
+ <p>Do the following and see if Chromium crashes.</p>
+ <ul>
+ <li>Click the select</li>
+ <li>Press 'e' on your keyboard</li>
+ <li>Click on the document but not the select itself.</li>
+ </ul>
+
+ <div id="container"/>
+ <script>
+ reloadSelect()
+ </script>
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/chromium/select-close-popup-value-change.html b/Source/WebCore/manual-tests/chromium/select-close-popup-value-change.html
new file mode 100644
index 0000000..f2adf61
--- /dev/null
+++ b/Source/WebCore/manual-tests/chromium/select-close-popup-value-change.html
@@ -0,0 +1,20 @@
+<html>
+<head>
+</head>
+<body>
+ <p>Do the following, the test passes if the select keeps the selected value after step 4, fails if the value reverted.</p>
+ <ul>
+ <li>1. Click the select to open the popup list.</li>
+ <li>2. Use keyboard to select a value by pressing the first letter of the value.</li>
+ <li>3. Click the select again to close the popup list, it should stay at the value from step 2.</li>
+ <li>4. Click anywhere else on the page to move the focus out of the select.</li>
+ </ul>
+
+ <select>
+ <option>0</option>
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ </select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/chromium/suggestions-popup-font-change.html b/Source/WebCore/manual-tests/chromium/suggestions-popup-font-change.html
new file mode 100644
index 0000000..b85977a
--- /dev/null
+++ b/Source/WebCore/manual-tests/chromium/suggestions-popup-font-change.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+</head>
+<body>
+ <p>Verify that the font size in the suggestion popup matches the corresponding
+ input field, test passes if step 2 matches expected behavior.</p>
+ <ul>
+ <li>1. Type "abcd" in the text form and press enter.</li>
+ <li>2. Type "a" in the text form, suggestions popup should appear.
+ Verify that font size of text in suggestion popup is the same as in
+ the corresponding input form.
+ </li>
+ <li>3. Delete contents of input box, press Cntrl/+ [Command/+ on Mac]
+ to magnify the page contents. Repeat step 2, text size should still
+ match. </li>
+ </ul>
+ <form method="get" action="suggestions-popup-font-change.html" id="form">
+ <input name="s" id="s" style="font-size:x-large">
+ </form>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/clear-input-file.html b/Source/WebCore/manual-tests/clear-input-file.html
new file mode 100644
index 0000000..f1ef360
--- /dev/null
+++ b/Source/WebCore/manual-tests/clear-input-file.html
@@ -0,0 +1,27 @@
+<script>
+function clearWithReset()
+{
+ document.getElementById("form").reset();
+}
+function clearBySettingValue()
+{
+ document.getElementById("file").value = "";
+}
+function clearBySettingValueToNull()
+{
+ document.getElementById("file").value = null;
+}
+function clearBySettingValueToX()
+{
+ document.getElementById("file").value = "x";
+}
+</script>
+<p>Use this to test the various ways you can clear an input type=file element.</p>
+<form id="form">
+<p>Choose a file here: <input type="file" id="file"></input></p>
+<p>Then press one of these buttons, that should clear the file:
+<input type="button" value="clear with reset()" onclick="clearWithReset()">
+<input type="button" value="clear by setting value to ''" onclick="clearBySettingValue()"></p>
+<p>Or press this button that should clear the file, but won't, due to <a href="http://bugs.webkit.org/show_bug.cgi?id=13448">bug 13448</a>: <input type="button" value="clear by setting value to null" onclick="clearBySettingValueToNull()"></p>
+<p>Or press this button to verify we can't set to a non-empty value: <input type="button" value="clear by setting value to 'x'" onclick="clearBySettingValueToX()"></p>
+</form>
diff --git a/Source/WebCore/manual-tests/clearTimeout-crash-bug29832.html b/Source/WebCore/manual-tests/clearTimeout-crash-bug29832.html
new file mode 100644
index 0000000..d9ec5c7
--- /dev/null
+++ b/Source/WebCore/manual-tests/clearTimeout-crash-bug29832.html
@@ -0,0 +1,20 @@
+<script>
+var w;
+function clear() {
+ w.clearTimeout(153);
+}
+
+function test() {
+ w = window.open("data:text/html,"+
+ "<script>" +
+ "function navigate() { location.href='data:text/html,<body>Close this page and wait.</body>'};" +
+ "setTimeout(navigate,0);</" +
+ "script>");
+
+ setInterval(clear, 0);
+}
+</script>
+<body>
+<p>This test reproduces the crash in DOMWindow::clearTimeout that happens when DOMWindow is disconnected from the Frame (as in back/forward cache expiration case tested here).
+<p>This is the link to the bug: <a href="https://bugs.webkit.org/show_bug.cgi?id=29832">https://bugs.webkit.org/show_bug.cgi?id=29832</a>
+<p>To reproduce the crash, click the link below, the popup window opens, which will immediately navigate to another one, so the b/f cache entry will be created. Close the popup window. Wait a few seconds (~10), for the page cache to start deleting pages it doesn't need - crash will happen.<br><a href="javascript:test()">Crash me!</a>
diff --git a/Source/WebCore/manual-tests/close-on-closedWindow.html b/Source/WebCore/manual-tests/close-on-closedWindow.html
new file mode 100644
index 0000000..9e30715
--- /dev/null
+++ b/Source/WebCore/manual-tests/close-on-closedWindow.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4094363">rdar://problem/4094363</a> Can't re-open a window at capripalace.com website because "close" fails on already-closed window</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+<ol>
+ <li>Click the link below </li>
+ <li>Close the window that opens </li>
+ <li>Click the link again </li>
+</ol>
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+If the bug is fixed, a window WILL OPEN after Step #3.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+If the bug is not fixed, a window WILL NOT OPEN after Step #3.
+</p>
+
+<script language="JavaScript">
+win = null;
+function win_open() {
+
+ if (win != null) {
+ win.close();
+ }
+ win = window.open('about:blank');
+}
+</script>
+
+ <a href="javascript:win_open();">Click this link</a>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/compositing/accel-comp-iframe-tab-repaint.html b/Source/WebCore/manual-tests/compositing/accel-comp-iframe-tab-repaint.html
new file mode 100644
index 0000000..35c9c34
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/accel-comp-iframe-tab-repaint.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<title>Accelerated compositing tab repaint bug</title>
+<style>
+body {
+ background-color: yellow;
+}
+</style>
+<h1>Accelerated compositing tab repaint bug</h1>
+<p>This test case checks for a repaint bug resulting from accelerated
+compositing of iframes on Mac. Follow these steps:</p>
+<ol>
+<li>Open <a href="resources/tab-repaint-part-2.html">this link</a> in a new tab.</li>
+<li>Close this tab.</li>
+<li>The new page should be blue.</li>
+</ol>
diff --git a/Source/WebCore/manual-tests/compositing/assert-on-tab-switch.html b/Source/WebCore/manual-tests/compositing/assert-on-tab-switch.html
new file mode 100644
index 0000000..5b82c49
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/assert-on-tab-switch.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ .box {
+ width: 100px;
+ height: 100px;
+ background-color: blue;
+ -webkit-transform: translateZ(0);
+ }
+
+ </style>
+</head>
+<body>
+ <div class="box"></div>
+ <p><a href="https://bugs.webkit.org/show_bug.cgi?id=43167">https://bugs.webkit.org/show_bug.cgi?id=43167</a><br>
+ You should not hit an assertion if you load this file in a tab, then switch back and forth between other tabs.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/compositing/caret-in-compositing-frame.html b/Source/WebCore/manual-tests/compositing/caret-in-compositing-frame.html
new file mode 100644
index 0000000..703f3b2
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/caret-in-compositing-frame.html
@@ -0,0 +1,7 @@
+<style type="text/css" media="screen">
+ iframe {
+ border: 1px solid black;
+ width: 400px;
+ }
+</style>
+<iframe src="resources/editable-compositing-subframe.html" scrolling="no"></iframe>
diff --git a/Source/WebCore/manual-tests/compositing/font-smoothing.html b/Source/WebCore/manual-tests/compositing/font-smoothing.html
new file mode 100644
index 0000000..fce444e
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/font-smoothing.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+
+<html>
+ <style type="text/css" media="screen">
+ div {
+ margin: 20px;
+ font-size: 24pt;
+ }
+
+ .composited {
+ -webkit-transform: translateZ(0);
+ background-color: white;
+ }
+
+ .smoothed {
+ -webkit-font-smoothing: subpixel-antialiased;
+ }
+ </style>
+<head>
+</head>
+<body>
+ <div class="composited">
+ This text should be antialiased, but not smoothed.
+ </div>
+
+ <div class="smoothed composited">
+ This text should be antialiased and smoothed.
+ </div>
+
+ <div>
+ This text should be antialiased and smoothed in the browser, and antialiased in pixel results.
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/compositing/missing-iframe-contents.html b/Source/WebCore/manual-tests/compositing/missing-iframe-contents.html
new file mode 100644
index 0000000..d769e43
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/missing-iframe-contents.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ iframe {
+ border: 10px solid black;
+ padding: 5px;
+ margin: 20px;
+ height: 150px;
+ width: 300px;
+ -webkit-box-shadow: 0 0 20px black;
+ -webkit-transform: translateZ(0);
+ }
+
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ function doTest()
+ {
+ document.getElementById('iframe').className = 'dummy';
+ }
+
+ window.addEventListener('load', doTest, false);
+ </script>
+</head>
+<body>
+
+ <iframe id="iframe" src="resources/composited-subframe.html"></iframe>
+
+ <p><a href="https://bugs.webkit.org/show_bug.cgi?id=42046">https://bugs.webkit.org/show_bug.cgi?id=42046</a><br>
+ You should see a blue rectangle inside the iframe when the page loads.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/compositing/resources/composited-subframe.html b/Source/WebCore/manual-tests/compositing/resources/composited-subframe.html
new file mode 100644
index 0000000..4a4f53e
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/resources/composited-subframe.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ body { background-color:silver }
+
+ .box {
+ height: 200px;
+ width: 200px;
+ margin: 10px;
+ padding: 5px;
+ background-color: blue;
+ -webkit-transform: translateZ(0);
+ overflow:hidden;
+ }
+ .box:hover {
+ -webkit-transform: none;
+ }
+ </style>
+</head>
+<body>
+
+ <div id="iframe-content" class="box">
+ </div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/compositing/resources/editable-compositing-subframe.html b/Source/WebCore/manual-tests/compositing/resources/editable-compositing-subframe.html
new file mode 100644
index 0000000..24b43e8
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/resources/editable-compositing-subframe.html
@@ -0,0 +1,9 @@
+<style type="text/css" media="screen">
+ #editable {
+ height: 100px;
+ -webkit-transform: translateZ(0px);
+ }
+</style>
+<div id="editable" contenteditable="true">
+The caret should blink correctly when editing this paragraph.
+</div>
diff --git a/Source/WebCore/manual-tests/compositing/resources/flash-frame.html b/Source/WebCore/manual-tests/compositing/resources/flash-frame.html
new file mode 100644
index 0000000..34d9290
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/resources/flash-frame.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html>
+<title>Flash frame for repaint test</title>
+<embed src="../../resources/spinbox.swf">
diff --git a/Source/WebCore/manual-tests/compositing/resources/tab-repaint-part-2.html b/Source/WebCore/manual-tests/compositing/resources/tab-repaint-part-2.html
new file mode 100644
index 0000000..17cb6e7
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/resources/tab-repaint-part-2.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>Accelerated compositing tab repaint bug part 2</title>
+<style>
+body {
+ background-color: royalblue;
+}
+iframe {
+ border-width: 0px;
+ width: 400px;
+ height: 200px;
+}
+</style>
+<body>
+<ol>
+<li>This page should have a blue background.</li>
+</ol>
+<iframe src="../resources/flash-frame.html"></iframe>
+</body>
diff --git a/Source/WebCore/manual-tests/compositing/show-composited-iframe-on-back-button.html b/Source/WebCore/manual-tests/compositing/show-composited-iframe-on-back-button.html
new file mode 100644
index 0000000..fff8888
--- /dev/null
+++ b/Source/WebCore/manual-tests/compositing/show-composited-iframe-on-back-button.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <!--
+ This content was originally intended as a layout test, but the sequencing performed by
+ queueBackNavigation/queueForwardNavigation differs somehow from what occurs when hitting
+ the back and forward buttons, so the error does not occur. I've left all the LayoutTestController
+ logic in the test in case this is fixed in the future.
+ -->
+
+ <title>Show composited iframe contents when navigating back to page</title>
+ <style type="text/css" media="screen">
+ #box {
+ background-color: red;
+ width: 100px;
+ height: 100px;
+ -webkit-transform: translateZ(0);
+ }
+ iframe {
+ margin: 20px;
+ height: 250px;
+ width: 250px;
+ border: 1px solid black;
+ }
+
+ .composited {
+ -webkit-transform: translateZ(0);
+ }
+
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ var dumpLayerTree = function()
+ {
+ if (window.layoutTestController) {
+ document.getElementById('layers').innerHTML += "Layer Tree after\n\n"+layoutTestController.layerTreeAsText()+"\n\n";
+ }
+ }
+
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ }
+
+ function onPageShow(evt)
+ {
+ if (!evt.persisted && window.layoutTestController) {
+ // this is the first time the page has been loaded, then setup the
+ // to-be-tested scenario.
+ document.getElementById('layers').innerHTML = "Layer Tree before\n\n"+layoutTestController.layerTreeAsText()+"\n\n";
+ layoutTestController.queueLoad("resources/subframe.html");
+ layoutTestController.queueBackNavigation(1);
+ layoutTestController.queueForwardNavigation(1);
+ layoutTestController.queueBackNavigation(1);
+ layoutTestController.queueNonLoadingScript("dumpLayerTree()");
+ }
+ }
+
+ window.onpageshow = onPageShow;
+ </script>
+</head>
+<body>
+<p>
+ This page has a composited iframe. When navigating to a new page and then back to this one, the iframe contents should show up.
+</p>
+ Click on the following URL and then click back. When navigating back to this page, the blue box inside the black rectangle
+ should show up.
+</p>
+<pre>
+ <a href="http://apple.com">http://apple.com</a>
+</pre>
+ <div id=box></div>
+ <iframe id="iframe" scrolling="no" src="resources/composited-subframe.html"></iframe>
+<br>
+<pre id="layers"></pre>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/computed-transform-value.html b/Source/WebCore/manual-tests/computed-transform-value.html
new file mode 100644
index 0000000..5d7e622
--- /dev/null
+++ b/Source/WebCore/manual-tests/computed-transform-value.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Get Computed Transform</title>
+ <style type="text/css" media="screen">
+ .box {
+ height: 200px;
+ width: 200px;
+ background-color: #00a0a0;
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ function printTransform(event)
+ {
+ var box = event.target;
+ var computedTransform = window.getComputedStyle(box).webkitTransform;
+ document.getElementById("output").innerHTML = 'Computed transform is ' + computedTransform;
+ }
+
+ </script>
+</head>
+<body onclick="printTransform(event)">
+
+<h1>Testing transform computed style</h1>
+<p>All boxes are 200x200 pixels. When you click on an element, the computed transform style will be displayed below</p>
+<p id="output">Computed style for -webkit-transform displayed here</p>
+
+
+<div class="box" style="position: absolute; left: 100px; top: 200px; -webkit-transform: scale(1.5, 0.75)">
+ scale(1.5, 0.75)
+</div>
+
+<div class="box" style="position: absolute; left: 400px; top: 200px; -webkit-transform: rotate(30deg)">
+ rotate(30deg)
+</div>
+
+<div class="box" style="position: absolute; left: 100px; top: 400px; -webkit-transform: translate(50px, 80px)">
+ translate(50px, 80px)
+</div>
+
+<div class="box" style="position: absolute; left: 400px; top: 400px; -webkit-transform: translate(10px, 50px) scale(0.8) rotate(-10deg)">
+ translate(10px, 50px) scale(0.8) rotate(-10deg)
+</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/containing-block-position-change.html b/Source/WebCore/manual-tests/containing-block-position-change.html
new file mode 100644
index 0000000..adc2238
--- /dev/null
+++ b/Source/WebCore/manual-tests/containing-block-position-change.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title></title>
+ <style type="text/css">
+ #t { position: absolute; width: 100px; height: 100px; background: green; left: -120px; }
+ </style>
+ <script type="text/javascript">
+ function test()
+ {
+ var container = document.getElementById("rel");
+ var target = document.getElementById("t");
+ document.body.offsetTop; // force layout
+ container.style.position = "relative";
+ document.body.offsetTop; // force layout
+ target.style.left = "0";
+ }
+ </script>
+</head>
+<body onload="test()">
+ <p>
+ This is a test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=9121">http://bugs.webkit.org/show_bug.cgi?id=9121</a>
+ REGRESSION: [Incremental Repaint] DHTML movement test failures</i>.
+ </p>
+ <p>
+ Do not resize the window. If you did, reload the test.
+ </p>
+ <p>
+ There should be a green square below, aligned with the left margin of the page.
+ </p>
+ <hr>
+ <div id="rel" style="position: static;">
+ <span id="t"></span>
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/contenteditable-link.html b/Source/WebCore/manual-tests/contenteditable-link.html
new file mode 100644
index 0000000..9923aa9
--- /dev/null
+++ b/Source/WebCore/manual-tests/contenteditable-link.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE> Webkit bugzilla repro movie: #7156 </TITLE>
+<META NAME="Author" CONTENT="Aldo Hoeben">
+<style type="text/css">
+#editable {
+ width: 40em;
+ height: 10em;
+ border: 1px solid black;
+}
+</STYLE>
+</HEAD>
+
+<BODY>
+<P>Repro movie for bug <a href="http://bugs.webkit.org/show_bug.cgi?id=7156">#7156</a></P>
+
+<div>The behaviour of editable links is controlled by the user default WebKitEditableLinkBehavior. This can be set via a private WebPreference. If the preference is OnlyLiveWithShiftKey, then the link will only be active when the shift key is pressed (WinIE/Firefox behaviour). If the preference is WebKitEditableLinkAlwaysLive or WebKitEditableLinkDefaultBehavior, then the link is always active (Safari 2.0 behaviour). Finally, if the preference is WebKitEditableLinkLiveWhenNotFocused, the link will only be live if the selection before clicking on the link is not in the same editable block as the link.</div>
+
+<div>Also, when a link is 'live' it can be dragged as a link, and when the link isn't 'live', dragging a link just performs a normal text selection.
+</div>
+
+<div id="editable" contentEditable="true">
+ <p>Test content</p>
+ <p><a href="about:blank">Test link</a></p>
+</div>
+
+</BODY>
+</HTML>
diff --git a/Source/WebCore/manual-tests/context-click-generated-content.html b/Source/WebCore/manual-tests/context-click-generated-content.html
new file mode 100644
index 0000000..3fcaf6d
--- /dev/null
+++ b/Source/WebCore/manual-tests/context-click-generated-content.html
@@ -0,0 +1,21 @@
+<style type="text/css">
+html:before, html:after {
+ content: "";
+ width: 50px;
+ height: 50px;
+ position: fixed;
+}
+html:before {
+ border: solid red 5px;
+}
+html:after {
+ border: solid green 5px;
+ top: 60px;
+}
+</style>
+
+<p>
+Test of crash when context-clicking on generated content.
+Do a control-click or a right-click in one of these two
+boxes, and make sure you don't see a crash.
+</p>
diff --git a/Source/WebCore/manual-tests/context-click-unfocused-frame.html b/Source/WebCore/manual-tests/context-click-unfocused-frame.html
new file mode 100644
index 0000000..3e94e85
--- /dev/null
+++ b/Source/WebCore/manual-tests/context-click-unfocused-frame.html
@@ -0,0 +1,17 @@
+<frameset cols="*">
+ <frame src="data:text/html,
+ <script>
+ function contextMenu()
+ {
+ document.getElementById('result').appendChild(document.createTextNode('PASS'));
+ }
+ </script>
+ <body onmousedown='return false;' oncontextmenu='contextMenu(); return false;'>
+ <p>
+ Control-click (Mac) or right-click (Windows) below. The word
+ %26ldquo;PASS%26rdquo; should appear. A contextual menu should not open.
+ </p>
+ <p id='result'></p>
+ </body>
+ ">
+</frameset>
diff --git a/Source/WebCore/manual-tests/crash-and-no-repaint-after-wake-from-sleep.html b/Source/WebCore/manual-tests/crash-and-no-repaint-after-wake-from-sleep.html
new file mode 100644
index 0000000..c0ccb12
--- /dev/null
+++ b/Source/WebCore/manual-tests/crash-and-no-repaint-after-wake-from-sleep.html
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>Test for Bugs 39295 and 39297</title>
+ <meta http-equiv="refresh" content="5">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta name="viewport" content="initial-scale=0.60, minimum-scale=0.60, maximum-scale=0.60">
+ <style type="text/css">
+
+ body {
+ font-family: 'Lucida Grande', Verdana, Arial;
+ font-size: 12px;
+ }
+
+ #stage {
+ margin: 150px auto;
+ width: 600px;
+ height: 400px;
+ /*
+
+ Setting the perspective of the contents of the stage
+ but not the stage itself
+
+ */
+ -webkit-perspective: 800;
+ }
+
+ #rotate {
+ margin: 0 auto;
+ width: 600px;
+ height: 400px;
+ /* Ensure that we're in 3D space */
+ -webkit-transform-style: preserve-3d;
+ /*
+ Make the whole set of rows use the x-axis spin animation
+ for a duration of 7 seconds, running infinitely and linearly
+ */
+ -webkit-animation-name: x-spin;
+ -webkit-animation-duration: 7s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-timing-function: linear;
+ }
+
+ .ring {
+ margin: 0 auto;
+ height: 110px;
+ width: 600px;
+ -webkit-transform-style: preserve-3d;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-timing-function: linear;
+ }
+
+ .ring > :nth-child(odd) {
+ background-color: #995C7F;
+ }
+
+ .ring > :nth-child(even) {
+ background-color: #835A99;
+ }
+
+ .poster {
+ position: absolute;
+ left: 250px;
+ width: 100px;
+ height: 100px;
+ opacity: 0.7;
+ color: rgba(0,0,0,0.9);
+ -webkit-border-radius: 10px;
+ }
+
+ .poster > p {
+ font-family: 'Georgia', serif;
+ font-size: 36px;
+ font-weight: bold;
+ text-align: center;
+ margin-top: 28px;
+ }
+
+ /*
+ Set up each row to have a different animation duration
+ and alternating y-axis rotation directions.
+ */
+ #ring-1 {
+ -webkit-animation-name: y-spin;
+ -webkit-animation-duration: 5s;
+ }
+
+ #ring-2 {
+ -webkit-animation-name: back-y-spin;
+ -webkit-animation-duration: 4s;
+ }
+
+ #ring-3 {
+ -webkit-animation-name: y-spin;
+ -webkit-animation-duration: 3s;
+ }
+
+ /*
+
+ Here we define each of the three individual animations that
+ we will be using to have our 3D rotation effect. The first
+ animation will perform a full rotation on the x-axis, we'll
+ use that on the whole set of objects. The second and third
+ animations will perform a full rotation on the y-axis in
+ opposite directions, alternating directions between rows.
+
+ Note that you currently have to specify an intermediate step
+ for rotations even when you are using individual transformation
+ constructs.
+
+ */
+ @-webkit-keyframes x-spin {
+ 0% { -webkit-transform: rotateX(0deg); }
+ 50% { -webkit-transform: rotateX(180deg); }
+ 100% { -webkit-transform: rotateX(360deg); }
+ }
+
+ @-webkit-keyframes y-spin {
+ 0% { -webkit-transform: rotateY(0deg); }
+ 50% { -webkit-transform: rotateY(180deg); }
+ 100% { -webkit-transform: rotateY(360deg); }
+ }
+
+ @-webkit-keyframes back-y-spin {
+ 0% { -webkit-transform: rotateY(360deg); }
+ 50% { -webkit-transform: rotateY(180deg); }
+ 100% { -webkit-transform: rotateY(0deg); }
+ }
+ </style>
+
+ <script type="text/javascript">
+
+ const POSTERS_PER_ROW = 12;
+ const RING_RADIUS = 200;
+
+ function setup_posters (row)
+ {
+ var posterAngle = 360 / POSTERS_PER_ROW;
+ for (var i = 0; i < POSTERS_PER_ROW; i ++) {
+ var poster = document.createElement('div');
+ poster.className = 'poster';
+ // compute and assign the transform for this poster
+ var transform = 'rotateY(' + (posterAngle * i) + 'deg) translateZ(' + RING_RADIUS + 'px)';
+ poster.style.webkitTransform = transform;
+ // setup the number to show inside the poster
+ var content = poster.appendChild(document.createElement('p'));
+ content.textContent = i;
+ // add the poster to the row
+ row.appendChild(poster);
+ }
+
+ }
+
+ function init ()
+ {
+ setup_posters(document.getElementById('ring-1'));
+ setup_posters(document.getElementById('ring-2'));
+ setup_posters(document.getElementById('ring-3'));
+ }
+
+ // call init once the document is fully loaded
+ window.addEventListener('load', init, false);
+
+ </script>
+ </head>
+
+ <body>
+
+ <p>This is a combined test for <a href="https://bugs.webkit.org/show_bug.cgi?id=39295">Bug 39295: Crash (preceded by
+ assertion) in WKCACFLayerRenderer::setNeedsDisplay when computer wakes from sleep on particular page</a> and <a
+ href="https://bugs.webkit.org/show_bug.cgi?id=39297">Bug 39297: WebView doesn't repaint until page reloads when page
+ using hardware acceleration loads just after waking from sleep</a>. To test, put your computer to sleep (or
+ "Standby", as Windows calls it). When you wake your computer up, the browser should not crash and the animation
+ below should still be running without any periods of non-painting of the WebView.</p>
+ <div id="stage">
+ <div id="rotate">
+ <div id="ring-1" class="ring"></div>
+ <div id="ring-2" class="ring"></div>
+ <div id="ring-3" class="ring"></div>
+ </div>
+ </div>
+
+ </body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/crash-on-accessing-domwindow-without-frame.html b/Source/WebCore/manual-tests/crash-on-accessing-domwindow-without-frame.html
new file mode 100644
index 0000000..77dd115
--- /dev/null
+++ b/Source/WebCore/manual-tests/crash-on-accessing-domwindow-without-frame.html
@@ -0,0 +1,22 @@
+<script>
+var w;
+function clear() {
+ // Id doesn't matter, the crash happens while trying to access the NULL Document to lookup the Id.
+ w.clearTimeout(153);
+}
+
+function test() {
+ w = window.open("data:text/html,"+
+ "<script>" +
+ "function navigate() { location.href='data:text/html,<body>Close this page and wait.</body>'};" +
+ "setTimeout(navigate,0);</" +
+ "script>");
+
+ setInterval(clear, 20);
+}
+</script>
+<body><p>This test reproduces the crash that happens when JavaScript has access to DOMWindow which is disconnected from its Frame. This crash was fixed by http://trac.webkit.org/changeset/49786</p>
+To reproduce the crash:
+<ul><li>Click the link below, the popup window opens.</li><li>Close the popup window.</li><li>Wait about 10 seconds (~10, page cache should start deleting pages) and observe the crash.</li></ul>
+Crashes on Safari 4.0.3</p><p><a href="javascript:test()">Crash me!</a></p>
+</body>
diff --git a/Source/WebCore/manual-tests/crash-on-find-with-no-selection.html b/Source/WebCore/manual-tests/crash-on-find-with-no-selection.html
new file mode 100644
index 0000000..9dd108c
--- /dev/null
+++ b/Source/WebCore/manual-tests/crash-on-find-with-no-selection.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+</head>
+<body>
+<p>This test can be used to verify that we do not crash when searching for text on a page when nothing on the page is currently selected.</p>
+<ol>
+ <li>Ensure that you have not clicked anywhere on this page and that nothing on this page is currently selected.</li>
+ <li>Search for the word &quot;crash&quot; in this page (In Safari for Mac, select Edit->Find->Find or press Cmd-F on your keyboard to open the Find banner to search for a word in the page).
+ <li>This test PASSED if we do not crash and the word &quot;crash&quot; is highlighted in at least the first sentence on this page.</li>
+</ol>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/css3-cursor-fallback-quirks.html b/Source/WebCore/manual-tests/css3-cursor-fallback-quirks.html
new file mode 100644
index 0000000..0efca75
--- /dev/null
+++ b/Source/WebCore/manual-tests/css3-cursor-fallback-quirks.html
@@ -0,0 +1,64 @@
+<html>
+<head><title>Quirks custom cursor tests</title></head>
+<body>
+<p><a href="http://bugs.webkit.org/show_bug.cgi?id=8991">Bug .991</a>: REGRESSION: missing or broken CSS custom cursors are displayed as a missing image icon.</p>
+<p>Move the cursor over the blue box - it should not turn into a missing image icon, and should turn into an I-beam over text.</p>
+
+<div style="width:100px;height:50px;background-color:lightblue; cursor:url(nonexistent.png), auto;"><span style="cursor:url(nonexistent.png), auto;">some text</span></div>
+<div style="width:100px;height:50px;background-color:lightblue; cursor:url(nonexistent.png);"></div>
+
+<hr>
+<p><a href="http://bugs.webkit.org/show_bug.cgi?id=6001">Bug 6001</a>: WebKit does not handle fallback custom cursors</p>
+<p><a href="http://bugs.webkit.org/show_bug.cgi?id=9013">Bug 9013</a>: Let correct CSS custom cursor declarations parse</p>
+<p>In each of the blue boxes below, the cursor should become a help cursor (question mark).</p>
+<table><tr>
+ <td><div style="width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;"></div></td> <!-- Valid, no fallback needed -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff);'></div></td> <!-- Invalid, but allowed by WinIE -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), help;'></div></td>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), url(custom-cursors.html), url(unknown-scheme:custom-cursors.html), url(resources/helpCursor.tiff), text;'></div></td>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), url("resources/helpCursor.tiff"), text;'></div></td>
+</tr>
+</table>
+<p>In each of the blue boxes below, the cursor should remain the default cursor, since all cursor definitions are invalid in quirks mode.</p>
+<table><tr>
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 1 text;'></div></td> <!-- CSS3 hot spot - invalid, should have comma after hotspot coords -->
+</tr>
+</table>
+<p>In each of the blue boxes below, the cursor should show the text cursor, since they contain invalid hotspots.</p>
+<table><tr>
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1, text;'></div></td> <!-- CSS3 hot spot - ignored in IE -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 2 3, text;'></div></td> <!-- CSS3 hot spot - ignored in IE -->
+</tr>
+</table>
+
+<p>In each of the blue boxes below, the cursor should show the help, since they contain valid hotspots.</p>
+<table><tr>
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 2;'></div></td> <!-- CSS3 hot spot - ignored in IE -->
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 2, text;'></div></td> <!-- CSS3 hot spot - ignored in IE -->
+</tr>
+</table>
+
+<p></p>
+<p><span style='background-color:gray; cursor:url(nonexistent.png), url("resources/helpCursor.tiff");'>Should show an I-beam cursor.</span></p> <!-- An invalid declaration, even by WinIE standards -->
+<p>The following testcases test inheritance of the cursor property. The first one should have the help cursor for both divs (normal inheritance). The second one should have help cursor for big div, text cursor for small div (inner div has cursor property, should not inherit). The next has invalid css syntax in the inner div, so it should inherit from the parent. The last two testcases have correct syntax and there is no inheritance in this case.</p>
+<table>
+<tr><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:text"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:foobar"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:url(resources/helpCursor.tiff) 1 2, text"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:url(nonexistant.png), text"></div></div>
+</td></tr>
+</table>
+<p>In each of the blue boxes below, the hotspot is out-of-range. In quirks mode we do not support hotspots at all, so we show the fallback cursor(text).</p>
+<table><tr>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) -1 -1, text;'></div></td> <!-- CSS3 hot spot out-of-range -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 100 100, text;'></div></td> <!-- CSS3 hot spot out-of-range -->
+</tr>
+</table>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/css3-cursor-fallback-strict.html b/Source/WebCore/manual-tests/css3-cursor-fallback-strict.html
new file mode 100644
index 0000000..06624c4
--- /dev/null
+++ b/Source/WebCore/manual-tests/css3-cursor-fallback-strict.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head><title>Strict custom cursor tests</title></head>
+<body>
+<p><a href="http://bugs.webkit.org/show_bug.cgi?id=8991">Bug .991</a>: REGRESSION: missing or broken CSS custom cursors are displayed as a missing image icon.</p>
+<p>Move the cursor over the blue box - it should not turn into a missing image icon, and should turn into an I-beam over text.</p>
+
+<div style="width:100px;height:50px;background-color:lightblue; cursor:url(nonexistent.png), auto;"><span style="cursor:url(nonexistent.png), auto;">some text</span></div>
+<div style="width:100px;height:50px;background-color:lightblue; cursor:url(nonexistent.png);"></div>
+
+<hr>
+<p><a href="http://bugs.webkit.org/show_bug.cgi?id=6001">Bug 6001</a>: WebKit does not handle fallback custom cursors</p>
+<p><a href="http://bugs.webkit.org/show_bug.cgi?id=9013">Bug 9013</a>: Let correct CSS custom cursor declarations parse</p>
+<p>In each of the blue boxes below, the cursor should become a help cursor (question mark).</p>
+<table><tr>
+ <td><div style="width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;"></div></td> <!-- Valid, no fallback needed -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), help;'></div></td>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), url(custom-cursors.html), url(unknown-scheme:custom-cursors.html), url(resources/helpCursor.tiff), text;'></div></td>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), url("resources/helpCursor.tiff"), text;'></div></td>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 1, text;'></div></td> <!-- CSS3 hot spot - valid, no fallback needed -->
+</tr>
+</table>
+<p>In each of the blue boxes below, the cursor should remain the default cursor, since all cursor definitions are invalid in strict mode.</p>
+<table><tr>
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 1 text;'></div></td> <!-- CSS3 hot spot - invalid, should have comma after hotspot coords -->
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1, text;'></div></td> <!-- CSS3 hot spot - invalid, should have two hotspot coords -->
+<td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 1 2 3, text;'></div></td> <!-- CSS3 hot spot - invalid, should have two hotspot coords -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff);'></div></td> <!-- Invalid -->
+</tr>
+</table>
+
+<p></p>
+<p><span style='background-color:gray; cursor:url(nonexistent.png), url("resources/helpCursor.tiff");'>Should show an I-beam cursor.</span></p> <!-- An invalid declaration, even by WinIE standards -->
+<p>The following testcases test inheritance of the cursor property. The first one should have the help cursor for both divs (normal inheritance). The second one should have help cursor for big div, text cursor for small div (inner div has cursor property, should not inherit). The next two have invalid css syntax in the inner div, so they should inherit from parent. The rightmost testcase has a nonexistant url, but the syntax is correct, and there is no inheritance in this case.</p>
+<table>
+<tr><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:text"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:foobar"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:url(resources/helpCursor.tiff) 1 2 3, text"></div></div>
+</td><td>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), text;'><div style="width:50px;height:50px;background-color:gray;cursor:url(nonexistant.png), text"></div></div>
+</td></tr>
+</table>
+<p>In each of the blue boxes below, the hotspot is out-of-range. For now this means a failure to show the custom cursor(lower level problem?).</p>
+<table><tr>
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) -1 -1, help;'></div></td> <!-- CSS3 hot spot out-of-range -->
+ <td><div style='width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff) 100 100, help;'></div></td> <!-- CSS3 hot spot out-of-range -->
+</tr>
+</table>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/cur-hotspot.html b/Source/WebCore/manual-tests/cur-hotspot.html
new file mode 100644
index 0000000..f1cfb54
--- /dev/null
+++ b/Source/WebCore/manual-tests/cur-hotspot.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<body>
+ <p>Test for .cur cursor intrinsic hot spot behavior. See <a href="https://bugs.webkit.org/show_bug.cgi?id=15779">bug 15779</a>.</p>
+ <div style="background:turquoise;cursor:url(resources/cur-hotspot.cur), auto; width:200px; height:200px; position:absolute; top:100px; left: 50px;">Mouse cursor should be upside down inside this box.</div>
+
+ <div style="background:turquoise;cursor:url(resources/cur-hotspot.cur) 200 200, auto; width:200px; height:200px; position:absolute; top:100px; left: 300px;">Mouse cursor should be upside down inside this box.</div>
+
+ <div style="background:turquoise;cursor:url(resources/cur-hotspot.cur) 0 0, auto; width:200px; height:200px; position:absolute; top:350px; left: 50px;">Mouse cursor should flip erratically, due to incorrect hot spot forced in CSS.</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/cursor-empty-url.html b/Source/WebCore/manual-tests/cursor-empty-url.html
new file mode 100644
index 0000000..a336100
--- /dev/null
+++ b/Source/WebCore/manual-tests/cursor-empty-url.html
@@ -0,0 +1,3 @@
+<div>Mousing over the grey block should not cause a crash.</div>
+<link rel="stylesheet" href="resources/cursor-empty-url.css"></link>
+<div id="target" style="width: 50px; height: 50px; margin: 10px; background: #ddd"></div>
diff --git a/Source/WebCore/manual-tests/cursor-max-size.html b/Source/WebCore/manual-tests/cursor-max-size.html
new file mode 100644
index 0000000..a112a70
--- /dev/null
+++ b/Source/WebCore/manual-tests/cursor-max-size.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
+<html>
+<head>
+<style>
+html, body
+{
+ height: 100%; width: 100%; overflow: hidden; position: relative;
+ cursor: url("resources/apple.jpg"), /* bigger than 128px x 128px */
+ url("resources/helpCursor.tiff") -10 10, /* negative x in hotspot */
+ url("resources/helpCursor.tiff") 10 -10, /* negative y in hotspot */
+ url("resources/helpCursor.tiff") -10 -10, /* negative x and y in hotspot */
+ url("resources/helpCursor.tiff") 20 10, /* x hotspot outside image (image is 16px x 16px) */
+ url("resources/helpCursor.tiff") 10 20, /* y hotspot outside image (image is 16px x 16px) */
+ url("resources/helpCursor.tiff") 20 20, /* both x and y hotspot outside image (image is 16px x 16px) */
+ auto;
+}
+</style>
+</head>
+<body>
+ <p>
+ If there is a custom cursor, the test has failed. This tests that images larger than 128x128 cannot be used
+ as cursors and that hotspots cannot be outside of the cursors bounds box.
+ </p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/cursor.html b/Source/WebCore/manual-tests/cursor.html
new file mode 100644
index 0000000..206cfe0
--- /dev/null
+++ b/Source/WebCore/manual-tests/cursor.html
@@ -0,0 +1,38 @@
+<div>Mouse over the grey blocks to change the cursor.</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: auto">auto</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: default">default</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: hand">hand</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: pointer">pointer</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: text">text</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: help">help</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: crosshair">crosshair</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: move">move</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: w-resize">w</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: e-resize">e</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: n-resize">n</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: s-resize">s</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: nw-resize">nw</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: ne-resize">ne</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: sw-resize">sw</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: se-resize">se</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: ns-resize">ns</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: ew-resize">ew</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: nwse-resize">nwse</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: nesw-resize">nesw</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: col-resize">col</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: row-resize">row</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: all-scroll">allscroll</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: vertical-text">verticaltext</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: context-menu">contextmenu</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: no-drop">nodrop</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: not-allowed">notallowed</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: progress">progress</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: wait">wait</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: alias">alias</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: cell">cell</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: copy">copy</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: none">none</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: -webkit-zoom-in">zoom in</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: -webkit-zoom-out">zoom out</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: -webkit-grab">grab</div>
+<div style="width: 20px; height: 20px; margin: 10px; background: #ddd; cursor: -webkit-grabbing">grabbing</div>
diff --git a/Source/WebCore/manual-tests/cursorfallback.xml b/Source/WebCore/manual-tests/cursorfallback.xml
new file mode 100644
index 0000000..a4fdf2f
--- /dev/null
+++ b/Source/WebCore/manual-tests/cursorfallback.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Strict mode + SVG cursor fallback test</title>
+</head>
+<body>
+<p>Test svg cursor fallback, should show help cursor:</p>
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="300">
+<defs>
+ <cursor id="help" xlink:href="resources/helpcursor.tiff" x="10" y="11"/>
+</defs>
+<g cursor="url(nonexistent.png), url(custom-cursors.html), url(unknown-scheme:custom-cursors.html), url(#nonexistant), url(#help), text">
+ <rect x="0" y="0" width="50" height="50" fill="blue" />
+</g>
+<text y="62">Test svg cursor fallback with hotspot, should show help cursor:</text>
+<g cursor="url(#help) 1 1, text">
+ <rect x="0" y="70" width="50" height="50" fill="red" />
+</g>
+<text y="132">Test svg cursor fallback with illegal hotspot, should show default cursor:</text>
+<g cursor="url(#help) 1, text">
+ <rect x="0" y="140" width="50" height="50" fill="red" />
+</g>
+<text y="202">Test svg cursor fallback with illegal hotspot, should show default cursor:</text>
+<g cursor="url(#help) 1 2 3, text">
+ <rect x="0" y="210" width="50" height="50" fill="red" />
+</g>
+</svg>
+<p>Testing cursor fallback in strict mode, should show help cursor:</p>
+<div style='width:100px;height:100px;background-color:lightblue; cursor:url(nonexistent.png), url("resources/helpcursor.tiff"), text;'></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/custom-cursors.html b/Source/WebCore/manual-tests/custom-cursors.html
new file mode 100644
index 0000000..0620c47
--- /dev/null
+++ b/Source/WebCore/manual-tests/custom-cursors.html
@@ -0,0 +1,10 @@
+<a href="http://bugs.webkit.org/show_bug.cgi?id=8991">Bug 8991</a>: REGRESSION: missing or broken CSS custom cursors are displayed as a missing image icon.<p>
+Move the cursor over the blue box - it should not turn into a missing image icon, and should turn into an I-beam over text.
+
+<div style="width:100px;height:50px;background-color:lightblue; cursor:url(nonexistent.png), auto;"><span style="cursor:url(nonexistent.png), auto;">some text</span></div>
+<div style="width:100px;height:50px;background-color:lightblue; cursor:url(nonexistent.png);"></div>
+
+<hr>
+<a href="http://bugs.webkit.org/show_bug.cgi?id=8991">Bug 6001</a>: WebKit does not handle fallback custom cursors<p>
+Move the cursor over the blue box - it should become a help cursor (question mark).
+<div style="width:100px;height:100px;background-color:lightblue; cursor:url(resources/helpCursor.tiff), help;"></div>
diff --git a/Source/WebCore/manual-tests/database-threading-stress-test-2.html b/Source/WebCore/manual-tests/database-threading-stress-test-2.html
new file mode 100644
index 0000000..b99af3c
--- /dev/null
+++ b/Source/WebCore/manual-tests/database-threading-stress-test-2.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html>
+<head>
+<script>
+var db;
+
+try {
+ if (window.openDatabase) {
+ db = openDatabase("StressTest2", "1.0", "Database stress test", 200000);
+ if (!db)
+ alert("Failed to open the database on disk. This is probably because the version was bad or there is not enough space left in this domain's quota");
+ } else
+ alert("Couldn't open the database. Please try with a WebKit nightly with this feature enabled");
+} catch(err) { }
+
+function loaded()
+{
+ db.transaction(function(tx) {
+ tx.executeSql("SELECT COUNT(*) FROM WebkitStickyNotes", [], function(result) {
+ loadNotes();
+ }, function(tx, error) {
+ tx.executeSql("CREATE TABLE WebKitStickyNotes (id REAL UNIQUE, note TEXT)", [], function(result) {
+ tx.executeSql("INSERT INTO WebKitStickyNotes (id, note) VALUES (?, ?)", [1, 'Text'], function(result) {
+ tx.executeSql("INSERT INTO WebKitStickyNotes (id, note) VALUES (?, ?)", [2, 'More Text'], function(result) {
+ loadNotes();
+ });
+ });
+ });
+ });
+ });
+}
+
+function loadNotes()
+{
+ db.transaction(function(tx) {
+ tx.executeSql("SELECT id, note FROM WebKitStickyNotes", [], function(tx, result) {
+ loadNotes();
+ }, function(tx, error) {
+ alert('Failed to retrieve notes from database - ' + error.message);
+ return;
+ });
+ });
+}
+
+addEventListener('load', loaded, false);
+</script>
+</head>
+<body>
+<p>This test needs to run without crashes and assertion failures for a while.<p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/database-threading-stress-test.html b/Source/WebCore/manual-tests/database-threading-stress-test.html
new file mode 100644
index 0000000..f22610c
--- /dev/null
+++ b/Source/WebCore/manual-tests/database-threading-stress-test.html
@@ -0,0 +1,84 @@
+<!doctype html>
+<html>
+<head>
+
+<style>
+pre { padding: 5px; border: 1px solid black; }
+</style>
+
+<script>
+var db;
+
+try {
+ if (window.openDatabase) {
+ db = openDatabase("StressTest1", "1.0", "Database Stress Test", 200000);
+ if (!db)
+ alert("Failed to open the database on disk. This is probably because the version was bad or there is not enough space left in this domain's quota");
+ } else
+ alert("Couldn't open the database.");
+} catch(err) { }
+
+var highestId = 0;
+var allData = new Array();
+
+function newData()
+{
+ var id = ++highestId;
+ allData.push(id);
+ db.transaction(function (tx)
+ {
+ tx.executeSql("INSERT INTO FillerData (id, filler) VALUES (?, randomblob(1024))", [id]);
+ });
+}
+
+function testOpen()
+{
+ for (var i = 0; i < 4; i++) {
+ newData();
+ }
+
+ setTimeout("testClose();", 0);
+}
+
+function testClose()
+{
+ db.transaction(function(tx)
+ {
+ for (var i = 0; i < allData.length; i++)
+ tx.executeSql("DELETE FROM FillerData WHERE id = ?", [allData[i]]);
+
+ allData = new Array();
+ });
+ setTimeout("testOpen();", 0);
+}
+
+function updateTransactionCount()
+{
+ document.getElementById("transactionCount").innerHTML = "Current Transaction Count: " + highestId;
+ setTimeout("updateTransactionCount();", 1000);
+}
+
+function loaded()
+{
+ db.transaction(function(tx) {
+ tx.executeSql("SELECT COUNT(*) FROM FillerData", [], function(result) { }, function(tx, error) {
+ tx.executeSql("CREATE TABLE FillerData (id REAL UNIQUE, filler)", [], function(result) {
+ });
+ });
+ });
+
+ setTimeout("testOpen();", 0);
+ setTimeout("updateTransactionCount();", 1000);
+}
+
+addEventListener('load', loaded, false);
+</script>
+</head>
+
+<body>
+This test stresses the database threading code by constantly opening transactions to the test database at a fast rate.<br>
+See radar 5729446 for more details.<br>
+<pre id="transactionCount">Current Transaction Count: 0</pre>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/debugger-caught-uncaught-exceptions.html b/Source/WebCore/manual-tests/debugger-caught-uncaught-exceptions.html
new file mode 100644
index 0000000..d812ca6
--- /dev/null
+++ b/Source/WebCore/manual-tests/debugger-caught-uncaught-exceptions.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <script>
+ function generateUncaughtException() {
+ var b = 5;
+ // Pause on uncaught exceptions and pause on all exceptions should pause here,
+ // because even though the exception is being caught by our caller in this case,
+ // it is not being caught in the same function.
+ b.foo.bar;
+ }
+
+ function generateCaughtAndUncaughtExceptions() {
+ var a = 5;
+ try {
+ // This will pause on Pause on all exceptions, but not Pause on uncaught exceptions.
+ a.foo.bar;
+ } catch (e) { }
+
+ try {
+ generateUncaughtException();
+ } catch (e) { }
+
+ // This will pause on both Pause on all exceptions and Pause on uncaught exceptions.
+ a.foo.bar;
+ }
+ </script>
+ </head>
+ <body>
+ <p>This page tests <a href="https://bugs.webkit.org/show_bug.cgi?id=28622">Caught exceptions still pause the debugger</a>
+ <p>To test this bug, open the inspector, open the scripts panel, and click the button to pause on all exceptions, press
+ the button, and see which exceptions are paused on. Then press the pause on exceptions button again to only
+ pause on uncaught exceptions, and see which exceptions are paused on.</p>
+ <input type="button" value="Generate caught and uncaught exceptions" onclick="generateCaughtAndUncaughtExceptions();" />
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/deleteToEndOfLine.html b/Source/WebCore/manual-tests/deleteToEndOfLine.html
new file mode 100644
index 0000000..fdbc24d
--- /dev/null
+++ b/Source/WebCore/manual-tests/deleteToEndOfLine.html
@@ -0,0 +1,20 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 1px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+</style>
+
+<title>deleteToEndOfLine: test</title>
+</head>
+<body>
+<p>First add the following line to your ~/Library/KeyBindings/DefaultKeyBinding.dict then relaunch Safari: "^k" = "deleteToEndOfLine:";</p>
+<p>Place the cursor between the two 'o's in 'Foo' and hit ^k twice. The first should result in 'Fo\nbar' and the second should result in 'Fobar'.</p>
+<div class="editing" contentEditable><div>Foo</div><div>bar</div></div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/dictionary-scrolled-iframe.html b/Source/WebCore/manual-tests/dictionary-scrolled-iframe.html
new file mode 100644
index 0000000..d7cf23e
--- /dev/null
+++ b/Source/WebCore/manual-tests/dictionary-scrolled-iframe.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8295">Bugzilla bug 8295</a> Dictionary pop-up panel targets the wrong word in a scrolled IFRAME</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b><br>
+1. Click the inner frame&rsquo;s down scroll arrow once.<br>
+2. Move the mouse pointer
+over &ldquo;target&rdquo;.<br>
+3. Press Command-Control-D to invoke the Dictionary pop-up panel.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The Dictionary pop-up panel will appear over &ldquo;target&rdquo;, giving its definition.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The Dictionary pop-up panel will appear over &ldquo;failure&rdquo;, with the definition of failure.
+</p>
+
+<iframe style="background: #ffd;" src="data:text/html,Curabitur pretium, quam quis semper malesuada, est libero feugiat libero, vel fringilla orci nibh sed neque. Quisque eu nulla non nisi molestie accumsan. Etiam tellus urna, <span style=%22color: green;%22>target</span> ac, laoreet non, suscipit sed, sapien. Phasellus vehicula, sem at posuere tel failure, augue nibh molestie nisl, nec ullamcorper lacus ante vulputate pede. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris viverra augue vitae purus. Morbi sed sem. Donec dui nisi, ultrices non, pretium quis, hendrerit non, est. Donec tellus. Donec eget dui id eros pharetra rutrum. Suspendisse sodales lectus sit amet nulla. Morbi tortor arcu, convallis blandit, elementum eu, aliquet a, tellus.
+"></iframe>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/directory-drop-on-view.html b/Source/WebCore/manual-tests/directory-drop-on-view.html
new file mode 100644
index 0000000..b82cc45
--- /dev/null
+++ b/Source/WebCore/manual-tests/directory-drop-on-view.html
@@ -0,0 +1,20 @@
+<html>
+ <head>
+ <title>
+ Manual drop test
+ </title>
+ </head>
+ <body>
+ This tests that unknown file types are handled correctly when dropped in the window
+ <ul>
+ <li>
+ Drag a file that WebKit doesn't recognise -- eg. a disk image, tarball, etc.<br />
+ WebKit should cause a Finder window to open, with the dropped file selected.
+ </li>
+ <li>
+ Attempt to drop a directory onto the WebView.<br />
+ The drag should not be accepted, and the drag cursor should be the standard disallowed drag cursor.
+ </li>
+ </ul>
+ </body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/disable-javascript-reload.html b/Source/WebCore/manual-tests/disable-javascript-reload.html
new file mode 100644
index 0000000..c7e2a91
--- /dev/null
+++ b/Source/WebCore/manual-tests/disable-javascript-reload.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+<script>
+function test()
+{
+ document.getElementById("manualDirections").setAttribute("style","display:block;");
+ document.getElementById("console").innerHTML = "FAIL - disabled javascript hasn't been applied to refreshed webpage";
+}
+
+</script>
+</head>
+<body onload="test();">
+<div id="manualDirections" style="display:none;">
+To run this test manually, disable javascript and reload the page.
+<br><br>
+</div>
+<div id="console">
+PASS
+</div>
+</body
+</html>
diff --git a/Source/WebCore/manual-tests/disabled-option-elements.html b/Source/WebCore/manual-tests/disabled-option-elements.html
new file mode 100644
index 0000000..4ff291f
--- /dev/null
+++ b/Source/WebCore/manual-tests/disabled-option-elements.html
@@ -0,0 +1,26 @@
+<body>
+<p>This tests that disabled option elements shouldn't be selectable and that no elements in disabled optgroups are selectable.</p>
+<form name="form">
+<select multiple="multiple">
+<option>my value 1</option>
+<option value="2" disabled>you should not be able to select this</option>
+<option>my value 3</option>
+<optgroup label="disabled option group" disabled>
+ <option>this should be disabled</option>
+ <option>as well as this</option>
+<optgroup>
+</select>
+
+<select>
+<option>my value 1</option>
+<option value="2" disabled>you should not be able to select this</option>
+<option>my value 3</option>
+<optgroup label="disabled option group" disabled>
+ <option>this should be disabled</option>
+ <option>as well as this</option>
+<optgroup>
+</select>
+</form>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/display-none-option.html b/Source/WebCore/manual-tests/display-none-option.html
new file mode 100644
index 0000000..30071f3
--- /dev/null
+++ b/Source/WebCore/manual-tests/display-none-option.html
@@ -0,0 +1,11 @@
+<p>
+When you click the following &lt;select&gt;, you should see only two options.
+Mac Safari doesn't pass this test yet.
+See <a href="https://bugs.webkit.org/show_bug.cgi?id=8351">Bug 8351</a> for detail.
+
+<p>
+<select>
+ <option>First choice</option>
+ <option style="display: none">You must NOT see this</option>
+ <option>Second choice</option>
+</select>
diff --git a/Source/WebCore/manual-tests/divx-plugin-fails-to-draw.html b/Source/WebCore/manual-tests/divx-plugin-fails-to-draw.html
new file mode 100644
index 0000000..57244b7
--- /dev/null
+++ b/Source/WebCore/manual-tests/divx-plugin-fails-to-draw.html
@@ -0,0 +1,12 @@
+<html>
+<body>
+This is a manual test for
+<a href="https://bugs.webkit.org/show_bug.cgi?id=39457">Bug #39457</a>. It
+requires that you have the DivX plug-in installed.<br><br>
+
+The plug-in below should not appear as a white box but as a video player with
+controls.<br><br>
+
+<embed type="video/divx" width=320 height=240>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/dom-manipulation-on-resize.html b/Source/WebCore/manual-tests/dom-manipulation-on-resize.html
new file mode 100644
index 0000000..81eaa5a
--- /dev/null
+++ b/Source/WebCore/manual-tests/dom-manipulation-on-resize.html
@@ -0,0 +1,28 @@
+<html>
+<head><style>
+body { overflow: hidden; }
+</style>
+<script>
+window.onresize = function() {
+ var tbody = document.createElement("TBODY")
+
+ var m = (document.getElementsByTagName("TABLE"))[0]
+ if(m.hasChildNodes()) m.removeChild(m.lastChild)
+
+ var tr = tbody.appendChild(document.createElement("TR"))
+
+ m.appendChild(tbody)
+}
+</script>
+</head>
+<body onload="setTimeout('window.resizeTo(500,500)', 0)">
+<table></table>
+<p>
+<b>BUG ID: <a href="http://bugs.webkit.org/show_bug.cgi?id=8739">Bugzilla bug 8739</a></b>
+Crash in RenderTableSection::paint due to manipulating DOM on resize
+</p>
+<p id="success" style="background-color:palegreen; padding:3px;">
+><b>TEST PASS:</b> You got here without crashing, which means test PASS. It is normal for the
+window to have resized.
+</p>
+</body></html>
diff --git a/Source/WebCore/manual-tests/dom/document-write-synchronous-after-page-load.html b/Source/WebCore/manual-tests/dom/document-write-synchronous-after-page-load.html
new file mode 100644
index 0000000..f62fd68
--- /dev/null
+++ b/Source/WebCore/manual-tests/dom/document-write-synchronous-after-page-load.html
@@ -0,0 +1,23 @@
+<p>This test ensures that document.write after page load is synchronous.</p>
+<p>You will get a PASS or FAIL alert message after a few seconds.</p>
+<script>
+window.onload = function() {
+
+ // Build a very long string to write.
+ var LIMIT = 17;
+ var str = '<p style="display:none">x</p>';
+ for (var i=0; i<LIMIT; ++i)
+ str += str;
+
+ // Write the string and check the DOM immediately and after a small delay.
+ var doc = document.implementation.createHTMLDocument();
+ doc.write(str);
+ var immediateElementCount = doc.getElementsByTagName('*').length;
+ setTimeout(function() {
+ var delayedElementCount = doc.getElementsByTagName('*').length;
+ var passOrFail = (immediateElementCount === delayedElementCount ? "PASS" : "FAIL");
+ alert(passOrFail);
+ }, 100);
+
+}
+</script>
diff --git a/Source/WebCore/manual-tests/dom/form-control-for-label.html b/Source/WebCore/manual-tests/dom/form-control-for-label.html
new file mode 100644
index 0000000..aeb8338
--- /dev/null
+++ b/Source/WebCore/manual-tests/dom/form-control-for-label.html
@@ -0,0 +1,12 @@
+<html>
+<style>
+progress {border: 3px solid blue;}
+progress:hover {border: 3px solid red;}
+</style>
+<body>
+<h3>Test hover</h3>
+<label>The border color of the progress bar should change from blue to red when you hover on this label text <progress></progress></label><br>
+<label>The border of this progress bar would change color when it is inside fieldset and legend elements <fieldset><legend><progress></progress></legend></fieldset></label><br>
+</body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/dom/progressbar.html b/Source/WebCore/manual-tests/dom/progressbar.html
new file mode 100644
index 0000000..95e64f2
--- /dev/null
+++ b/Source/WebCore/manual-tests/dom/progressbar.html
@@ -0,0 +1,8 @@
+<html><body>
+<h1>Indeterminate progress bar</h1>
+This is an example of <progress value=7 max=10></progress> a determinate progress bar.<br>
+This is an example of <progress></progress> an indeterminate progress bar.<br>
+This is an example of <progress dir=rtl value=7 max=10></progress> a right-to-left determinate progress bar.<br>
+This is an example of <progress dir=rtl></progress> a right-to-left indeterminate progress bar.<br>
+
+</body></html>
diff --git a/Source/WebCore/manual-tests/drag-caret.html b/Source/WebCore/manual-tests/drag-caret.html
new file mode 100644
index 0000000..4334ab2
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-caret.html
@@ -0,0 +1,3 @@
+<p>This tests dragging over an input element, to make sure no drag-cursor is left behind.</p>
+<p><input></p>
+<p>Drag some text over the input element and make sure the Drag Caret disappears when the drag exits the input element. Per https://bugs.webkit.org/show_bug.cgi?id=26787</p>
diff --git a/Source/WebCore/manual-tests/drag-cursor-notallowed.html b/Source/WebCore/manual-tests/drag-cursor-notallowed.html
new file mode 100644
index 0000000..e6cb6d4
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-cursor-notallowed.html
@@ -0,0 +1,111 @@
+<html>
+<head>
+<style>
+#dropTarget, #dragMe { text-align: center; display: table-cell; vertical-align: middle }
+#dropTarget {width: 256px; height: 256px; border: 1px dashed}
+#dragMe {-webkit-user-drag: element; -webkit-user-select: none; background: #ff0000; width: 64px; height: 64px; color: white}
+.pass { font-weight: bold; color: green; }
+.fail { font-weight: bold; color: red; }
+</style>
+<script>
+ var dragMe;
+ var dropTarget;
+ var messageElm;
+ var defaultMessageElm;
+ var event;
+
+ var ALLOWED_EFFECTS = 'move';
+ var DROP_EFFECT = 'copy';
+
+ window.onload = function()
+ {
+ dragMe = document.getElementById("dragMe");
+ dropTarget = document.getElementById("dropTarget");
+ messageElm = document.getElementById("message");
+ defaultMessageElm = document.getElementById("default-message");
+
+ if (!dragMe || !dropTarget || !messageElm || !defaultMessageElm)
+ return;
+
+ dragMe.ondragstart = dragStart;
+ dragMe.ondragend = dragEnd;
+
+ dropTarget.ondragenter = dragEntered;
+ dropTarget.ondragover = dragOver;
+ dropTarget.ondrop = drop;
+ }
+
+ function dragStart(e)
+ {
+ event = e;
+ e.dataTransfer.effectAllowed = ALLOWED_EFFECTS;
+ e.dataTransfer.setData('Text', e.target.textContent);
+ }
+
+ function dragEnd(e)
+ {
+ messageElm.style.visibility = "hidden";
+ defaultMessageElm.style.visibility = "visible";
+ return;
+ }
+
+ function dragEntered(e)
+ {
+ messageElm.style.visibility = "visible";
+ defaultMessageElm.style.visibility = "hidden";
+ dragEnteredAndUpdated(e);
+ }
+
+ function dragOver(e)
+ {
+ dragEnteredAndUpdated(e);
+ }
+
+ function dragEnteredAndUpdated(e)
+ {
+ event = e;
+ e.dataTransfer.dropEffect = DROP_EFFECT;
+ cancelDrag(e);
+ }
+
+ function drop(e)
+ {
+ cancelDrag(e);
+ }
+
+ function cancelDrag(e)
+ {
+ if (e.preventDefault)
+ e.preventDefault();
+ else {
+ // Assume this script is executing within Internet Explorer
+ e.returnValue = false;
+ }
+ }
+</script>
+</head>
+<body>
+ <p id="description">This test can be used to verify that the not-allowed cursor is shown during an invalid drag-and-drop operation.
+ In particular, if the effectAllowed is <code><script>document.write(ALLOWED_EFFECTS)</script></code> and the dropEffect of the
+ drop target is <code><script>document.write(DROP_EFFECT)</script></code> then the drop is not allowed and the cursor should
+ change to the not-allowed cursor. Note, this test only pertains to the Windows build since the Mac build does not show a drop cursor
+ for a not-allowed drop operation (see bug #25925).
+ <br/><br/>
+ Drag the red square over the drop target (demarcated by the dashed boundary). While hovering over the drop target, if the cursor
+ is <img alt="not-allowed" src="data:image/gif;base64,R0lGODlhEgASAIAAAAAAAP///yH5BAAAAAAALAAAAAASABIAAAIvjA+px6ifmnmM1ijDmlbuuHmAhoWXaTqYKq7sObZw3HwgXd8cPr8yDGxBXEJioAAAOw=="> then the test <span class="pass">PASSED</span>. Otherwise, the test <span class="fail">FAILED</span>.</p>
+ <div id="test-container">
+ <label for="effectAllowed">effectAllowed:</label> <code><script>document.write(ALLOWED_EFFECTS)</script></code>
+ <br/><br/>
+ <div id="dropTarget">
+ <div id="default-message">Drag the red square over me.<br/><br/>
+ <label for="dropEffect">Expects dropEffect:</label> <code><script>document.write(DROP_EFFECT)</script></code>
+ </div>
+ <div id="message" style="visibility:hidden">The cursor should be <img alt="not-allowed" src="data:image/gif;base64,R0lGODlhEgASAIAAAAAAAP///yH5BAAAAAAALAAAAAASABIAAAIvjA+px6ifmnmM1ijDmlbuuHmAhoWXaTqYKq7sObZw3HwgXd8cPr8yDGxBXEJioAAAOw==">. Is it?</div>
+ </div>
+ <hr/>
+ <p>Items that can be dragged to the drop target:</p>
+ <div id="dragMe" draggable="true">Square</div>
+ <hr/>
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-enter-alert.html b/Source/WebCore/manual-tests/drag-enter-alert.html
new file mode 100644
index 0000000..e563923
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-enter-alert.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+<script type="text/javascript">
+function test() {
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ var element = document.documentElement;
+ var showAlert = function() {
+ alert('Click OK button.');
+ };
+
+ if (element.addEventListener)
+ element.addEventListener('dragenter', showAlert, false);
+ else
+ element.attachEvent('ondragenter', showAlert);
+}
+</script>
+
+</head>
+<body onload="test()">
+ <p>Do the following and see if Webkit crashes.</p>
+ <ul>
+ <li>Drag the image</li>
+ <li>Click the OK button on the alert box</li>
+ </ul>
+ <img id="dragimage" src="resources/drag-image.png" width="32px" height="32px">
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-escape.html b/Source/WebCore/manual-tests/drag-escape.html
new file mode 100644
index 0000000..ebdf4e7
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-escape.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+var expectedEvents = ["dragstart", "dragend"];
+var i = 0;
+
+function recordEvent(e) {
+ log(e.type);
+ if (e.type !== expectedEvents[i]) {
+ log("FAIL - expected " + expectedEvents[i] + " but got " + e.type);
+ } else if (i == expectedEvents.length - 1) {
+ log("SUCCESS");
+ } else {
+ i++;
+ }
+}
+
+
+function log(msg) {
+ var tn = document.createTextNode(msg + "\n");
+ document.getElementById("log").appendChild(tn);
+}
+
+function dragStart(e) {
+ recordEvent(e);
+}
+
+document.ondragend = function(e) {
+ recordEvent(e);
+};
+
+document.ondrop = function(e) {
+ log("FAIL - we should not get a " + e.type);
+};
+
+document.ondragenter = document.ondragover = function(e) {
+ e.preventDefault();
+};
+
+
+</script>
+</head>
+<body>
+ <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=26699">https://bugs.webkit.org/show_bug.cgi?id=26699</a></p>
+
+ <p>Instructions: </p>
+
+ <p>Drag the "Drag Me!" link below</p>
+ <p>Press escape</p>
+
+ <a id="test-link" href="http://webkit.org" ondragstart="dragStart(event)">Drag Me!</a>
+
+ <pre id="log"></pre>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-image-table-part-decorations.html b/Source/WebCore/manual-tests/drag-image-table-part-decorations.html
new file mode 100644
index 0000000..28aa175
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-image-table-part-decorations.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<p>
+ When dragging each of the black squares below, the drag image should include
+ only the hollow black square, and no blue background.
+</p>
+<div style="background-color: blue; display: table; height: 100px; width: 100px;"></div>
+<div style="width: 94px; height: 94px; border: solid; -webkit-user-drag: element; margin-top: -50px; margin-bottom: 10px;"></div>
+
+<div style="background-color: blue; display: table-row; height: 100px;"><div style="width: 100px"></div></div>
+<div style="width: 94px; height: 94px; border: solid; -webkit-user-drag: element; margin-top: -50px; margin-bottom: 10px;"></div>
+
+<div style="background-color: blue; display: table-cell; height: 100px; width: 100px;"></div>
+<div style="width: 94px; height: 94px; border: solid; -webkit-user-drag: element; margin-top: -50px; margin-bottom: 10px;"></div>
+
+<fieldset style="background-color: blue; border: none; height: 100px; width: 100px;"><legend></legend></fieldset>
+<div style="width: 94px; height: 94px; border: solid; -webkit-user-drag: element; margin-top: -50px; "></div>
+
+<table style="border-collapse: collapse;"><tr><td style="border-bottom: 100px solid blue; width: 100px;"></td></tr></table>
+<div style="width: 94px; height: 94px; border: solid; -webkit-user-drag: element; margin-top: -50px; "></div>
diff --git a/Source/WebCore/manual-tests/drag-image-to-address-bar.html b/Source/WebCore/manual-tests/drag-image-to-address-bar.html
new file mode 100644
index 0000000..8a8c088
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-image-to-address-bar.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=9952">Bugzilla bug 9952</a> REGRESSION: Repro crash when dragging an image from the window to the address bar</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Drag the image from below to the address bar, then click on the image.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+No crash.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Safari will crash when you drop the image onto the address bar or when you click it.
+</p>
+
+<img src="resources/webkit-background.png"><br><iframe></iframe>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-image-to-desktop.html b/Source/WebCore/manual-tests/drag-image-to-desktop.html
new file mode 100644
index 0000000..abcd395
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-image-to-desktop.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<body>
+<span style="">
+<p>This page tests WebKit's behavior when dragging an image with a file extension that doesn't match its MIME type or actual file type
+<p>Prerequisites:<br>
+<ul><li>run the LayoutTest's webserver (WebKitTools/run-webkit-httpd)</ul>
+<p>Steps to test:<br>
+<ol><li>drag and drop the image below to the desktop</ol>
+<img src="http://127.0.0.1:8000/misc/resources/generatedimage.bat" width="88" height="31">
+<p>Expected results:<br>
+The file should have .gif extension <em>(not .bat or .jpg/.jpeg)</em>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-image.html b/Source/WebCore/manual-tests/drag-image.html
new file mode 100644
index 0000000..580d5e5
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-image.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<script>
+function debug(str) {
+ var c = document.getElementById('console')
+ c.appendChild(document.createTextNode(str + '\n'));
+}
+
+var i = new Image()
+i.src ="resources/webkit-background.png";
+
+function dragStartHandler() {
+ event.dataTransfer.setDragImage(i, 10, 10);
+}
+
+</script>
+</head>
+<body onload="runTests();">
+<p>This tests that setting the drag image works. If this is successful, the drag icon when dragging the text below around should look like the image below.</p>
+<img src="resources/webkit-background.png">
+<div ondragstart="dragStartHandler()" style="-khtml-user-select:none; -khtml-user-drag:element;">Try dragging me around!</div>
+<pre id="console">
+</pre>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-move-in-search-field.html b/Source/WebCore/manual-tests/drag-move-in-search-field.html
new file mode 100644
index 0000000..4bb720a
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-move-in-search-field.html
@@ -0,0 +1,11 @@
+<p>Double-click the word "dolor" to select it, then drag the selection to
+between "lorem" and "ipsum". There should be no assertion failure in a
+debug build.</p>
+
+<input id="foo" type="search" value="lorem ipsum dolor">
+<script>
+function test()
+{
+
+}
+</script>
diff --git a/Source/WebCore/manual-tests/drag-out-of-background-window.html b/Source/WebCore/manual-tests/drag-out-of-background-window.html
new file mode 100644
index 0000000..05fa087
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-out-of-background-window.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=15077">Bugzilla bug 15077</a> REGRESSION: Cannot drag selected text out of a background window</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+1. Select the first line of text in this window.<br>
+2. Switch to another application.<br>
+3. With this window in the background, click and hold inside the selected text,
+then drag the text out of the window.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+This window will not come to the foreground when you click, and you will be able to
+drag the selected text out.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+As soon as you click in the selected text, this window will come to the foreground
+and you may not be able to drag the selected text.
+</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag-with-div-or-image-as-data-image.html b/Source/WebCore/manual-tests/drag-with-div-or-image-as-data-image.html
new file mode 100644
index 0000000..1d5a791
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag-with-div-or-image-as-data-image.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>Test for WebKit bug 24735: Poor setDragImage support on Windows</title>
+ <style type="text/css">
+
+ .draggable {
+ -webkit-user-drag: element;
+ -webkit-user-select: none;
+ }
+
+ #linkToUseAsImage {
+ background-color: silver;
+ }
+
+ #divToUseAsImage {
+ background-color: pink;
+ }
+
+ </style>
+
+ <script type="text/javascript">
+ function dragDivAndSeeImageDragged()
+ {
+ event.dataTransfer.setDragImage(document.getElementById("imgToUseAsImage"), event.pageX, event.pageY);
+ }
+
+ function dragImageAndSeeDivDragged()
+ {
+ event.dataTransfer.setDragImage(document.getElementById("divToUseAsImage"), event.pageX, event.pageY);
+ }
+ </script>
+ </head>
+ <body >
+ <h3>Test for <a href='https://bugs.webkit.org/show_bug.cgi?id=24735'>WebKit bug 24735</a>: Poor setDragImage support on Windows</h3>
+
+ <p>Instructions: </p>
+ <p>When you drag the first div, the image under the cursor should be of the second image. </p>
+ <p>When you drag the first image, the image under the cursor should be of the second div. </p>
+
+ <br />
+ <br />
+
+ <div class="draggable" ondragstart="dragDivAndSeeImageDragged()"> Drag me, I am a div! (first div)</div>
+ <br />
+ <br />
+ <img src="resources/webkit-background.png" class="draggable" ondragstart="dragImageAndSeeDivDragged()" />
+ <br />
+ <br />
+ <img src="resources/drag-image.png" id="imgToUseAsImage" />
+ <br />
+ <br />
+ <div id="divToUseAsImage"> When a drag is started on the image, this is the div that is used as the drag image! (second div)</div>
+
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/drag_select_highlighting.html b/Source/WebCore/manual-tests/drag_select_highlighting.html
new file mode 100644
index 0000000..d6f4057
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag_select_highlighting.html
@@ -0,0 +1,14 @@
+<html>
+<head>
+<title>Highlight leaves trails</title>
+</head>
+<body>
+<p>Drag across the following line from right to left and all the way back.</p>
+<p style="font-family:'Lucida Grande'; font-size:12px;">
+Curabitur pretium, quam quis semper malesuada, est libero feugiat libero, vel fringilla orci nibh sed neque.
+</p>
+<p>Drag across the following line from left to right and all the way back.</p>
+<p style="font-family:'Lucida Grande'; font-size:12px; text-align:left; direction:rtl; unicode-bidi:bidi-override;">
+Curabitur pretium, quam quis semper malesuada, est libero feugiat libero, vel fringilla orci nibh sed neque.
+</p>
+</body> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/drag_with_opacity.html b/Source/WebCore/manual-tests/drag_with_opacity.html
new file mode 100644
index 0000000..0e4b69b
--- /dev/null
+++ b/Source/WebCore/manual-tests/drag_with_opacity.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Untitled Document</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<style type="text/css">
+<!--
+.draggable {
+ -khtml-user-drag: element;
+ -apple-dashboard-region:dashboard-region(control rectangle);
+}
+
+.draggable:hover {
+ background: #cccccc;
+}
+
+.draggable:-khtml-drag {
+ opacity: 0.50;
+}
+-->
+</style>
+</head>
+<body>
+ <p>This is the test case for crashing bug &lt;rdar://problem/4234658&gt;<p>
+ <table width="100%" border="1" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>
+ <div class="draggable">Click to right of this text and drag</div>
+ </td>
+ </tr>
+ </table>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drop-in-empty-doc.html b/Source/WebCore/manual-tests/drop-in-empty-doc.html
new file mode 100644
index 0000000..eae14f8
--- /dev/null
+++ b/Source/WebCore/manual-tests/drop-in-empty-doc.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p>Click <a href="javascript:window.open('resources/drop-in-empty-doc.xhtml')">here</a> to open a new window. Drag and drop a file over the new window. It should not crash.
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/drop-text-acquires-style.html b/Source/WebCore/manual-tests/drop-text-acquires-style.html
new file mode 100644
index 0000000..602c760
--- /dev/null
+++ b/Source/WebCore/manual-tests/drop-text-acquires-style.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<title>Dragging plain text into a styled region</title>
+</head>
+<body>
+<p>This test ensures the plain text dropped into a styled text region will acquire the appropriate style</p>
+<p>To run this test, drag the text in the input element below into the bold text region. The dropped text should be bold.</p>
+<input id="dragme" value="Drag this text" ><br />
+<b contenteditable="true" id="target">Drag the text from the above input element into this bold text</b>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/empty-link-target.html b/Source/WebCore/manual-tests/empty-link-target.html
new file mode 100644
index 0000000..06ccd0c
--- /dev/null
+++ b/Source/WebCore/manual-tests/empty-link-target.html
@@ -0,0 +1,28 @@
+<html>
+<head><script>
+function print(message) {
+ var paragraph = document.createElement("p");
+ paragraph.appendChild(document.createTextNode(message));
+ document.getElementById("console").appendChild(paragraph);
+}
+
+function test()
+{
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+ var e = document.createEvent("MouseEvents");
+ e.initEvent("click", true, false);
+ document.getElementById('a').dispatchEvent(e);
+ print("PASS");
+}
+</script></head>
+
+<body onload="test()">
+<p>Bug: <a href="http://bugs.webkit.org/show_bug.cgi?id=6382">REGRESSION: Repro crash when clicking link with target="_blank"</a></p>
+<p>If the test passes, you will see a PASS message below. (It's normal for a new window to open.)</p>
+<hr>
+<a id="a" href="resources/popup200x200.html" target="_blank"></a>
+<div id='console'/>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/empty-script-crash.html b/Source/WebCore/manual-tests/empty-script-crash.html
new file mode 100644
index 0000000..5605ff9
--- /dev/null
+++ b/Source/WebCore/manual-tests/empty-script-crash.html
@@ -0,0 +1,6 @@
+This document used to crash when loaded as the very first document in
+a Safari instance to use JavaScript. It can't be a meaningful layout
+test since it would get loaded after many other documents that ran
+scripts.
+<script>
+</script>
diff --git a/Source/WebCore/manual-tests/empty-title-popup.html b/Source/WebCore/manual-tests/empty-title-popup.html
new file mode 100644
index 0000000..cb6ea8c
--- /dev/null
+++ b/Source/WebCore/manual-tests/empty-title-popup.html
@@ -0,0 +1,3 @@
+<p>This demonstrates <a href="http://bugs.webkit.org/show_bug.cgi?id=9833">bug 9833</a>.</p>
+<p>Select the second item on the pop up.
+<select><option></option><option>Pick me!</option></select></p>
diff --git a/Source/WebCore/manual-tests/find-count-matches-after-text-control.html b/Source/WebCore/manual-tests/find-count-matches-after-text-control.html
new file mode 100644
index 0000000..738be8c
--- /dev/null
+++ b/Source/WebCore/manual-tests/find-count-matches-after-text-control.html
@@ -0,0 +1,14 @@
+<p>
+ Test that text matches are counted correctly when a match occurs inside a text field.
+</p>
+<p>
+ To test:
+ <ol>
+ <li>Choose Edit > Find > Find</li>
+ <li>In the Find field, type &ldquo;lemon&rdquo;
+ </ol>
+</p>
+<p>
+ The test passes if the Find banner says &ldquo;3 matches&rdquo;.
+</p>
+<input value="a lemon in a text field"> and another lemon.
diff --git a/Source/WebCore/manual-tests/first-line-style-crash.html b/Source/WebCore/manual-tests/first-line-style-crash.html
new file mode 100644
index 0000000..4758b1e
--- /dev/null
+++ b/Source/WebCore/manual-tests/first-line-style-crash.html
@@ -0,0 +1,23 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="resources/aFileThatProbablyDoesNotExist.css">
+<style type="text/css">
+ div:first-line { color: green; }
+</style>
+</head>
+<body>
+ <p>
+ Regression test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=8760">http://bugs.webkit.org/show_bug.cgi?id=8760</a>
+ crash (hang?) on subtlegradient.com article page</i>.
+ </p>
+ <p>
+ No crash means test PASS.
+ </p>
+ <hr>
+ <div>
+ <span id="t">Lorem ipsum</span>
+ </div>
+ <script type="text/javascript">
+ document.getElementById("t").offsetTop;
+ </script>
+</body>
diff --git a/Source/WebCore/manual-tests/flash-unload-tab.html b/Source/WebCore/manual-tests/flash-unload-tab.html
new file mode 100644
index 0000000..0ba1cf1
--- /dev/null
+++ b/Source/WebCore/manual-tests/flash-unload-tab.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body onload="start()" onunload="test()">
+ <p>
+ <p><b>Bug 14207 : </b>
+ <a href="http://bugs.webkit.org/show_bug.cgi?id=14207">REGRESSION: Crash after closing a tab with Google Maps Street View</a></p>
+
+ <p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+ Open a new tab then close this tab.
+ </p>
+
+ <p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+ Expected : The tab is closed.
+ </p>
+
+ <p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+ If the test FAILS : The webkit crashes.
+ </p>
+ </p>
+ <embed id="target" src="resources/spinbox.swf">
+ <script>
+ var embed;
+
+ function start()
+ {
+ embed = document.getElementById("target");
+ embed.bar;
+ }
+
+ function test()
+ {
+ embed.foo;
+ }
+ </script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/flipped-text-rendering.html b/Source/WebCore/manual-tests/flipped-text-rendering.html
new file mode 100644
index 0000000..197e4b3
--- /dev/null
+++ b/Source/WebCore/manual-tests/flipped-text-rendering.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
+<html>
+<head>
+<title>Flipped text in link drag image</title>
+</head>
+<body>
+<p>Try dragging each of the following links. In each case, the link text should appear correctly (not flipped) in the
+drag image, above the URL.</p>
+<p>There are three separate code paths, due to the canUseFastRenderer and shouldUseATSU functions.</p>
+<p>WebKit renderer, using CG: <a href="/">Drag me to your leader</a></p>
+<p>WebKit renderer, using ATSUI because of the &#x905;: <a href="/">Drag me &#x0905; to your leader</a></p>
+<p>Cocoa, because of the &#x05d0;: <a href="/">Drag me &#x05d0; to your leader</a></p>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/focus-change-between-key-events.html b/Source/WebCore/manual-tests/focus-change-between-key-events.html
new file mode 100644
index 0000000..8ceb575
--- /dev/null
+++ b/Source/WebCore/manual-tests/focus-change-between-key-events.html
@@ -0,0 +1,24 @@
+<body onload="document.getElementById('dummy').focus();">
+<iframe src="data:text/html,<body onload='document.getElementsByTagName(&quot;input&quot;)[0].focus()'><input></body>" id=victim name=victim>
+</iframe>
+<script>
+
+var cur_pos = 0;
+
+function maybe_redirect(e) {
+ var evt = window.event ? event : e;
+ var cc = evt.charCode ? evt.charCode : evt.keyCode;
+
+ document.getElementById('victim').focus();
+ frames['victim'].focus();
+
+ document.getElementById('dummy').value += String.fromCharCode(cc).toLowerCase();
+
+ setTimeout('focus();document.getElementById("dummy").focus()',1);
+}
+
+
+</script>
+<p>Type some text. It should only appear in the below input field.</p>
+<input type=text onkeydown="maybe_redirect(event)" id=dummy>
+</body>
diff --git a/Source/WebCore/manual-tests/focus-select-when-clicked.html b/Source/WebCore/manual-tests/focus-select-when-clicked.html
new file mode 100644
index 0000000..3f1e798
--- /dev/null
+++ b/Source/WebCore/manual-tests/focus-select-when-clicked.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4011544">4011544</a> selecting an item from a select menu with the mouse doesn't place the focus on the menu</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+1. Click on the pop-up menu below titled "Click Here", and select OPTION 1 from the list. <br>
+2. Verify that a blue focus ring is drawn around the pop-up menu. <br>
+3. Press tab, and verify that focus moves to TEXT AREA 2 <br></p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Blue focus ring is drawn around the pop-up menu when clicked, then focus moves to TEXT AREA 2 after pressing tab.</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+No blue focus ring drawn around the pop-up menu when clicked, or after selecting OPTION 1 from the list. After selecting option 1 and pressing tab, focus will land on the first focusable element on the page.
+</p>
+
+<input type="text" value="TEXT AREA 1">
+<select>
+ <option>Click Here</option>
+ <option>OPTION 1</option>
+</select>
+<input type="text" value="TEXT AREA 2">
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/focusringcolor-change-on-theme-change.html b/Source/WebCore/manual-tests/focusringcolor-change-on-theme-change.html
new file mode 100644
index 0000000..ca12fe6
--- /dev/null
+++ b/Source/WebCore/manual-tests/focusringcolor-change-on-theme-change.html
@@ -0,0 +1,8 @@
+<input value="Click on me! Focus ring color around this input element should change." style="width:100%">
+<ul>
+<li>Select the input element above.</li>
+<li>Change the system focus ring color.<br>On OS X you can do this by going to System Preferences-&gt;Appearance and selecting another value in the Appearance popup menu.</li>
+<li>Make Safari the active application again.</li>
+</ul>
+
+<p>The tests passes if the focus ring around the input element changes color.</p>
diff --git a/Source/WebCore/manual-tests/form-control-madness.html b/Source/WebCore/manual-tests/form-control-madness.html
new file mode 100644
index 0000000..30dac2b
--- /dev/null
+++ b/Source/WebCore/manual-tests/form-control-madness.html
@@ -0,0 +1,46 @@
+<input name="b" type="button" onclick="location='back.html'" value="Click Here">
+
+<br>
+Only the radio buttons between X's should be checked after clicking the button and going back
+<form>
+<input type="radio" name="old_version" value="12">
+<input type="radio" name="version" value="12">
+
+X<input type="radio" name="old_version" value="11" checked="checked"> X
+<input type="radio" name="version" value="11">
+
+<input type="radio" name="old_version" value="10">
+X<input type="radio" name="version" value="10" checked="checked">X
+
+<input type="radio" name="old_version" value="9">
+<input type="radio" name="version" value="9">
+
+<input type="radio" name="old_version" value="8">
+<input type="radio" name="version" value="8">
+
+<input type="radio" name="old_version" value="7">
+<input type="radio" name="version" value="7">
+
+<input type="radio" name="old_version" value="6">
+<input type="radio" name="version" value="6">
+
+<input type="radio" name="old_version" value="5">
+<input type="radio" name="version" value="5">
+
+<input type="radio" name="old_version" value="4">
+<input type="radio" name="version" value="4">
+
+<input type="radio" name="old_version" value="3">
+<input type="radio" name="version" value="3">
+
+<input type="radio" name="old_version" value="2">
+<input type="radio" name="version" value="2">
+
+<input type="radio" name="old_version" value="1">
+<input type="radio" name="version" value="1">
+
+<input type="radio" name="old_version" value="0">
+<input type="radio" name="version" value="0">
+</form>
+<br>
+<iframe></iframe> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/form-element-spelling.html b/Source/WebCore/manual-tests/form-element-spelling.html
new file mode 100644
index 0000000..805dddc
--- /dev/null
+++ b/Source/WebCore/manual-tests/form-element-spelling.html
@@ -0,0 +1,6 @@
+<html>
+<body>
+ <textarea>Helo everibody</textarea><input type="text" value="Helo everibody">
+ <p>Test that it's possible to do spell-checking in the two elements above. Choose "Check Spelling" or "Spelling..." from the contextual menu and verify that both work.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/form-value-restore.html b/Source/WebCore/manual-tests/form-value-restore.html
new file mode 100644
index 0000000..7b065af
--- /dev/null
+++ b/Source/WebCore/manual-tests/form-value-restore.html
@@ -0,0 +1,9 @@
+<p>This tests if form values get their values properly restored when you go back.
+To test, use the Debug menu to turn off "Use Back/Forward Cache".
+Then, type "a" into the first field below, type "b" into the second field, and select both "c" and "d" in the list box.
+Then, click on <a href="about:blank">this link</a> to go to a blank page.
+Then go back.
+Check that the form elements have the values that selected.</p>
+<div><input type="text" name="text-input"></div>
+<div><textarea></textarea></div>
+<div><select multiple size=5><option>a</option><option>b</option><option>c</option><option>d</option><option>e</option><option>f</option><option>g</option></select></div>
diff --git a/Source/WebCore/manual-tests/frame-hover.html b/Source/WebCore/manual-tests/frame-hover.html
new file mode 100644
index 0000000..c461295
--- /dev/null
+++ b/Source/WebCore/manual-tests/frame-hover.html
@@ -0,0 +1,5 @@
+<body>
+<p style="height: 50px;">Move the mouse pointer into the yellow box, then directly into the green box, then out of both boxes. No red or cyan should remain, only yellow and green.</p>
+<iframe src="resources/hover-subframe-1.html" frameborder="0" height="300" scrolling="no" width="200"></iframe><iframe src="resources/hover-subframe-2.html" frameborder="0" height="300" scrolling="no" width="200"></iframe>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/frames/nested-iframe-blit-on-scroll.html b/Source/WebCore/manual-tests/frames/nested-iframe-blit-on-scroll.html
new file mode 100644
index 0000000..6d4d30e
--- /dev/null
+++ b/Source/WebCore/manual-tests/frames/nested-iframe-blit-on-scroll.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <style type="text/css">
+ iframe {
+ position: relative;
+ z-index: 1;
+ left: 10px;
+ top: 10px;
+ border: 1px solid black;
+ }
+
+ #overlap {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ z-index: 2;
+ left: 10px;
+ top: 100px;
+ background-color: blue;
+ }
+ p {
+ margin-top: 50px;
+ }
+ </style>
+</head>
+<body>
+<div id="overlap"></div>
+<iframe id="frame" src="resources/blit-on-scroll-subframe.html" scrolling="no"></iframe>
+<p>The blue box should not get "smeared" when you scroll the inner iframe.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subframe.html b/Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subframe.html
new file mode 100644
index 0000000..b0dc4b9
--- /dev/null
+++ b/Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subframe.html
@@ -0,0 +1,10 @@
+<style type="text/css" media="screen">
+ iframe {
+ border: 1px solid black;
+ }
+
+ body {
+ height: 1000px;
+ }
+</style>
+<iframe id="subframe" src="blit-on-scroll-subsubframe.html" width="280" height="250"></iframe>
diff --git a/Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subsubframe.html b/Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subsubframe.html
new file mode 100644
index 0000000..9084096
--- /dev/null
+++ b/Source/WebCore/manual-tests/frames/resources/blit-on-scroll-subsubframe.html
@@ -0,0 +1,10 @@
+<style type="text/css" media="screen">
+ iframe {
+ padding: 10px;
+ }
+
+ body {
+ background-color: gray;
+ height: 1000px;
+ }
+</style>
diff --git a/Source/WebCore/manual-tests/go-back-after-alert.html b/Source/WebCore/manual-tests/go-back-after-alert.html
new file mode 100644
index 0000000..b3a1e1a
--- /dev/null
+++ b/Source/WebCore/manual-tests/go-back-after-alert.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+This tests a bug where going back just before putting up an alert can lead to a crash.
+<hr>
+<a href="resources/alert-and-go-back.html">Click this link to run the test.</a>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/goBack-blank-tab-page.html b/Source/WebCore/manual-tests/goBack-blank-tab-page.html
new file mode 100644
index 0000000..7a6157e
--- /dev/null
+++ b/Source/WebCore/manual-tests/goBack-blank-tab-page.html
@@ -0,0 +1,19 @@
+<html>
+<body>
+<a href="resources/before-go-back.html" target="_blank">
+Link to open in a tab</a>
+<br>
+<br>
+<u>Manual test :</u>
+<br>
+You need to open the above link in a new tab. In the opened page, just click on the link : if the webkit doesn't crash, the test has succeed.
+<br>
+<u>Details :</u>
+<br>
+This test checks if you can go back to a _blank-target previously tab-opened page.
+<br>
+If the webkit doesn't meet an assertion error : this test is Successfull.
+<br>
+When you click on the above link, one page (with _blank target) is loaded and this page will open a link and go back.
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/gtk/caret-browsing.html b/Source/WebCore/manual-tests/gtk/caret-browsing.html
new file mode 100644
index 0000000..182b043
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/caret-browsing.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<p>Manual test for Caret Browsing. Resize your window until the first paragraph fills at least two lines of text . Enable caret browsing mode (usually by pressing theF7 key). Press down. Now you should be on the second line of the first paragraph. Press up. Now you should be on the first line again. Now press Ctrl+Down.</p>
+<p>You should be on the first line of the second paragraph now. Press Ctrl+Down again.</p>
+<p>You should be on the first line of the third paragraph now. Press Ctrl+Up, and you should be back on the second paragraph.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/gtk/copy-htmltext.html b/Source/WebCore/manual-tests/gtk/copy-htmltext.html
new file mode 100644
index 0000000..0b811f6
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/copy-htmltext.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Copy HTML content</title>
+ </head>
+ <body>
+ <h1>Copy HTML content from currently editable area</h1>
+ <div title="EditableArea" contentEditable="true"
+ style="display: block; border: 2px solid black; margin: 5px; padding: 15px;">
+ Here is a Editable Area,<br />
+ <img title="It's the test image" src="http://webkit.org/images/icon-gold.png" /><br /><br />
+ <b>STEPS TO TEST:</b><br />
+ <ol>
+ <li>Select all that text or picture in this editable area (type <b>Ctrl-A</b> / Option-A)</li>
+ <li><b>Copy</b> them use <b>Ctrl-C</b> / Option-C</li>
+ <li>Move the cursor to a blank line below</li>
+ <li>Paste them use <b>Ctrl-V</b> / Option-V</li>
+ </ol>
+ <p><b>Ensure</b> that text and image has been pasted with formats and no garbled.</p>
+ <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />
+ </div>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/gtk/cursor-image.html b/Source/WebCore/manual-tests/gtk/cursor-image.html
new file mode 100644
index 0000000..a231337
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/cursor-image.html
@@ -0,0 +1,4 @@
+<div>Mouse over the grey block below to change the cursor to a small cross.</div>
+<div style="width: 100px; height: 100px; background: lightblue; cursor:url(resources/cell.cur), default;">&nbsp;</div>
+<div>Mouse over the grey block below to change the cursor to three small crosses.</div>
+<div style="width: 100px; height: 100px; background: lightblue; cursor:url(resources/long_cell.cur), default;">&nbsp;</div>
diff --git a/Source/WebCore/manual-tests/gtk/floatingdiv.html b/Source/WebCore/manual-tests/gtk/floatingdiv.html
new file mode 100644
index 0000000..b7169c7
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/floatingdiv.html
@@ -0,0 +1,149 @@
+<html>
+<body>
+1<br />
+2<br />
+3<br />
+4<br />
+5<br />
+6<br />
+7<br />
+8<br />
+9<br />
+10<br />
+11<br />
+12<br />
+13<br />
+14<br />
+15<br />
+16<br />
+17<br />
+18<br />
+19<br />
+20<br />
+21<br />
+22<br />
+23<br />
+24<br />
+25<br />
+26<br />
+27<br />
+28<br />
+29<br />
+30<br />
+31<br />
+32<br />
+33<br />
+34<br />
+35<br />
+36<br />
+37<br />
+38<br />
+39<br />
+40<br />
+41<br />
+42<br />
+43<br />
+44<br />
+45<br />
+46<br />
+47<br />
+48<br />
+49<br />
+50<br />
+51<br />
+52<br />
+53<br />
+54<br />
+55<br />
+56<br />
+57<br />
+58<br />
+59<br />
+60<br />
+61<br />
+62<br />
+63<br />
+64<br />
+65<br />
+66<br />
+67<br />
+68<br />
+69<br />
+70<br />
+71<br />
+72<br />
+73<br />
+74<br />
+75<br />
+76<br />
+77<br />
+78<br />
+79<br />
+80<br />
+<div style="border : solid 2px #ff0000; position: absolute; float: right; background : #000000; color : #ffffff; padding : 4px; width : 200px; height : 100px; overflow : auto; ">
+1<br />
+2<br />
+3<br />
+4<br />
+5<br />
+6<br />
+7<br />
+8<br />
+9<br />
+10<br />
+61<br />
+62<br />
+63<br />
+64<br />
+65<br />
+66<br />
+67<br />
+68<br />
+69<br />
+70<br />
+</div>
+127<br />
+128<br />
+129<br />
+130<br />
+131<br />
+132<br />
+133<br />
+134<br />
+135<br />
+136<br />
+137<br />
+138<br />
+139<br />
+140<br />
+141<br />
+142<br />
+143<br />
+144<br />
+145<br />
+146<br />
+147<br />
+148<br />
+149<br />
+150<br />
+151<br />
+152<br />
+153<br />
+154<br />
+155<br />
+156<br />
+157<br />
+158<br />
+159<br />
+160<br />
+161<br />
+162<br />
+163<br />
+164<br />
+165<br />
+166<br />
+167<br />
+168<br />
+169<br />
+170<br />
+</body>
diff --git a/Source/WebCore/manual-tests/gtk/paste-richtext-from-firefox.html b/Source/WebCore/manual-tests/gtk/paste-richtext-from-firefox.html
new file mode 100644
index 0000000..c739a59
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/paste-richtext-from-firefox.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Paste rich text from firefox</title>
+ </head>
+ <body>
+ <p><b>BUG ID:</b>
+ <a href="https://bugs.webkit.org/show_bug.cgi?id=26791">Bugzilla bug 26791</a>
+ [Gtk] Paste of rich text from firefox results garbled markup
+ </p>
+ <h1>Paste rich text from firefox</h1>
+ <p>
+ <b>STEPS TO TEST:</b><br>
+ <ol>
+ <li>Launch FireFox to browse <a href="http://www.apple.com">http://www.apple.com</a></li>
+ <li>Select that text or picture from FireFox page</li>
+ <li>Copy them use <b>Ctrl-C</b> / Option-C, (or just select them on Linux)</li>
+ <li>Back in WebkitGtk, click inside the EditableArea below, </li>
+ <li>Paste them use <b>Ctrl-V</b> / Option-V, (or just Middle Mouse Click on Linux)</li>
+ </ol>
+ <p><b>Ensure</b> that text or picture has been pasted with formats and no garbled.</p>
+ <div title="EditableArea" contentEditable="true"
+ style="display: block; border: 1px solid green; margin: 5px; padding: 15px;">
+ <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />
+ </div>
+ </p>
+ </body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/gtk/plugin-resize-scroll.html b/Source/WebCore/manual-tests/gtk/plugin-resize-scroll.html
new file mode 100644
index 0000000..d452b95
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/plugin-resize-scroll.html
@@ -0,0 +1,28 @@
+<html>
+ <head>
+ <style>
+ html, body {
+ background-color: blue;
+ color: white;
+ }
+ #spacer {
+ width: 100%;
+ height: 1000px;
+ background-color: yellow;
+ }
+ </style>
+ </script>
+ </head>
+ <body>
+ <p>
+ Resize the browser, ensure that the plugin resizes and does not produce a greyish border.
+ Scroll the view, ensure that plugin scrolls out of view.
+ </p>
+
+ <embed id="embed" height="100" style="width: 100%" pbgcolor="green"
+ src="http://www.tizag.com/pics/example.swf" type="application/x-shockwave-flash"/>
+
+ <div id="spacer"><p>content</p></div>
+ </body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/gtk/resources/cell.cur b/Source/WebCore/manual-tests/gtk/resources/cell.cur
new file mode 100644
index 0000000..decfbdc
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/resources/cell.cur
Binary files differ
diff --git a/Source/WebCore/manual-tests/gtk/resources/long_cell.cur b/Source/WebCore/manual-tests/gtk/resources/long_cell.cur
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/WebCore/manual-tests/gtk/resources/long_cell.cur
diff --git a/Source/WebCore/manual-tests/hash-ref.html b/Source/WebCore/manual-tests/hash-ref.html
new file mode 100644
index 0000000..ed15fdb
--- /dev/null
+++ b/Source/WebCore/manual-tests/hash-ref.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+<title>Manual Test for Bug 13067: Manually adding #hash to URL reloads entire page instead of jumping to #hash location in cached page</title>
+<style>
+li { padding-bottom: 12px; }
+</style>
+</head>
+<body>
+<h3>Manual Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=13067">Bug 13067: Manually adding #hash to URL reloads entire page instead of jumping to #hash location in cached page</a></h3>
+<div>
+<p>Instructions</p>
+<ol>
+<li>Click link to <a href="resources/hash-ref-test.html" target="_blank">open test page in new window</a>.</li>
+<li>Set hash ref to "#div5" on the URL and hit <kbd>Enter</kbd>.<br> This should take you to the top of the div5 box <em>without</em> reloading the page.</li>
+<li>Set hash ref to "#" on the URL and hit <kbd>Enter</kbd>.<br> This should take you to the top of the page <em>without</em> reloading.</li>
+<li>Set hash ref to "#div3" on the URL and hit <kbd>Enter</kbd>.<br> This should take you to the top of the div3 box <em>without</em> reloading.</li>
+<li>Hit <kbd>Enter</kbd> in the address bar without chainging the "#div3" hash.<br> This <em>should</em> reload the page.</li>
+<li>Set hash ref to "#" on the URL and hit <kbd>Enter</kbd>.<br> This should take you to the top of the page <em>without</em> reloading.</li>
+<li>Hit <kbd>Enter</kbd> in the address bar without chainging the "#" hash.<br> This <em>should</em> reload the page.</li>
+<li>Delete the hash ref on the URL and hit <kbd>Enter</kbd>.<br> This <em>should</em> reload the page.</li>
+<li>Go back in history 5 times to the first URL.<br> <em>None</em> of the pages should be reloaded.</li>
+<li>Go forward in history 5 times to the last URL.<br> <em>None</em> of the pages should be reloaded.</li>
+</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/image-prefetch-stress.html b/Source/WebCore/manual-tests/image-prefetch-stress.html
new file mode 100644
index 0000000..b9203b7
--- /dev/null
+++ b/Source/WebCore/manual-tests/image-prefetch-stress.html
@@ -0,0 +1,20 @@
+<html>
+<script type="text/javascript">
+(function(){
+ var i = 0;
+setInterval(function(){
+ var x = new Image();
+ x.src = "http://upload.wikimedia.org/wikipedia/commons/e/e9/Sombrero_Galaxy_in_infrared_light_%28Hubble_Space_Telescope_and_Spitzer_Space_Telescope%29.jpg?" + i;
+ i++;
+ }, 500);
+})()
+</script>
+<body>
+When an image is preloaded in javascript, the size of the image is never
+reported to the javascript garbage collector. If a large image is repeatedly
+preloaded but never used, it will not free any of the images until the
+garbage collector has run out of space to allocate any new free javascript
+variables. This test passes if after a certain point, the number of allocated
+images as reported by the caches window stops growing.
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/ime-keydown-preventdefault.html b/Source/WebCore/manual-tests/ime-keydown-preventdefault.html
new file mode 100644
index 0000000..aa474e9
--- /dev/null
+++ b/Source/WebCore/manual-tests/ime-keydown-preventdefault.html
@@ -0,0 +1,27 @@
+<html>
+<body>
+<p>Typing in the input fields below should not generate text, even with an IME enabled.</p>
+
+Type into the input:
+<input type=text id='input'></input><br>
+<div id='out' style="float: right"></div>
+Or the text area:
+<textarea id='area'></textarea><br>
+Or the contentEditable area:
+<div contentEditable id='ce' style="border:1px solid red; height:300px; width:300px;"></div>
+<script>
+var input = document.getElementById('input');
+var area = document.getElementById('area');
+var ce = document.getElementById('ce');
+
+var handleKeyDown = function(e) {
+ document.getElementById('out').innerHTML += "<br>Got a key event -- cancelling";
+ e.preventDefault();
+}
+
+input.addEventListener('keydown', handleKeyDown, false);
+area.addEventListener('keydown', handleKeyDown, false);
+ce.addEventListener('keydown', handleKeyDown, false);
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/indexeddb-persists.html b/Source/WebCore/manual-tests/indexeddb-persists.html
new file mode 100644
index 0000000..d8061e1
--- /dev/null
+++ b/Source/WebCore/manual-tests/indexeddb-persists.html
@@ -0,0 +1,69 @@
+<html>
+<body>
+<p>This is a test that only applies to IndexedDB. <span id=enabled>Our test for whether you have it enabled seems to have failed.</span></p>
+
+<p>Please follow these steps in order:</p>
+
+<p>First, click <a href="javascript: setData()">here</a> to open a database and set some data within it.</p>
+
+<p>Next, close the browser and then re-open this page.</p>
+
+<p>Lastly, click <a href="javascript: verifyData()">here</a> to verify the data was there</p>
+
+<p>Status: <span id=status>...</span></p>
+
+<script>
+
+if (!('webkitIndexedDB' in window))
+ document.getElementById("enabled").innerHTML = "<font color=red>Your build does NOT seem to have it enabled. So all code on this page is disabled.</font>";
+else
+ document.getElementById("enabled").innerHTML = "<font color=green>Your build seems to have it enabled.</font>";
+
+function status(str, color)
+{
+ if (color)
+ str = "<font color='" + color + "'>" + str + "</font>";
+ document.getElementById("status").innerHTML = str;
+}
+
+function setData()
+{
+ status("Something must have gone wrong (or we're still working)...", "red");
+
+ webkitIndexedDB.open("someDB", "some description").onsuccess = function() {
+ event.result.setVersion("some version").onsuccess = function() {
+ var db = event.source;
+ while (db.objectStoreNames.length)
+ db.removeObjectStore(db.objectStoreNames[0]);
+ db.createObjectStore("test").put("value", "key").onsuccess = function() {
+ status("Value set", "green");
+ }
+ }
+ }
+}
+
+function verifyData()
+{
+ status("Something must have gone wrong (or we're still working)...", "red");
+
+ webkitIndexedDB.open("someDB", "some description").onsuccess = function() {
+ try {
+ var result = event.result.transaction([]).objectStore("test").get("key");
+ result.onsuccess = function() {
+ if (event.result == "value")
+ status("Value verified", "green");
+ else
+ status("Value incorrect!", "red");
+ }
+ result.onerror = function() {
+ status("An error occurred: " + event.code + " " + event.message, "red");
+ }
+ } catch (e) {
+ status("An exception occurred: " + e, "red");
+ }
+ }
+}
+
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inline-input-marking.html b/Source/WebCore/manual-tests/inline-input-marking.html
new file mode 100644
index 0000000..4c62cd4
--- /dev/null
+++ b/Source/WebCore/manual-tests/inline-input-marking.html
@@ -0,0 +1,38 @@
+<html>
+<head>
+
+<style>
+.editing {
+ border: 2px solid red;
+ padding: 12px;
+ font-size: 24px;
+}
+.inputtest {
+ font-family:'Hiragino Kaku Gothic Std';
+ border: 2px solid green;
+}
+</style>
+
+<title>Inline Input Method Marking</title>
+</head>
+<body>
+<p>This tests that the underlining of the inline input hole does not obscure the glyphs.</p>
+
+<ol>
+<li>Switch to Hirigana input method</li>
+<li>Type characters into each of the green blocks below</li>
+<li>As you do so, check that glyphs in the inline hole are clearly readable</li>
+</ol>
+<div contenteditable id="root" class="editing" style="width:400px;">
+9px Hiragino Kaku Gothic Std<div class="inputtest" style="font-size: 9px;"><br></div>
+<br>12px Hiragino Kaku Gothic Std<div class="inputtest" style="font-size: 12px;"><br></div>
+<br>24px Hiragino Kaku Gothic Std<div class="inputtest" style="font-size: 24px;"><br></div>
+</div>
+
+<script>
+runEditingTest();
+</script>
+
+</body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/input-empty-on-focus.html b/Source/WebCore/manual-tests/input-empty-on-focus.html
new file mode 100644
index 0000000..7cfc3ff
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-empty-on-focus.html
@@ -0,0 +1,6 @@
+<div><img width="200" height="200" src="resources/200x200.png"></div>
+<div><input onfocus="this.value = ''" value="drop image here go boom"></div>
+<p>Drag the image above down into the text field.
+If the test succeeds there will be no crash and you'll end up with an empty text field with a blinking caret.
+It's arguably a bug that the text field accepts an image at all, so some day we might fix that and make this
+test obsolete. Maybe we can find some other way to test the same code path.</p>
diff --git a/Source/WebCore/manual-tests/input-starved-by-timers.html b/Source/WebCore/manual-tests/input-starved-by-timers.html
new file mode 100644
index 0000000..f26cfa7
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-starved-by-timers.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+<script>
+function log(m) {
+ document.getElementById("log").innerHTML += m + "<br>";
+}
+
+var multiplyFactor = 2; // Create this many timers in every timer callback.
+var targetLatency = 10000; // Multiply timers until it takes this much to fire all their callbacks.
+var timerCount = 1;
+
+function timerCallback(creationTimestamp) {
+ --timerCount;
+
+ if (!multiplyFactor) {
+ if (timerCount == 0)
+ log("No more timers - UI should be responsive now.");
+ return;
+ }
+
+ // Create more timers. Capture the current time so when callbacks are fired,
+ // we can check how long it actually took (latency caused by a long timer queue).
+ var timestamp = new Date().getTime();
+ for (i = 0; i < multiplyFactor; ++i) {
+ setTimeout(function() { timerCallback(timestamp); }, 0);
+ ++timerCount;
+ }
+
+ // Once the timer queue gets long enough for the timer firing latency to be over the limit,
+ // stop multplying them and keep the number of timers constant.
+ if (multiplyFactor > 1 && new Date().getTime() - creationTimestamp > targetLatency)
+ multiplyFactor = 1;
+}
+
+function runTest() {
+ log("Freezing UI...");
+ setTimeout(function() { timerCallback(new Date().getTime()); }, 0);
+ setTimeout("multiplyFactor = 0; log('Finishing. Started to drain timers.');", 10000);
+}
+
+</script>
+</head>
+<body onload="runTest()">
+This test will create enough timers to freeze browser UI. After 10 seconds, it
+will start drain the timers so the UI becomes responsive again in a few seconds.
+You don't need to kill the browser.<br>If the bug is fixed, there will be no
+UI freeze. Refresh the page to repeat the experiment.<br>Try to click at this
+button (or browser's menu) while UI is frozen: <button onclick="log('clicked')">Click Me</button> <hr>
+<div id="log"></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/input-type-datetime-default-value.html b/Source/WebCore/manual-tests/input-type-datetime-default-value.html
new file mode 100644
index 0000000..8be15d8
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-type-datetime-default-value.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head><title>Default values for date/time input (type= date, datetime, datetime-local, month, time, week)</title></head>
+
+<p>Enter Up or Down, or click the spin buttons for each input field.</p>
+
+<form>
+ <ul>
+ <li>Emtpy values, no steps
+ <ul>
+ <li>date: <input type="date" size="32" value="" />
+ <li>datetime: <input type="datetime" size="32" value="" />
+ <li>datetime-local: <input type="datetime-local" size="32" value="" />
+ <li>month: <input type="month" size="32" value="" />
+ <li>time: <input type="time" size="32" value="" />
+ <li>week <input type="week" size="32" value="" />
+ </ul>
+ <li>Invalid values, no steps
+ <ul>
+ <li>date: <input type="date" size="32" value="foo" />
+ <li>datetime: <input type="datetime" size="32" value="foo" />
+ <li>datetime-local: <input type="datetime-local" size="32" value="foo" />
+ <li>month: <input type="month" size="32" value="foo" />
+ <li>time: <input type="time" size="32" value="foo" />
+ <li>week <input type="week" size="32" value="foo" />
+ </ul>
+ <li>Emtpy values, invalid steps
+ <ul>
+ <li>date: <input type="date" size="32" value="" step="foo" />
+ <li>datetime: <input type="datetime" size="32" value="" step="foo" />
+ <li>datetime-local: <input type="datetime-local" size="32" value="" step="foo" />
+ <li>month: <input type="month" size="32" value="" step="foo" />
+ <li>time: <input type="time" size="32" value="" step="foo" />
+ <li>week <input type="week" size="32" value="" step="foo" />
+ </ul>
+ <li>Invalid values, invalid steps
+ <ul>
+ <li>date: <input type="date" size="32" value="foo" step="foo" />
+ <li>datetime: <input type="datetime" size="32" value="foo" step="foo" />
+ <li>datetime-local: <input type="datetime-local" size="32" value="foo" step="foo" />
+ <li>month: <input type="month" size="32" value="foo" step="foo" />
+ <li>time: <input type="time" size="32" value="foo" step="foo" />
+ <li>week <input type="week" size="32" value="foo" step="foo" />
+ </ul>
+ <li>Emtpy values, step=any
+ <ul>s
+ <li>date: <input type="date" size="32" value="" step="any" />
+ <li>datetime: <input type="datetime" size="32" value="" step="any" />
+ <li>datetime-local: <input type="datetime-local" size="32" value="" step="any" />
+ <li>month: <input type="month" size="32" value="" step="any" />
+ <li>time: <input type="time" size="32" value="" step="any" />
+ <li>week <input type="week" size="32" value="" step="any" />
+ </ul>
+ <li>Invalid values, step=any
+ <ul>
+ <li>date: <input type="date" size="32" value="foo" step="any" />
+ <li>datetime: <input type="datetime" size="32" value="foo" step="any" />
+ <li>datetime-local: <input type="datetime-local" size="32" value="foo" step="any" />
+ <li>month: <input type="month" size="32" value="foo" step="any" />
+ <li>time: <input type="time" size="32" value="foo" step="any" />
+ <li>week <input type="week" size="32" value="foo" step="any" />
+ </ul>
+ </ul>
+</form>
+
+<p>The input fields should show the current local/UTC date/time (with + or - a unit date/time described below except for step=any).</p>
+
+<p>Unit dates/times</p>
+<ul>
+ <li>date: 1 day (local time)
+ <li>datetime: 1 minute (UTC)
+ <li>datetime-local: 1 minute (local time)
+ <li>month: 1 month (local time)
+ <li>time: 1 minute (local time)
+ <li>week: 1 week (local time)
+</ul>
+
+<p>As for step=any, the values don't change by stepping-up/-down.<p>
+
+</body></html>
diff --git a/Source/WebCore/manual-tests/input-type-file-autocomplete-frame-1.html b/Source/WebCore/manual-tests/input-type-file-autocomplete-frame-1.html
new file mode 100644
index 0000000..6abc90c
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-type-file-autocomplete-frame-1.html
@@ -0,0 +1,23 @@
+<html>
+<body>
+<p><b>BUG ID:</b> <a href="<rdar://problem/4532113> REGRESSION (NativeTextField): Crash occurs after modifying field then reloading page -[FormDelegate frameLayoutHasChanged:]">4532113</a> REGRESSION (NativeTextField): Crash occurs after modifying field then reloading page -[FormDelegate frameLayoutHasChanged:]</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+<ol>
+<li> enable Safari's auto fill
+<li> type something in the input field, and press enter to register it with autofill
+<li> clear the field and type part of the same string you did previously
+<li> without ever removing focus from the input field, select the suggestion autofill suggests
+<li> refresh the page or go to a bookmark (don't remove focus from the input field)
+</ol>
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+no crash.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Crash in -[FormDelegate frameLayoutHasChanged:]
+</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/input-type-file-autocomplete-frame-2.html b/Source/WebCore/manual-tests/input-type-file-autocomplete-frame-2.html
new file mode 100644
index 0000000..d3cd114
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-type-file-autocomplete-frame-2.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<table><tr><td>
+<form><input size=55 value="type something in here"></form>
+</td></tr></table>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/input-type-file-autocomplete-refresh.html b/Source/WebCore/manual-tests/input-type-file-autocomplete-refresh.html
new file mode 100644
index 0000000..eea8dab
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-type-file-autocomplete-refresh.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+
+<frameset rows="50%,50%">
+ <frame src="./input-type-file-autocomplete-frame-1.html">
+ <frame src="./input-type-file-autocomplete-frame-2.html">
+</frameset>
+
+</html>
diff --git a/Source/WebCore/manual-tests/input-type-file-drag-drop.html b/Source/WebCore/manual-tests/input-type-file-drag-drop.html
new file mode 100644
index 0000000..eccc6e8
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-type-file-drag-drop.html
@@ -0,0 +1,18 @@
+<body>
+<div style="background-color: black;" width="300">
+<input type=file>
+</div>
+<div style="background-color: blue;" width="300">
+<input type=file>
+</div>
+<input type=file>
+<p>
+&lt;input type="file"&gt; should be able to support drag and drop of files. Use the above controls to demonstrate:
+</p>
+<ol>
+<li> Accepting normal file drags (indicating accpetance during hover).
+<li> Rejecting diretory and non-normal file drags.
+<li> Dropping a symlink'd file should accpect/show/upload the target, not the symlink itself.
+<li> Rejecting of file-promise drags (this is probably a bug, not a feature).
+</ol>
+</body> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/input-type-text-unconfirmed-inline-input.html b/Source/WebCore/manual-tests/input-type-text-unconfirmed-inline-input.html
new file mode 100644
index 0000000..857a63e
--- /dev/null
+++ b/Source/WebCore/manual-tests/input-type-text-unconfirmed-inline-input.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head><title>Unconfirmed inline input in <input type=text></title></head>
+
+<script>
+
+function dump(s) {
+ if (s == "")
+ alert("Field appears empty");
+ else
+ alert("Field contents: " + s);
+}
+
+</script>
+
+<p>Enter some text using inline input (e.g. Kotoeri Hiragana) and click the button without closing the input area.</p>
+<p><input type=text id=input value="" size=57><input type=button value="test" onClick="dump(document.getElementById('input').value)"></div>
+<p>The alert should show the inline input text, but without the bug fix it shows empty text.</p>
+
+</body></html>
diff --git a/Source/WebCore/manual-tests/inspector-document-methods-override.html b/Source/WebCore/manual-tests/inspector-document-methods-override.html
new file mode 100644
index 0000000..ca53f25
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-document-methods-override.html
@@ -0,0 +1,14 @@
+<p>This page test that using the Web Inspector's search field on a page that
+overrides <tt>Document.evaluate</tt> or <tt>Document.querySelectorAll</tt>
+still works.<p>
+
+<p>To test, right-click on this page and select &ldquo;Inspect Element&rdquo;,
+then type &ldquo;p&rdquo; in the search field (without the quotes). If the
+search results list appears, then you have passed the test. If one or more
+alert dialogs appear, you have failed the test.</p>
+
+<script>
+ function fail() { alert('FAIL') }
+ document.querySelectorAll = fail;
+ document.evaluate = fail;
+</script>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/console-alert-document-body.html b/Source/WebCore/manual-tests/inspector-wrappers/console-alert-document-body.html
new file mode 100644
index 0000000..a177834
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/console-alert-document-body.html
@@ -0,0 +1,14 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+window.alert = function(msg) {
+ msg.titleInfo = doAttack;
+ return msg;
+}
+</script>
+</head>
+<body>
+<script>instructions({console: true, trigger: "alert(document.body)"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/console-alert-object.html b/Source/WebCore/manual-tests/inspector-wrappers/console-alert-object.html
new file mode 100644
index 0000000..5caab2b
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/console-alert-object.html
@@ -0,0 +1,14 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+window.alert = function(msg) {
+ msg.__proto__.toString = doAttack;
+ return msg;
+}
+</script>
+</head>
+<body>
+<script>instructions({console: true, trigger: "alert({})"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/console-alert-this.html b/Source/WebCore/manual-tests/inspector-wrappers/console-alert-this.html
new file mode 100644
index 0000000..4b80326
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/console-alert-this.html
@@ -0,0 +1,17 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+window.alert = function(consolePanel) {
+ var _addMessage = consolePanel.addMessage;
+ consolePanel.addMessage = function() {
+ doAttack(consolePanel.addMessage);
+ consolePanel.addMessage = _addMessage;
+ }
+}
+</script>
+</head>
+<body>
+<script>instructions({console: true, trigger: "alert(this)"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/console-eval.html b/Source/WebCore/manual-tests/inspector-wrappers/console-eval.html
new file mode 100644
index 0000000..9274cea
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/console-eval.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+window.eval = function() { doAttack(eval); }
+</script>
+</head>
+<body>
+<script>instructions({console: true, trigger: "something"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/console-str-alert-object.html b/Source/WebCore/manual-tests/inspector-wrappers/console-str-alert-object.html
new file mode 100644
index 0000000..d146663
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/console-str-alert-object.html
@@ -0,0 +1,15 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+window.str = window.expression = "alert({})";
+window.alert = function(msg) {
+ msg.__proto__.toString = doAttack;
+ return msg;
+}
+</script>
+</head>
+<body>
+<script>instructions({console: true, trigger: "something"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/console-str-getter.html b/Source/WebCore/manual-tests/inspector-wrappers/console-str-getter.html
new file mode 100644
index 0000000..31f8907
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/console-str-getter.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+window.__defineGetter__("str", doAttack);
+window.__defineGetter__("expression", doAttack);
+</script>
+</head>
+<body>
+<script>instructions({console: true, trigger: "something"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/inspector-evaluate.html b/Source/WebCore/manual-tests/inspector-wrappers/inspector-evaluate.html
new file mode 100644
index 0000000..cc00c3b
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/inspector-evaluate.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+<script>
+document.evaluate = doAttack;
+</script>
+</head>
+<body>
+<script>instructions({trigger: "Type something into the search box"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/inspector-hasAttributes.html b/Source/WebCore/manual-tests/inspector-wrappers/inspector-hasAttributes.html
new file mode 100644
index 0000000..1fdf51a
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/inspector-hasAttributes.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+</head>
+<body>
+<script>instructions({trigger: "Collapse and expand the &lt;body/&gt; tag"});</script>
+<script>
+ _hasAttributes = document.body.hasAttributes;
+ attackfunc = function() {
+ try { doAttack(); } catch(ex) { }
+ return _hasAttributes.call(this);
+ }
+ document.body.firstChild.hasAttributes = attackfunc;
+ document.body.hasAttributes = attackfunc;
+ document.body.parentNode.hasAttributes = attackfunc;
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/inspector-treeElementIdentifier.html b/Source/WebCore/manual-tests/inspector-wrappers/inspector-treeElementIdentifier.html
new file mode 100644
index 0000000..288edc7
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/inspector-treeElementIdentifier.html
@@ -0,0 +1,17 @@
+<html>
+<head>
+<script src="inspector-wrappers-test-utils.js"></script>
+</head>
+<body>
+<script>
+ document.body.__defineGetter__("__treeElementIdentifier", function() {
+ try { doAttack(); } catch(ex) { }
+ return this.___treeElementIdentifier;
+ });
+ document.body.__defineSetter__("__treeElementIdentifier", function(val) {
+ this.___treeElementIdentifier = val;
+ });
+</script>
+<script>instructions({trigger: "Collapse and expand the &lt;body/&gt; tag"});</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector-wrappers/inspector-wrappers-test-utils.js b/Source/WebCore/manual-tests/inspector-wrappers/inspector-wrappers-test-utils.js
new file mode 100644
index 0000000..2666167
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector-wrappers/inspector-wrappers-test-utils.js
@@ -0,0 +1,46 @@
+var truealert = window.alert; // we overwrite window.alert sometimes
+
+// Walk up the caller chain and try to find a reference to the Inspector's window
+function doAttack() {
+ var obj = doAttack.caller;
+ for (var i = 0;
+ i < 1000 && (obj.arguments.length == 0 || !obj.arguments[0].target);
+ i++) {
+ obj = obj.caller;
+ }
+ if (i == 1000) return;
+ var win = obj.arguments[0].target.ownerDocument.defaultView;
+ xhr(win);
+}
+
+function xhr(win) {
+ var xhr = new win.XMLHttpRequest();
+ var url = prompt("Test failed. To prove it, I'm going " +
+ "to make a cross-domain XMLHttpRequest. Where " +
+ "would you like me to send it?\n\nHint: You can " +
+ "also try a file:// URL.", "http://www.example.com/");
+ xhr.open("GET", url, false);
+ xhr.send();
+ truealert("Result:\n\n" + xhr.responseText);
+}
+
+function instructions(params) {
+ var str = "<p>This test tries to make a cross-domain XMLHttpRequest to " +
+ "check whether JavaScript object wrappers are working (bug 16837, bug 16011).</p>" +
+ "<p>View this page from an http:// URL to ensure that it's in a different " +
+ "origin from the Inspector.</p>" +
+ "<p>Instructions:</p>" +
+ "<ol>" +
+ "<li>Right click the box" +
+ "<img id=logo src='../resources/webkit-background.png'" +
+ "style='border: 1px solid black; display: block; margin: 1em;'>" +
+ "<li>Choose \"Inspect Element\" from the context menu";
+ if (params.console) {
+ str += "<li>Select the Console";
+ str += "<li>Type " + params.trigger + " into the console and hit Enter";
+ } else {
+ str += "<li>" + params.trigger;
+ }
+ str += "<li>If the test failed, a prompt will appear.</ol>";
+ document.write(str);
+}
diff --git a/Source/WebCore/manual-tests/inspector/bp-in-named-eval-after-reload.html b/Source/WebCore/manual-tests/inspector/bp-in-named-eval-after-reload.html
new file mode 100644
index 0000000..4612cd6
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/bp-in-named-eval-after-reload.html
@@ -0,0 +1,65 @@
+<style>code{background-color: #ffc;}</style>
+<p><b>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=31375">Bug 31375</a> - Web Inspector: breakpoints in named evals are not restored after a reload</b>
+
+<ul>
+<li><p>open this page with Web Inspector
+<li><p>switch to the Scripts panel, enabling debug if required
+<li><p>the available scripts in the select element should be:
+<ul>
+<li>(program): f1.js
+<li>(program): f2.js
+<li>bp-in-named-eval-after-reload.html
+</ul>
+<li><p>In <code>(program) f1.js</code>, set a breakpoint on the first
+executable line of the function <code>f1()</code>, the invocation of <code>doNothing()</code>.
+<li><p>In <code>(program) f2.js</code>, set a breakpoint on the first
+executable line of the function <code>f2()</code>, the invocation of <code>doNothing()</code>.
+<li><p>click this button: <input id=button type=button value="click me">
+<li><p>debugger should stop in the <code>f1()</code> function.
+<li><p>resume the debugger
+<li><p>debugger should stop in the <code>f2()</code> function (the function in <code>(program) f2.js</code>)
+<li><p>resume the debugger
+<li><p>switch to the web page, reload the web page, switch back to web inspector
+<li><p>in the breakpoints sidebar panel, click on the two breakpoints listed
+and the source for those functions should be shown in the source panel, and
+the previous breakpoint markers should be visible
+<li><p>click the "click me" button above, again
+<li><p>debugger should stop in the <code>f1()</code> function.
+<li><p>resume the debugger
+<li><p>debugger should stop in the <code>f2()</code> function.
+<li><p>resume the debugger
+</ul>
+
+<p>Note that without the fix in <a href="https://bugs.webkit.org/show_bug.cgi?id=31375">Bug 31375</a>,
+the breakpoints won't work after reloading the page.
+
+<script>
+
+function doNothing() { /* allows multi-line functions, easier to debug */ };
+
+eval([
+ "function f1() {",
+ " doNothing();",
+ " console.log(new Date() + ': f1() called');",
+ "}",
+ "//@sourceURL=f1.js"
+].join("\n"));
+
+f2 = Function([
+ "",
+ " doNothing();",
+ " console.log(new Date() + ': f2() called');",
+ "//@sourceURL=f2.js"
+].join("\n"));
+
+var button = document.getElementById("button");
+
+button.addEventListener("click", clickHandler, false);
+
+function clickHandler() {
+ f1();
+ f2();
+}
+
+</script>
+<!-- End -->
diff --git a/Source/WebCore/manual-tests/inspector/command-line-api.html b/Source/WebCore/manual-tests/inspector/command-line-api.html
new file mode 100644
index 0000000..8b9a153
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/command-line-api.html
@@ -0,0 +1,6 @@
+<script type="text/javascript" charset="utf-8">
+ var $ = function() { console.log("OK") };
+</script>
+
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=20385">Bug 20385: Firebug command line extensions interfere with existing objects</a>.</p>
+<p>To test, execute "$()" in the Inspector's Console. Also trying setting $.</p>
diff --git a/Source/WebCore/manual-tests/inspector/console-assert.html b/Source/WebCore/manual-tests/inspector/console-assert.html
new file mode 100644
index 0000000..df2c4cc
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/console-assert.html
@@ -0,0 +1,37 @@
+<script>
+ function createClickHandler(result, str) {
+ return function() {
+ console.assert(result, "%s", str);
+ }
+ }
+
+ function load() {
+ var tests = [
+ "",
+ "false",
+ "null",
+ "document.body",
+ "!document.body",
+ "true"
+ ];
+
+ for (var i = 0; i < tests.length; ++i) {
+ var test = tests[i];
+ var result;
+ try {
+ result = eval(test);
+ } catch(e) {
+ result = false;
+ }
+ var button = document.createElement("button");
+ button.innerText = "console.assert(" + test + "): should" + (result ? " not" : "") + " assert";
+ button.onclick = createClickHandler(result, test);
+ var p = document.createElement("p");
+ p.appendChild(button);
+ document.body.appendChild(p);
+ }
+ }
+</script>
+<body onload="load()">
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19134">Bug 19134: Inspector should support console.assert</a>.</p>
+<p>To test, click the buttons below and look at the Inspector's Console.</p>
diff --git a/Source/WebCore/manual-tests/inspector/console-call-line-numbers.html b/Source/WebCore/manual-tests/inspector/console-call-line-numbers.html
new file mode 100644
index 0000000..ae831c5
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/console-call-line-numbers.html
@@ -0,0 +1,14 @@
+<script>
+ console.info("Test console.info");
+ console.log("Test console.log");
+ console.warn("Test console.warn");
+ console.error("Test console.error");
+ console.time("Test console.time");
+ console.timeEnd("Test console.time");
+ console.count("Test console.count");
+ console.assert(false, "Test console.assert");
+</script>
+<script src="resources/script-console-calls.js"></script>
+<body>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=17234">Bug 17234: Inspector should link console.{log,warn,info,error} back to call site</a>.</p>
+<p>To test, open the Inspector's Console and verify that all console messages have correct resource URLs and line numbers. Also verify that errors and warnings show up inline as bubbles in the resource source view.</p>
diff --git a/Source/WebCore/manual-tests/inspector/console-dir.html b/Source/WebCore/manual-tests/inspector/console-dir.html
new file mode 100644
index 0000000..90f389d
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/console-dir.html
@@ -0,0 +1,31 @@
+<body>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=24329">Bug 24329: REGRESSION: console.dirxml() Console API broken</a>.</p>
+<p>To test, open the Inspector's Console and verify that all console messages have the correct output.</p>
+</body>
+<script>
+ console.log("Testing console.dir:");
+ console.dir(undefined);
+ console.dir(123);
+ console.dir(null);
+ console.dir({});
+ console.dir({test: 1, test1:{apple: "orange"}});
+ console.dir("Test");
+ console.dir(document);
+ console.dir(document.body);
+
+ console.log("\nTesting console.dirxml:");
+ console.dirxml(undefined);
+ console.dirxml(123);
+ console.dirxml(null);
+ console.dirxml({});
+ console.dirxml({test: 1, test1:{apple: "orange"}});
+ console.dirxml("Test");
+ console.dirxml(document);
+ console.dirxml(document.body);
+
+ console.log("\nTesting console.log's %o and %O formatters:");
+ console.log("%o %O", document.body, document.body);
+ console.log("%o %O", undefined, undefined);
+ console.log("%o %O", 123, 123);
+ console.log("%o %O", null, null);
+</script>
diff --git a/Source/WebCore/manual-tests/inspector/console-log-formatting.html b/Source/WebCore/manual-tests/inspector/console-log-formatting.html
new file mode 100644
index 0000000..d59ebc9
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/console-log-formatting.html
@@ -0,0 +1,68 @@
+<script>
+ var s = "this is a string";
+ var i = 5;
+ var ni = -5;
+ var f = 3.14159;
+ var o = { prop1: 1, prop2: 2 };
+ var specifiers = {
+ s: "string",
+ i: "integer",
+ d: "integer",
+ f: "float",
+ "0.3f": "float with precision",
+ o: "object",
+ z: "unsupported",
+ };
+
+ function test(args) {
+ var functions = ["log", "debug"];
+ for (var i = 0; i < functions.length; ++i) {
+ console.info("console." + functions[i] + "(%s)", args);
+ try {
+ eval("console." + functions[i] + "(" + args + ")");
+ } catch (e) {
+ console.error(e);
+ }
+ }
+ }
+
+ function testAllSpecifiers(value, description) {
+ for (var specifier in specifiers)
+ test("'Format " + description + " as " + specifiers[specifier] + ": %" + specifier + "', " + value + "");
+ }
+
+ function runTests() {
+ var values = [
+ { value: "window.noSuchVariable", description: "undefined" },
+ { value: "s", description: "string" },
+ { value: "i", description: "positive integer" },
+ { value: "ni", description: "negative integer" },
+ { value: "f", description: "float" },
+ { value: "o", description: "object" },
+ { value: "document.body", description: "body" },
+ { value: "/test/", description: "RegExp" },
+ { value: "true", description: "boolean" },
+ { value: "null", description: "null" },
+ ];
+
+ for (var i = 0; i < values.length; ++i)
+ testAllSpecifiers(values[i].value, values[i].description);
+
+ var tests = [
+ "'simple test'",
+ "'multiple', 'parameters', 'should', 'be', 'concatenated'",
+ "document",
+ "document, document.body, window, window.location",
+ "document, document.body, 'hello', 'goodbye', window.location",
+ "'Format string with fewer specifiers than parameters: %o %i %f', document.body, i, f, ni, o",
+ "'Format string with more specifiers than parameters: %o %i %f %i %o', document.body, i, f",
+ ];
+
+ for (var i = 0; i < tests.length; ++i)
+ test(tests[i]);
+
+ }
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=17228">Bug 17228: console.{log,warn,info,error} should support format strings, variable arguments</a>.</p>
+<p>Open the Inspector (right-click and choose "Inspect Element"), then click the "Run Tests" button.</p>
+<button onclick="runTests()">Run Tests</button>
diff --git a/Source/WebCore/manual-tests/inspector/console-time.html b/Source/WebCore/manual-tests/inspector/console-time.html
new file mode 100644
index 0000000..6c24373
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/console-time.html
@@ -0,0 +1,33 @@
+<script>
+function test() {
+ // Test 1: call timeEnd before time
+ console.log(">>>console.timeEnd(\"1\")");
+ console.timeEnd("1");
+ // Test 2: call time two times before timeEnd
+ console.log(">>>console.time(\"2\")");
+ console.time("2");
+ setTimeout(function() {
+ console.log(">>>console.time(\"2\")");
+ console.time("2");
+ console.log(">>>console.timeEnd(\"2\")");
+ console.timeEnd("2");
+ console.log("2: If it says ~1000ms the first time is not overwritten.");
+ }, 1000);
+ // Test 3: call timeEnd two times
+ console.log(">>>console.time(\"3\")");
+ console.time("3");
+ console.log(">>>console.timeEnd(\"3\")");
+ console.timeEnd("3");
+ console.log(">>>console.timeEnd(\"3\")");
+ console.timeEnd("3");
+ // Test 4: call time/timeEnd without title parameter
+ console.log(">>>console.time()");
+ console.time();
+ console.log(">>>console.timeEnd()");
+ console.timeEnd();
+};
+
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19159">Bug 19159: Inspector should support console.time/console.timeEnd</a>.</p>
+<p>Open the Inspector (right-click and choose "Inspect Element"), then click the "Run Tests" button.</p>
+<button onclick="test()">Run Tests</button> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/inspector/debugger-execution-while-paused.html b/Source/WebCore/manual-tests/inspector/debugger-execution-while-paused.html
new file mode 100644
index 0000000..67446d4
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-execution-while-paused.html
@@ -0,0 +1,15 @@
+<script>
+function stepOne()
+{
+ var x = 1;
+}
+
+function stepTwo()
+{
+ alert("Test failed. The second button event still fired.");
+}
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=20284">Bug 20284: JavaScript can be executed even though debugger is running and at a break point</a>.</p>
+<p>To test, open the Inspector and start a debugging session. Set a break point inside the stepOne() function. Now click the Step One button in the page. The breakpoint should be hit. While paused at the breakpoint click on the Step Two button. You should not see an alert dialog.</p>
+<button onclick="stepOne()">Step One</button><br><br>
+<button onclick="stepTwo()">Step Two</button><br><br>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-pause-during-load.html b/Source/WebCore/manual-tests/inspector/debugger-pause-during-load.html
new file mode 100644
index 0000000..631cafc
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-pause-during-load.html
@@ -0,0 +1,5 @@
+<script>
+debugger; // You should see this code and execution line in the Scripts panel.
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19053">Bug 19053: Source code not visible when script is paused before onload fires</a>.</p>
+<p>To test, open the Inspector and start a debugging session. You should see this file and execution line in the Scripts panel.</p>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-pause-on-else-statements.html b/Source/WebCore/manual-tests/inspector/debugger-pause-on-else-statements.html
new file mode 100644
index 0000000..424fb7e
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-pause-on-else-statements.html
@@ -0,0 +1,18 @@
+<script>
+function test()
+{
+ debugger;
+}
+
+if (false)
+ debugger; // This should not be hit.
+else
+ test();
+</script>
+
+Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=21944">Bug 21944: Can't set a breakpoint on the statement after a single line "else"</a>.
+<br><br>
+Start a debugging session in the Web Inspector and open this file. When the debugger breaks, select the (program) node
+in the call stack, you should see the execution line on the call to test().
+<br><br>
+Also set a breakpoint on the call to test(), and reload. It should break before the test() function is called.
diff --git a/Source/WebCore/manual-tests/inspector/debugger-pause-on-for-in-statements.html b/Source/WebCore/manual-tests/inspector/debugger-pause-on-for-in-statements.html
new file mode 100644
index 0000000..c0c24e0
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-pause-on-for-in-statements.html
@@ -0,0 +1,18 @@
+<script>
+function test()
+{
+ debugger;
+}
+
+var object = { test: 1 };
+
+for (var property in object)
+ test();
+</script>
+
+Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=22004">Bug 22004: Can't set a breakpoint on the statement after a single line "for"</a>.
+<br><br>
+Start a debugging session in the Web Inspector and open this file. When the debugger breaks, select the (program) node
+in the call stack, you should see the execution line on the call to test().
+<br><br>
+Also set a breakpoint on the call to test(), and reload. It should break before the test() function is called.
diff --git a/Source/WebCore/manual-tests/inspector/debugger-pause-on-for-statements.html b/Source/WebCore/manual-tests/inspector/debugger-pause-on-for-statements.html
new file mode 100644
index 0000000..43a63e2
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-pause-on-for-statements.html
@@ -0,0 +1,16 @@
+<script>
+function test()
+{
+ debugger;
+}
+
+for (var i = 0; i < 1; ++i)
+ test();
+</script>
+
+Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=22004">Bug 22004: Can't set a breakpoint on the statement after a single line "for"</a>.
+<br><br>
+Start a debugging session in the Web Inspector and open this file. When the debugger breaks, select the (program) node
+in the call stack, you should see the execution line on the call to test().
+<br><br>
+Also set a breakpoint on the call to test(), and reload. It should break before the test() function is called.
diff --git a/Source/WebCore/manual-tests/inspector/debugger-scopes-inspection.html b/Source/WebCore/manual-tests/inspector/debugger-scopes-inspection.html
new file mode 100644
index 0000000..f06b3e7
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-scopes-inspection.html
@@ -0,0 +1,35 @@
+<script>
+
+var obj = {
+ objField: 30
+};
+
+function handleLoad(e) {
+ new C().m();
+}
+
+function C() {
+ this.a = 10;
+ this.timestamp = Date.now();
+}
+
+C.prototype.m = function() {
+ this.timestamp = Date.now();
+ with (obj) {
+ debugger;
+ objField++;
+ }
+ var self = this;
+ setTimeout(function() {
+ self.m();
+ }, 1000);
+};
+
+
+</script>
+<body onload="handleLoad(event)">
+
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=34161"> Bug 34161 - Local scope is shown as With scope in scope chain pane </a>.</p>
+<p>To test, open the Inspector and start a debugging session. In a second debugger will pause. While paused look at scope chain pane. There should be three scopes: 'With scope' containing objField variable, 'Local scope' with this and self variables and 'Global scope'. All scopes but 'Global' should be expanced. 'Global' scope should be collapsed(it takes too long to expand DOMWindow so we prefer to do it on demand). </p>
+</body>
+
diff --git a/Source/WebCore/manual-tests/inspector/debugger-shortcuts-with-console-opened.html b/Source/WebCore/manual-tests/inspector/debugger-shortcuts-with-console-opened.html
new file mode 100644
index 0000000..df089d5
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-shortcuts-with-console-opened.html
@@ -0,0 +1,16 @@
+<script>
+function testFunction()
+{
+ showAlert();
+}
+
+function showAlert()
+{
+ alert("Test completed.");
+}
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=31252">Bug 31252: Web Inspector: Debugger shortcuts (F8, F10, F11) have no effect if the Console view is open</a>.</p>
+<p>To test, open the Inspector and start a debugging session. Open the Console view (press Esc or click the "Show console" button in the status bar) and make sure it is focused (the cursor is blinking in the text prompt.)
+Set a breakpoint inside testFunction() (on the showAlert() call) and press F8. Now click the Test button in the page. The execution should stop on an HTML line containing <b>onclick="testFunction()"</b>. Press F8. The execution should stop on the breakpoint.
+Press F11, F10, F11 sequentially. You should see the "Test completed." alert dialog ONLY after the last keypress.</p>
+<button onclick="testFunction()">Test</button><br><br>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-status-bar-buttons-state.html b/Source/WebCore/manual-tests/inspector/debugger-status-bar-buttons-state.html
new file mode 100644
index 0000000..31ca3b1
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-status-bar-buttons-state.html
@@ -0,0 +1,2 @@
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19173">Bug 19173: Tool tips for Inspector debugger status bar buttons are wrong/missing</a>.</p>
+<p>To test, open the Inspector and go to the Scripts panel. Check that the tool tips for the debugger's two status bar buttons make sense when each button is toggled on and off.</p>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-step-on-do-while-statements.html b/Source/WebCore/manual-tests/inspector/debugger-step-on-do-while-statements.html
new file mode 100644
index 0000000..190cbf8
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-step-on-do-while-statements.html
@@ -0,0 +1,29 @@
+<script src="resources/loop-statements.js"></script>
+<script>
+function runDoWhile()
+{
+ /* place breakpoint on next line and click continue */ debugger;
+ do {
+ statement();
+ increment();
+ } while (condition());
+}
+
+</script>
+Start a debugging session in the Web Inspector and open this file.
+<br><br>
+Before running the tests please perform the following:
+Make sure the execution is not paused in the debugger.<br>
+Click the button and when the debugger breaks, set a breakpoint on the first line in the loop
+(as indicated by the comment), and click continue.<br>
+The debugger should stop at the beggining of the loop.<br>
+The above actions should be performed before <b>each</b> of the following tests.
+<br><br>
+<input type="button" value="run do-while" onclick="initialize();runDoWhile()"/>
+<br><br>
+TEST 1: Click 'continue'. Execution should continue without stopping on the loop breakpoint again.<br>
+TEST 2: Click 'Step over'. Debugger should step inside the loop to the next statement line.
+'Step over' until the debugger reaches the 'while' line. Click 'Step into' - the debugger should
+enter the 'condition' function.<br>
+TEST 3: 'Step over' to the end of the loop (and 'while' statement) and step over again. Debugger
+should go to the beggining of the loop.<br>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-step-on-for-in-statements.html b/Source/WebCore/manual-tests/inspector/debugger-step-on-for-in-statements.html
new file mode 100644
index 0000000..8d6de78
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-step-on-for-in-statements.html
@@ -0,0 +1,35 @@
+<script>
+var myObj = {test : 1};
+function getObject()
+{
+ return myObj;
+}
+
+function statement() {
+ ;
+}
+
+function runForIn()
+{
+ /* place breakpoint on next line and click continue */ debugger;
+ for (var property in getObject())
+ statement();
+}
+
+</script>
+Start a debugging session in the Web Inspector and open this file.
+<br><br>
+Before running the tests please perform the following:
+Make sure the execution is not paused in the debugger.<br>
+Click the button and when the debugger breaks, set a breakpoint on the first line in the loop
+(as indicated by the comment), and click continue.<br>
+The debugger should stop at the beggining of the loop.<br>
+The above actions should be performed before <b>each</b> of the following tests.
+<br><br>
+<input type="button" value="run for-in" onclick="runForIn()"/>
+<br><br>
+TEST 1: Click 'continue'. Execution should continue without stopping on the loop breakpoint again.<br>
+TEST 2: Click 'Step over'. Debugger should step inside the loop to the next statement line.<br>
+TEST 3: Click 'Step into'. Debugger should step into 'getObject' function.<br>
+TEST 4: 'Step over' to the statement line and then 'Step over' again. Debugger should pause on
+the for-in loop again.<br>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-step-on-for-statements.html b/Source/WebCore/manual-tests/inspector/debugger-step-on-for-statements.html
new file mode 100644
index 0000000..d3a50c6
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-step-on-for-statements.html
@@ -0,0 +1,28 @@
+<script src="resources/loop-statements.js"></script>
+<script>
+function runFor()
+{
+ /* place breakpoint on next line and click continue */ debugger;
+ for (initialize(); condition(); increment())
+ statement();
+}
+</script>
+Start a debugging session in the Web Inspector and open this file.
+<br><br>
+Before running the tests please perform the following:
+Make sure the execution is not paused in the debugger.<br>
+Click the button and when the debugger breaks, set a breakpoint on the first line in the loop
+(as indicated by the comment), and click continue.<br>
+The debugger should stop at the beggining of the loop.<br>
+The above actions should be performed before <b>each</b> of the following tests.
+<br><br>
+<input type="button" value="run for" onclick="runFor()"/>
+<br><br>
+TEST 1: Click 'continue'. Execution should continue without stopping on the loop breakpoint again.<br>
+TEST 2: Click 'Step over'. Debugger should step inside the loop to the next statement line.<br>
+TEST 3: Click 'Step into'. Debugger should step into 'initialize' function. Click 'Step into' until
+outside of the 'initialize' function - debugger should enter the 'condition' function.<br>
+TEST 4: 'Step over' to the statement line and then 'Step over' again. Debugger should pause on
+the for loop again. Click 'Step into'. Debugger should step into the 'increment' function.
+Click 'Step into' until outside of the 'increment' function - debugger should enter the 'condition'
+function.<br>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-step-on-while-statements.html b/Source/WebCore/manual-tests/inspector/debugger-step-on-while-statements.html
new file mode 100644
index 0000000..fd077bc
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-step-on-while-statements.html
@@ -0,0 +1,29 @@
+<script src="resources/loop-statements.js"></script>
+<script>
+function runWhile()
+{
+ /* place breakpoint on next line and click continue */ debugger;
+ while (condition()) {
+ statement();
+ increment();
+ }
+}
+
+</script>
+Start a debugging session in the Web Inspector and open this file.
+<br><br>
+Before running the tests please perform the following:
+Make sure the execution is not paused in the debugger.<br>
+Click the button and when the debugger breaks, set a breakpoint on the first line in the loop
+(as indicated by the comment), and click continue.<br>
+The debugger should stop at the beggining of the loop.<br>
+The above actions should be performed before <b>each</b> of the following tests.
+<br><br>
+<input type="button" value="run while" onclick="initialize();runWhile()"/>
+<br><br>
+TEST 1: Click 'continue'. Execution should continue without stopping on the loop breakpoint again.<br>
+TEST 2: Click 'Step over'. Debugger should step inside the loop to the next statement line.<br>
+TEST 3: Click 'Step into'. Debugger should step into 'condition' function.<br>
+TEST 4: 'Step over' the statements until reaching the end of the loop. Debugger should
+step over to the beggingin of the while loop again. Click 'Step into'. Debugger should step into
+the 'condition' function.<br>
diff --git a/Source/WebCore/manual-tests/inspector/debugger-watch-expressions.html b/Source/WebCore/manual-tests/inspector/debugger-watch-expressions.html
new file mode 100644
index 0000000..eb883c9
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/debugger-watch-expressions.html
@@ -0,0 +1,115 @@
+<p>Test for
+<a href="https://bugs.webkit.org/show_bug.cgi?id=27514">Bug 27514 - add support for watched expression</a>.
+
+<p>To begin test, open web inspector, go the scripts panel
+(enabling script debugging if necccessary), and then click this link:
+<a href="javascript:runTest()">[begin test]</a>.
+
+<p>Perform the following steps, and note the expected results:
+
+<ol>
+
+<li><p>After clicking the link above, you should now be paused in the body of
+the test method, thanks to the <code>debugger</code> statement.
+
+<li><p>Add the following expressions to the "Watch Expressions" section of the
+Scripts panel sidebar pane: "<code>this</code>", "<code>a</code>",
+"<code>b</code>", "<code>c</code>" and "<code>d</code>". Do <b>NOT</b> enter the quotes.
+
+<li><p>The values of the expressions as shown in the window should a
+<code>DOMWindow</code> for <code>this</code>, <code>undefined</code> for
+the <code>a</code>, <code>b</code>, and <code>c</code> variables, and a
+value of <code>ReferenceError: Can't find variable: d</code>
+for the <code>d</code> variable.
+
+<li><p>Note that the value for <code>d</code> should not change for the life of
+the test, as the variable <code>d</code> is never introduced in the program.
+
+<li><p>Step through the code, and you'll see the values of <code>a</code>,
+<code>b</code>, and <code>c</code> change, as the variables are assigned.
+Also note that as the scope changes due to the function invocation, values
+will be changed to refer to their current scope. The <code>this</code>
+expression will change when the method is invoked on the object constructed by
+the test.
+
+<li><p>Click different stack frames in the Call Stack section to ensure the
+expressions change value appropriately as the current stack frame changes.
+
+<li><p>Drive the debugger through the end of the outermost function, so that
+the debugger is no longer in paused state. The values of
+<code>a</code>, <code>b</code>, and <code>c</code> should all be a
+ReferenceError like <code>d</code>, since these variables are defined in the
+<code>runTest()</code> function, and the expressions are being evaluated against
+the global object.
+
+<li><p>From the console, execute the statement "<code>a = 1</code>". The
+watch expressions do not currently refresh, so the value for <code>a</code>
+should still be ReferenceError.
+
+<li><p>Click the "Refresh" button in the Watch Expressions section and the
+value for "<code>a</code>" should now be "<code>1</code>".
+
+<li><p>Close down the browser, start it back up, traverse to a web site,
+bring up web inspector, go to the Scripts panel. You should see the same
+set of Watch Expressions in the list as you had when you last used web
+inspector.
+
+<li><p>Delete an expression by moving the mouse into the Watch Expression
+section, and clicking the X icon which appears to the right of an
+expression (on hover).
+
+<li><p>Delete an expression by double-clicking anywhere on a top-level line
+of a watch expression, and changing the expression to an empty string or
+nothing but white-space.
+
+<li><p>Modify an entry by double-clicking anywhere on a top-level line
+of a watch expression, and changing the expression.
+
+<li><p>Enter a new expression, "<code>new Date()</code>". The value should be
+a toString() version of the date. Repeatedly press the Refresh button to see
+the value updated with the current time.
+
+</ol>
+
+<script>
+function runTest() {
+
+ // a nested function
+ function subFunction() {
+ debugger;
+ var a = "a in subFunction()";
+
+ subSubFunction();
+
+ // another nested function
+ function subSubFunction() {
+ debugger;
+ var b = "b in subSubFunction()";
+ }
+ }
+
+ // a class
+ function aClass() {
+ this.x = "xxx";
+ this.y = "yyy";
+ }
+
+ aClass.prototype.aMethod = function() {
+ debugger;
+ var c = "c in aMethod()";
+ }
+
+ // main logic
+ debugger;
+
+ var a = "a in runTest()";
+ var b = "b in runTest()";
+ var c = "c in runTest()";
+
+ subFunction();
+
+ var object = new aClass();
+ object.aMethod();
+
+}
+</script>
diff --git a/Source/WebCore/manual-tests/inspector/display-form-data.html b/Source/WebCore/manual-tests/inspector/display-form-data.html
new file mode 100644
index 0000000..48cd817
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/display-form-data.html
@@ -0,0 +1,249 @@
+<html>
+<head>
+<title>Tests for Bug 22920</title>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
+</head>
+
+<body>
+<p>Tests for
+<ul>
+<li><p><a href="https://bugs.webkit.org/show_bug.cgi?id=22920">Bug 22920: Inspector Request Headers Should Show Data/Variables/Parameters Sent With Request</a>
+<li><p><a href="https://bugs.webkit.org/show_bug.cgi?id=28970">Bug 28970: content-type parameters not taken into account when building form-data</a>
+</ul>
+
+<p>To test, open the Inspector on this page, go to the Resources panel,
+and select the various resources created by this page in the left column of the
+Resources panel. Note that for test-4 ...
+test-11, the -sync and -async versions should show the same Form Data,
+Request Payload and/or Query String Parameter values.
+
+<ul>
+
+<li><p><b>test-1</b>:
+<br>no Form Data, Request Payload or Query String Parameters
+
+<li><p><b>test-2</b>:
+<br>Query String Parameters (1): "parm1: abc"
+
+<li><p><b>test-3</b>:
+<br>Query String Parameters (2): "parm1: def" and "parm2: g h i";
+Hovering over either parm should yield a tooltip:
+<i>"Double-Click to toggle between URL encoded and decoded formats"</i>.
+Double-clicking on either parm should toggle between encoded and decoded
+versions of the string. The decoded form is initially displayed.
+The encoded form of parm2 is "g%20h+i".
+
+<li><p><b>test-4</b>:
+<br>no Form Data, Request Payload or Query String Parameters
+
+<li><p><b>test-5</b>:
+<br>Query String Parameters (1): "parm1: abc"
+
+<li><p><b>test-6</b>:
+<br>Query String Parameters (3): "parm1: def" and "parm2: g h i" and "parm3: jj kk ll"
+
+<li><p><b>test-7</b>:
+<br>Request Payload: 3 lines of text data with a very long 2nd line which should wrap
+
+<li><p><b>test-8</b>:
+<br>Request Payload: 3 lines of text data with a very long 2nd line which should wrap
+
+<li><p><b>test-9</b>:
+<br>Request Payload: 3 lines of text data with a very long 2nd line of binary data which should wrap
+
+<li><p><b>test-10</b>:
+<br>Form Data (1): "parm1: abc"
+
+<li><p><b>test-11</b>:
+<br>Form Data (2): "parm1: def" and "parm2: g h i"
+
+<li><p><b>test-12</b>:
+<br>Query String Parameters (2): "parm1: abc" and "parm2: d e f"
+<br>Form Data (2): "parm1: ghi" and "parm2: j k l"
+
+<li><p><b>test-13</b>:
+<br>Query String Parameters (2): "parm1: &auml;bc" and "parm2: d &#x11B; f"
+<br>Form Data (2): "parm1: ghi" and "parm2: j k l"
+<p>Note that you should view the encoded values of the query string parameters
+by double-clicking on one of the parameters. The values should be:
+<pre>
+parm1: %C3%A4bc
+parm2: d%20%C4%9B+f
+</pre>
+
+<li><p><b>test-14</b>:
+<br>Same results as for test-13, a slightly different but compatible Content-Type
+is used for the form data.
+
+<li><p><b>test-15</b>:
+<br>Query String Parameters (2): "parm1: % (unable to decode value)" and "parm2: % (unable to decode value)",
+with the parenthesized part in red.
+<br>Form Data (2): "parm1: % (unable to decode value)" and "parm2: % (unable to decode value)",
+with the parenthesized part in red.
+<p>Note that you should view the encoded values of the query string parameters
+by double-clicking on one of the parameters. The values for all four parameters should be "%".
+
+<li><p><b>test-form</b>:
+<br>For this test, invoke the form at the bottom of the page
+by pressing the submit button. The Resources panel should have a "test-form"
+resource, with the following data:
+<p>Form Data (2): "field1: value &auml;;b;c" and "field2:value d;&#x11B;;f"
+<p>Note that you should view the encoded values of the query string parameters
+by double-clicking on one of the parameters. The values should be:
+<pre>
+field1: value+%C3%A4%3Bb%3Bc
+field2: value+d%3B%C4%9B%3Bf</pre>
+</ul>
+
+<p><b>test-form</b>
+<form id="form" action="http://example.org/test-form" method="post" enctype="application/x-www-form-urlencoded">
+<span style="font-size:200%">field1:</span> <input style="font-size:200%" type="text" name="field1" value="value &auml;;b;c"><br>
+<span style="font-size:200%">field2:</span> <input style="font-size:200%" type="text" name="field2" value="value d;&#x11B;;f"><br>
+<input type="submit">
+</form>
+
+<div style="display:none">
+
+<img src="http://example.org/test-1">
+<img src="http://example.org/test-2?parm1=abc">
+<img src="http://example.org/test-3?parm1=def&amp;parm2=g%20h+i">
+
+</div>
+
+<hr>
+
+<p><b>NLS sample info</b>
+
+<pre>
+<span style="font-size:300%">&auml;</span> - LATIN SMALL LETTER A WITH DIAERESIS
+Unicode: 0x00E4 == 228
+UTF8: C3 A4
+HTML: &amp;auml;
+
+<span style="font-size:300%">&#x11B;</span> - LATIN SMALL LETTER E WITH CARON
+Unicode: 0x011B == 283
+UTF8: C4 9B
+HTML: &amp;#x11B;
+</pre>
+
+<script>
+
+function getReadyState(num) {
+ switch(num) {
+ case 0: return "uninitialized";
+ case 1: return "loading";
+ case 2: return "loaded";
+ case 3: return "interactive";
+ case 4: return "complete";
+ default: return "unknown: " + num;
+ }
+}
+
+function getProcessXHR(request) {
+ return function() {
+ if (true) return;
+ var rs = getReadyState(request.readyState);
+ console.log("ready state change for " + request.url);
+ console.log(" ready state: " + rs);
+ console.log(" response text: " + request.responseText);
+ if (request.readyState == 4) {
+ console.log(" status: " + request.status);
+ console.log(" status text: " + request.statusText);
+ }
+ }
+}
+
+function sendXHR(url, method, headers, body) {
+ if (!method) method = "GET";
+ if (!headers) headers = [];
+ if (!body) body="";
+
+ // copy headers
+ var headersNew = [];
+ for (var i=0; i<headers.length; i++) {
+ headersNew.push(headers[i]);
+ }
+ headers = headersNew;
+
+ if (body != "") {
+ headers.push(["Content-Length", body.length.toString()]);
+ }
+
+ // sync
+ var req = new XMLHttpRequest();
+
+ req.url = url.replace("^","-sync");
+ req.onreadystatechange = getProcessXHR(req);
+ req.open(method, req.url, false);
+
+ for (var i=0; i<headers.length; i++) {
+ req.setRequestHeader(headers[i][0], headers[i][1]);
+ }
+
+ req.send(body);
+
+ // async
+ var req = new XMLHttpRequest();
+
+ req.url = url.replace("^","-async");
+ req.onreadystatechange = getProcessXHR(req);
+ req.open(method, req.url, true);
+
+ for (var i=0; i<headers.length; i++) {
+ req.setRequestHeader(headers[i][0], headers[i][1]);
+ }
+
+ req.send(body);
+}
+
+var headersPlain = [
+ ["Content-Type", "text/plain"]
+];
+
+var headersForm = [
+ ["Content-Type", "application/x-www-form-urlencoded"]
+];
+
+var headersFormExtra1 = [
+ ["Content-Type", "application/x-www-form-urlencoded;something-else=here"]
+];
+
+var headersFormExtra2 = [
+ ["Content-Type", "application/x-www-form-urlencoded ; something-else=here"]
+];
+
+var headersBinary = [
+ ["Content-Type", "application/octet-stream"]
+];
+
+var longText = "some text with a \n";
+for (var i=0; i<40; i++) {
+ longText += "very-";
+}
+longText += "long\nline in it";
+
+var binaryData = "some text with binary data\n";
+for (var i=0; i<256; i++) {
+ binaryData += String.fromCharCode(i);
+}
+binaryData += "\nin the middle of it";
+
+
+sendXHR("http://example.org/test-4^");
+sendXHR("http://example.org/test-5^?parm1=abc");
+sendXHR("http://example.org/test-6^?parm1=def&parm2=g%20h+i&parm3=jj++kk%20%20ll");
+
+sendXHR("http://example.org/test-7^", "POST", null, longText);
+sendXHR("http://example.org/test-8^", "POST", headersPlain, longText);
+sendXHR("http://example.org/test-9^", "POST", headersBinary, binaryData);
+sendXHR("http://example.org/test-10^", "POST", headersForm, "parm1=abc");
+sendXHR("http://example.org/test-11^", "POST", headersForm, "parm1=def&parm2=g%20h+i");
+sendXHR("http://example.org/test-12^?parm1=abc&parm2=d%20e+f", "POST", headersForm, "parm1=ghi&parm2=j%20k+l");
+sendXHR("http://example.org/test-13^?parm1=%C3%A4bc&parm2=d%20%C4%9B+f", "POST", headersFormExtra1, "parm1=ghi&parm2=j%20k+l");
+sendXHR("http://example.org/test-14^?parm1=%C3%A4bc&parm2=d%20%C4%9B+f", "POST", headersFormExtra2, "parm1=ghi&parm2=j%20k+l");
+sendXHR("http://example.org/test-15^?parm1=%&parm2=%", "POST", headersForm, "parm1=%&parm2=%");
+
+</script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/inspector/display-sql-null.html b/Source/WebCore/manual-tests/inspector/display-sql-null.html
new file mode 100644
index 0000000..1d1403b
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/display-sql-null.html
@@ -0,0 +1,21 @@
+<script>
+ try {
+ var db = openDatabase("InspectorTest", "0.1", "Database for Inspector tests", 200000);
+ db.transaction(function(tx) {
+ tx.executeSql("CREATE TABLE DisplaySQLNull (test TEXT)", [], function(tx) {
+ tx.executeSql("INSERT INTO DisplaySQLNull (test) VALUES (NULL)");
+ })
+ });
+ } catch (e) {
+ }
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=18837">Bug 18837: Database panel fails to display tables if any value is NULL</a>.</p>
+<p>To test:</p>
+<ol>
+ <li>Open the Inspector</li>
+ <li>Go to the Databases panel</li>
+ <li>Click on the <code>DisplaySQLNull</code> table inside the <code>InspectorTest</code> database</li>
+</ol>
+<p>If the contents of the table appear (a single row with the value
+"<code>null</code>" in the <code>test</code> column), you have passed the
+test.</p>
diff --git a/Source/WebCore/manual-tests/inspector/display-sql-transaction-error.html b/Source/WebCore/manual-tests/inspector/display-sql-transaction-error.html
new file mode 100644
index 0000000..da2d310
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/display-sql-transaction-error.html
@@ -0,0 +1,24 @@
+<script>
+ try {
+ var db = openDatabase("InspectorTest", "0.1", "Database for Inspector tests", 200000);
+ db.transaction(function(tx) {
+ tx.executeSql("CREATE TABLE DisplaySQLTransactionError (test TEXT)", []);
+ });
+ } catch (e) {
+ }
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19438">Bug 19438: Transaction errors are never displayed in database query view</a>.</p>
+<p>To test:</p>
+<ol>
+ <li>Open the Inspector</li>
+ <li>Go to the Databases panel</li>
+ <li>Click on the <code>InspectorTest</code> database</li>
+ <li>Enter the following text on the query input line: <code>INSERT INTO DisplaySQLTransactionError (test) VALUES (NULL)</code></li>
+</ol>
+<p>If the line of text you entered remains and an error line is output below
+it, you have passed the test.</p>
+<p>If the line of text you entered disappears and no error line is output, you
+have failed the test.</p>
+<p>If the line of text you entered remains and no error line is output, then
+the test has become invalid and needs to be modified to cause the error
+callback passed by the Inspector to <code>db.transaction</code> to be called.</p>
diff --git a/Source/WebCore/manual-tests/inspector/dom-mutation.html b/Source/WebCore/manual-tests/inspector/dom-mutation.html
new file mode 100644
index 0000000..33e8333
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/dom-mutation.html
@@ -0,0 +1,31 @@
+<script>
+function test1() {
+ document.getElementById("test").src = "resources/mutate-frame.html";
+}
+
+function test2() {
+ document.getElementById("test").src = "resources/mutate-frame-2.html";
+}
+
+var count = 1;
+function run() {
+ var container = document.getElementById("test2");
+ var div = document.createElement("div");
+ div.textContent = "Testing " + (count++);
+ container.appendChild(div);
+ if (count > 10)
+ container.removeChild(container.firstChild);
+}
+
+setInterval(run, 1000);
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=6590">Bug 6590: Web Inspector shows stale DOM tree if the DOM changes after the inspector has loaded</a>.</p>
+<p>To test, open the Inspector and watch the DOM change to match the page. Clicking the buttons will navigate the subframe, and the all the subframe child nodes should change.</p>
+<div style="clear: both">
+<button onclick="test1()">Test Frame 1</button>
+<button onclick="test2()">Test Frame 2</button>
+</div>
+<div style="float: left">
+<iframe id="test" src="resources/mutate-frame.html" width="200" height="300"></iframe>
+</div>
+<div style="float: left; margin-left: 10px;" id="test2"></div>
diff --git a/Source/WebCore/manual-tests/inspector/duplicate-resource-urls.html b/Source/WebCore/manual-tests/inspector/duplicate-resource-urls.html
new file mode 100644
index 0000000..7a9be7e
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/duplicate-resource-urls.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+<title>Tests for Bug 30079</title>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
+</head>
+
+<body>
+<p>Tests for
+<ul>
+<li><p><a href="https://bugs.webkit.org/show_bug.cgi?id=30079">Bug 30079: unselectable resources in resource panel</a>
+</ul>
+
+<p>To test, open the Inspector on this page, go to the Resources panel.
+
+<p>First off, you should be able to actually select each "abc" resource to see
+the HTTP info / content. Bug 30079 didn't allow you to select all of these.
+
+<p>For each of the "abc" resources open the <b>HTTP Information</b> and
+<b>Request Payload</b> tree elements above the content. One of the resources
+will not have a <b>Request Payload</b>.
+
+<p>There should be one each of the following resources:
+
+<ul>
+<li><p>One with a Request Method: GET and no Request Payload
+<li><p>One with a Request Method: POST and Request Payload of "123"
+<li><p>One with a Request Method: POST and Request Payload of "456"
+</ul>
+
+<p>Another change made by this bug was to change the way the drag/drop of
+the resource itself worked. The previous method of handling drag/drop of
+the resource was actually causing the unselectability. So the drag/drop
+of the resources needs to be tested as well.
+
+<ul>
+<li><p>Select one of the resources.
+<li><p>Drag it to an application that can accept text or a link
+<li><p>The application should provide some feedback indicating it will accept
+the drop, but may not
+<li>Drop, and the URL for the resource should be rendered appropriately.
+
+<script>
+
+var xhr;
+
+xhr = new XMLHttpRequest();
+xhr.open("POST", "http://example.org/abc");
+xhr.send("123");
+
+xhr = new XMLHttpRequest();
+xhr.open("POST", "http://example.org/abc");
+xhr.send("456");
+
+xhr = new XMLHttpRequest();
+xhr.open("GET", "http://example.org/abc");
+xhr.send();
+
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector/error-warning-count.html b/Source/WebCore/manual-tests/inspector/error-warning-count.html
new file mode 100644
index 0000000..9f6b9c2
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/error-warning-count.html
@@ -0,0 +1,60 @@
+<script>
+ function clickHandler(errors, warnings)
+ {
+ return function()
+ {
+ for (var i = 0; i < errors; ++i)
+ console.error("Error " + (i + 1));
+ for (var i = 0; i < warnings; ++i)
+ console.warn("Warning " + (i + 1));
+ }
+ }
+
+ function loaded()
+ {
+ var tests = [
+ { errors: 0, warnings: 0 },
+ { errors: 1, warnings: 0 },
+ { errors: 2, warnings: 0 },
+ { errors: 0, warnings: 1 },
+ { errors: 0, warnings: 2 },
+ { errors: 1, warnings: 1 },
+ { errors: 1, warnings: 2 },
+ { errors: 2, warnings: 1 },
+ { errors: 2, warnings: 2 },
+ { errors: 100, warnings: 100 },
+ ];
+
+ for (var i in tests) {
+ var test = tests[i];
+
+ var button = document.createElement("button");
+ var content = "";
+ if (!test.errors && !test.warnings)
+ content = "(nothing)";
+ else {
+ if (test.errors > 0)
+ content += test.errors + " error" + (test.errors != 1 ? "s" : "");
+ if (test.warnings > 0) {
+ if (content.length)
+ content += ", ";
+ content += test.warnings + " warning" + (test.warnings != 1 ? "s" : "")
+ }
+ }
+ button.innerText = content;
+ button.onclick = clickHandler(test.errors, test.warnings);
+ var p = document.createElement("p");
+ p.appendChild(button);
+ document.body.appendChild(p);
+ }
+ }
+</script>
+<body onload="loaded()">
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=18650">Bug 18650:
+Errors/warnings in Inspector should be visible outside of Resources</a>.</p>
+<p>To test, open the Inspector and click one of the buttons below. You should
+see an error and/or warning count in the Inspector's status bar. Clicking on
+the error/warning count should open the Console. Hovering over the
+error/warning count should show you a tooltip that matches the text in the
+button you clicked.</p>
+<p>Note: You must reload the page between each button press.</p>
diff --git a/Source/WebCore/manual-tests/inspector/errors-with-space in-url.html b/Source/WebCore/manual-tests/inspector/errors-with-space in-url.html
new file mode 100644
index 0000000..07e8ee0
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/errors-with-space in-url.html
@@ -0,0 +1,7 @@
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19065">Bug 19065:
+Resources with a space in their URL don't get error/warning bubbles</a>.</p>
+<p>To test, open the Inspector and refresh this page. There should be a red
+bubble with the number "1" in it next to the main resource in the Resources
+panel. Clicking the button below should change the "1" to a "2".</p>
+<p></p></p>
+<button onclick="console.error('hi')">click me</button>
diff --git a/Source/WebCore/manual-tests/inspector/escape-links.html b/Source/WebCore/manual-tests/inspector/escape-links.html
new file mode 100644
index 0000000..5c5f6c0
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/escape-links.html
@@ -0,0 +1 @@
+<html>
diff --git a/Source/WebCore/manual-tests/inspector/forzen-ui-while-paused.html b/Source/WebCore/manual-tests/inspector/forzen-ui-while-paused.html
new file mode 100644
index 0000000..b8d50b0
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/forzen-ui-while-paused.html
@@ -0,0 +1,11 @@
+<script>
+function foo() {
+ var timeout = setTimeout(function() { alert("This should not happen. If you do see this alert, then timers on the page are firing while paused!") }, 0);
+ debugger;
+ clearTimeout(timeout);
+}
+
+setTimeout(foo, 100);
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=20042">Bug 20042: UI frozen when the debugger is paused</a>.</p>
+<p>Open the inspector and start debugging in the Scripts panel. While paused, try to open the Console. The Console should animate open fully.</p>
diff --git a/Source/WebCore/manual-tests/inspector/hidden-evals.html b/Source/WebCore/manual-tests/inspector/hidden-evals.html
new file mode 100644
index 0000000..c507bcd
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/hidden-evals.html
@@ -0,0 +1,118 @@
+
+<p><b>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=30212">Bug 30212</a> - Each JS execution in console adds extra item into "scripts" combo</b>
+
+<p>The following manual test creates functions via <tt>eval()</tt> and the
+<tt>Function()</tt> constructor, some functions are named using the
+<code>//@sourceURL=</code> directive, some aren't. Some contain
+<tt>debugger</tt> commands, some don't.
+
+<p>The functions named <tt>f_named_X</tt> are 'named' via the
+<code>//@sourceURL=</code> directive, the ones named <tt>f_unnamed_X</tt>
+are not. The 'named' functions should show up in the Scripts select element used
+to select a resource/script to view, the 'unnamed' ones should not.
+
+<ul>
+<li><p>open this page with Web Inspector
+<li><p>switch to the Scripts panel, enabling debug if required
+<li><p>the available scripts in the select element should be:
+<ul>
+<li>(program): f_named_1.eval
+<li>(program): f_named_2.eval
+<li>(program): f_named_3.eval
+<li>hidden-evals.html
+</ul>
+<li><p>click this button: <input id=button type=button value="click me">
+<li><p>debugger should stop in the <code>clickHandler</code> function
+<li><p>at this point, start stepping <b>into</b> the code
+<li><p>you should be able to step into functions <code>f_unnamed_1()</code>
+and <code>f_unnamed_2()</code>. There are no resource/scripts in the
+select element that contain these functions, until you actually are paused
+in them. At that point, entries for these functions will be in the select element,
+named: "(program)". After pausing in both functions, there will be two "(program)"
+entries.
+<li><p>you should be able to use the next/prev buttons (to the left of the select element)
+to switch to other resources/scripts that have been opened, including the ones
+containing these functions
+<li><p>you should be able to click on the functions that exist in the 'hidden'
+resources from the Call Stack, and be shown the source; click around the
+stack trace entries to verify
+<li><p>rather than stepping into the <code>f_named_3()</code> call, press the
+resume button
+<li><p>the debugger should stop in <code>f_named_3()</code> because of the
+<code>debugger</code> command
+<li><p>rather than stepping into the <code>f_unnamed_3()</code> call, press the
+resume button
+<li><p>the debugger should stop in <code>f_unnamed_3()</code> because of the
+<code>debugger</code> command. At this point, a third "(program)" entry for
+this function is added to the select element.
+</ul>
+
+<script>
+
+function doNothing() { /* allows multi-line functions, easier to debug */ };
+
+eval([
+ "function f_named_1() {",
+ " doNothing();",
+ " return 'named_1';",
+ "}",
+ "//@sourceURL=f_named_1.eval"
+].join("\n"));
+
+eval([
+ "function f_unnamed_1() {",
+ " doNothing();",
+ " return 'unnamed_1';",
+ "}"
+].join("\n"));
+
+f_named_2 = Function([
+ "",
+ " doNothing();",
+ " return 'named_2';",
+ "//@sourceURL=f_named_2.eval"
+].join("\n"));
+
+f_unnamed_2 = Function([
+ "",
+ " doNothing();",
+ " return 'unnamed_2';"
+].join("\n"));
+
+f_named_3 = Function([
+ "",
+ " debugger;",
+ " doNothing();",
+ " return 'named_3';",
+ "//@sourceURL=f_named_3.eval"
+].join("\n"));
+
+f_unnamed_3 = Function([
+ "",
+ " debugger;",
+ " doNothing();",
+ " return 'unnamed_3';"
+].join("\n"));
+
+var button = document.getElementById("button");
+
+button.addEventListener("click", clickHandler, false);
+
+function clickHandler() {
+ debugger;
+ f_named_1();
+ f_unnamed_1();
+ f_named_2();
+ f_unnamed_2();
+
+ // press "resume" at this point
+ console.log("press resume before calling f_named_3()");
+ f_named_3();
+
+ // press "resume" at this point
+ console.log("press resume before calling f_unnamed_3()");
+ f_unnamed_3();
+}
+
+</script>
+<!-- End -->
diff --git a/Source/WebCore/manual-tests/inspector/highlight-nodes.html b/Source/WebCore/manual-tests/inspector/highlight-nodes.html
new file mode 100644
index 0000000..6712b3a
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/highlight-nodes.html
@@ -0,0 +1,23 @@
+<style>
+.skewed {
+ -webkit-transform:skew(-5deg,-5deg);
+}
+</style>
+<p>This page has basic tests of node highlighting in the inspected page. To tests, load this page, open the inspector and mouseover the nodes in the treeview of the inspector. You should see the highlights happen with the appropriate padding/border/margin/content highlights.</p>
+<div style="padding:10px; border: 10px solid; margin: 10px;">padding:10px; border: 10px; margin: 10px;</div>
+<div style="padding:10px; border: 10px solid;">padding:10px; border: 10px;</div>
+<div style="padding:10px; margin: 10px;">padding:10px; margin: 10px;</div>
+<div style="border: 10px solid; margin: 10px;">border: 10px; margin: 10px;</div>
+<div style="padding:10px">padding:10px;</div>
+<div style="border: 10px solid;">border: 10px;</div>
+<div style="margin: 10px;">margin: 10px;</div>
+<div>no padding, border, or margin</div>
+<div class=skewed style="padding:10px; border: 10px solid; margin: 10px;">-webkit-transform:skew(-5deg,-5deg); padding:10px; border: 10px; margin: 10px;</div>
+<div class=skewed style="padding:10px; border: 10px solid;">-webkit-transform:skew(-5deg,-5deg); padding:10px; border: 10px;</div>
+<div class=skewed style="padding:10px; margin: 10px;">-webkit-transform:skew(-5deg,-5deg); padding:10px; margin: 10px;</div>
+<div class=skewed style="border: 10px solid; margin: 10px;">-webkit-transform:skew(-5deg,-5deg); border: 10px; margin: 10px;</div>
+<div class=skewed style="padding:10px">-webkit-transform:skew(-5deg,-5deg); padding:10px;</div>
+<div class=skewed style="border: 10px solid;">-webkit-transform:skew(-5deg,-5deg); border: 10px;</div>
+<div class=skewed style="margin: 10px;">-webkit-transform:skew(-5deg,-5deg); margin: 10px;</div>
+<div class=skewed >-webkit-transform:skew(-5deg,-5deg); no padding, border, or margin</div>
+
diff --git a/Source/WebCore/manual-tests/inspector/highlight-source-line.html b/Source/WebCore/manual-tests/inspector/highlight-source-line.html
new file mode 100644
index 0000000..2520485
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/highlight-source-line.html
@@ -0,0 +1,4 @@
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19204">Bug 19204: Inspector should highlight source lines when following links to them</a>.</p>
+<p>To test, open the Inspector and reload this page. Then open the Inspector's Console and click the link for the markup error. You should see the line containing the error briefly highlighted in the source view.</p>
+
+<p>This line contains a markup error</i>.</p>
diff --git a/Source/WebCore/manual-tests/inspector/multiple-console-messages.html b/Source/WebCore/manual-tests/inspector/multiple-console-messages.html
new file mode 100644
index 0000000..842e6aa
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/multiple-console-messages.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <script>
+ function generateErrors(number)
+ {
+ for (var i = 0; i < number; ++i)
+ console.error("This is an error.");
+ }
+
+ function generateLogs(number)
+ {
+ for (var i = 0; i < number; ++i)
+ console.log("This is a log.");
+ }
+
+ function generateWarnings(number)
+ {
+ for (var i = 0; i < number; ++i)
+ console.warn("This is a warning.");
+ }
+
+ function generateInfos(number)
+ {
+ for (var i = 0; i < number; ++i)
+ console.info("This is an info.");
+ }
+
+ function startTest()
+ {
+ generateErrors(3);
+ generateLogs(3);
+ generateWarnings(3);
+
+ console.group();
+
+ generateErrors(2);
+ generateLogs(1);
+ generateErrors(2);
+
+ generateLogs(2);
+ generateWarnings(1);
+ generateLogs(2);
+
+ generateWarnings(2);
+ generateErrors(1);
+ generateWarnings(2);
+
+ console.groupEnd();
+
+ generateErrors(1);
+ console.group();
+ generateErrors(1);
+ console.group();
+ generateErrors(1);
+ console.groupEnd();
+ generateErrors(1);
+ console.groupEnd();
+ generateErrors(1);
+
+ console.warn("Same message, different level");
+ console.error("Same message, different level");
+ console.log("Same message, different level");
+ console.info("Same message, different level");
+
+ console.log("Variadic message: %s", "message 1");
+ console.log("Variadic message: %s", "message 2");
+ console.log("Variadic message: %s", "message 3");
+ console.log("Variadic message: %s", "message 4");
+
+ console.warn("Warning and error on same line."); console.error("Warning and error on same line."); console.warn("Warning and error on same line."); console.error("Warning and error on same line.");
+
+ }
+ </script>
+</head>
+<body onload="startTest()">
+This test generates warnings, errors, and logs to test the grouping of repeated
+messages in the Web Inspector. To check this test open the Web Inspector and see
+that there are never any repeated messages that don't have a number next to them.
+<br>
+<br>
+<input type="button" onclick="generateErrors(1)" value="Put Error in Console"></input>
+<br>
+<input type="button" onclick="generateLogs(1)" value="Put Log in Console"></input>
+<br>
+<input type="button" onclick="generateWarnings(1)" value="Put Warning in Console"></input>
+</body>
diff --git a/Source/WebCore/manual-tests/inspector/named-evals.html b/Source/WebCore/manual-tests/inspector/named-evals.html
new file mode 100644
index 0000000..0c52531
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/named-evals.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+<script>
+
+function log(message) {
+ console.log(message)
+}
+
+var funcBody = "(){\n" +
+" var thisFunc = arguments.callee;\n" +
+" if (!thisFunc.name) thisFunc.displayName = 'f%';\n" +
+" log(thisFunc.name || thisFunc.displayName);\n" +
+"}";
+
+var funcs = [];
+var patterns = [
+ // proper use of @sourceURL comment
+ "//@sourceURL=f%.js\nfuncs.push(function" + funcBody + ")",
+ "//@sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
+ " //@sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "// @sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "//@ sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "//@sourceURL =f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "//@sourceURL= f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "//@sourceURL=f%.js \nfuncs.push(function f%" + funcBody + ")",
+ " // @ sourceURL = f%.js \nfuncs.push(function f%" + funcBody + ")",
+ "//@sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ");\n//@sourceURL=should-not-see\n",
+ "funcs.push(function f%" + funcBody + ")\n//@sourceURL=f%.js\n",
+ "funcs.push(function f%" + funcBody + ")\n//@sourceURL=f%.js \n",
+ "funcs.push(function f%" + funcBody + ")\n//@sourceURL=f%.js",
+
+ // improper or non-existant use of @sourceURL comment
+ "funcs.push(function f%" + funcBody + ")",
+ "//@sourceurl=f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "//sourceURL=f%.js\nfuncs.push(function f%" + funcBody + ")",
+ "/*@sourceURL=f%.js*/\nfuncs.push(function f%" + funcBody + ")",
+ "//\nsourceURL='f%.js';\nfuncs.push(function f%" + funcBody + ")",
+ "//@sourceURL=\nfuncs.push(function" + funcBody + ")",
+];
+
+
+for (var i=0; i<patterns.length; i++) {
+ eval(patterns[i].replace(/%/g, i));
+}
+
+</script>
+</head>
+
+<body>
+<p>This page's JavaScript calls functions from named eval()'s.
+
+<p>Used to test <a href="https://bugs.webkit.org/show_bug.cgi?id=25475">https://bugs.webkit.org/show_bug.cgi?id=25475</a>
+
+<p>Load the Web Inspector and look at
+the script's panel, and the script list drop-down control.
+You should see entries for scripts named
+<tt>"(program):f0.js"</tt> through <tt>"(program):f12.js"</tt>. The entries were named
+via proper use of the <tt>//@sourceURL</tt> comment. There will also be entries
+named <tt>"(program)"</tt> for source that does not properly use, or use at all,
+the <tt>//@sourceURL</tt> comment.
+
+<p>Now, set a breakpoint in the body of the <tt>"f0"</tt> function in the
+<tt>"(program):f0.js"</tt> script. Then click this button:
+
+<p><input type="button" value="run" onclick="funcs[0]()">
+
+<p>When stopped at the breakpoint, the entry for the function in the
+call stack control should the name of the script, <tt>"(program):f0.js"</tt>,
+beside the function name <tt>"f0"</tt>. Note the function name for
+<tt>f0</tt> is set with the new <tt>"displayName"</tt> property.
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector/profiler-test-call.html b/Source/WebCore/manual-tests/inspector/profiler-test-call.html
new file mode 100644
index 0000000..572a2e9
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/profiler-test-call.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+<script src="resources/profiler-test-JS-resources.js"></script>
+<script>
+console.profile("Using the call() method");
+function startTest()
+{
+ var myObject = new fakeObject(1, 2);
+ endTest();
+}
+
+function fakeObject (x, y)
+{
+ this.x = x;
+ fakeInteriorFunction.call(this, y);
+}
+
+function fakeInteriorFunction(y)
+{
+ this.y = y;
+}
+
+</script>
+</head>
+
+<body onload="startTest()">
+This page's JavaScript has a call to call() in it.
+<br>
+<br>
+To use this test, load it in the browser then load the WebInspector and look at
+the profile. In the profile there should be a call to fakeObject() with call() as
+its child and a fakeInteriorFunction() as call()'s child.
+<div id="output"></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/inspector/profiler-test-many-calls-in-the-same-scope.html b/Source/WebCore/manual-tests/inspector/profiler-test-many-calls-in-the-same-scope.html
new file mode 100644
index 0000000..da5be42
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/profiler-test-many-calls-in-the-same-scope.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+<script src="resources/profiler-test-JS-resources.js"></script>
+<script>
+console.profile("Many Calls In The Same Scope");
+function startTest()
+{
+ insertNewText();
+ insertGivenText("This was a triumph.");
+ arrayOperatorFunction(7);
+ intermediaryFunction();
+ anonymousFunction();
+ end()
+ endT();
+ endT();
+ endTest();
+}
+
+function end()
+{
+ var x = 0;
+}
+
+function endT()
+{
+ var y = 1;
+}
+
+</script>
+</head>
+
+<body onload="startTest()">
+This page's JavaScript has many function calls in the same scope.
+<br>
+<br>
+To use this test, load it in the browser then load the WebInspector and look at
+the profile. In the profile many functions should be the children of startTest.
+Use the sorting capabilites to make sure the similarly named functions are sorted
+correctly.
+<div id="output"></div>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/inspector/remember-last-script.html b/Source/WebCore/manual-tests/inspector/remember-last-script.html
new file mode 100644
index 0000000..52e7f02
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/remember-last-script.html
@@ -0,0 +1,42 @@
+<style>code{background-color: #ffc;}</style>
+<p><b>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=27552">Bug 27552</a> - remember last script displayed in Scripts panel</b>
+
+<ul>
+<li><p>open this page with Web Inspector, switch to the <b>Scripts</b> panel, enabling debug if required
+<li><p>the available scripts in the select element should be:
+ <ul>
+ <li><b>(program): f1.js</b>
+ <li><b>remember-last-script.html</b>
+ </ul>
+<li><p>select <b>(program): f1.js</b> so the source is available
+<li><p>switch to the <b>Resources</b> panel
+<li><p>close Web Inspector
+<li><p>Repeat the following several times. Each time, <b>(program): f1.js</b>
+should be the selected script:
+ <ul>
+ <li>open Web Inspector, switch to the <b>Scripts</b> panel, then close Web Inspector
+ </ul>
+<li><p>open Web Inspector, switch to the <b>Scripts</b> panel
+<li><p>select <b>remember-last-script.html</b> so the source is available
+<li><p>Repeat the following several times. Each time, <b>remember-last-script.html</b>
+should be the selected script:
+ <ul>
+ <li>open Web Inspector, switch to the <b>Scripts</b> panel, then close Web Inspector
+ </ul>
+</ul>
+
+<script>
+
+f1 = Function([
+ "",
+ " doNothing();",
+ "//@sourceURL=f1.js"
+].join("\n"));
+
+function doNothing() { /* allows multi-line functions, easier to debug */ };
+
+doNothing();
+f1();
+
+</script>
+<!-- End -->
diff --git a/Source/WebCore/manual-tests/inspector/resources/loop-statements.js b/Source/WebCore/manual-tests/inspector/resources/loop-statements.js
new file mode 100644
index 0000000..cbb4e0d
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/resources/loop-statements.js
@@ -0,0 +1,22 @@
+var i;
+var a;
+
+function initialize()
+{
+ i = false;
+}
+
+function condition()
+{
+ return !i;
+}
+
+function increment()
+{
+ i = !i;
+}
+
+function statement()
+{
+ a = i;
+}
diff --git a/Source/WebCore/manual-tests/inspector/resources/mutate-frame-2.html b/Source/WebCore/manual-tests/inspector/resources/mutate-frame-2.html
new file mode 100644
index 0000000..9d413b9
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/resources/mutate-frame-2.html
@@ -0,0 +1,12 @@
+<script>
+var count = 1;
+function run() {
+ var div = document.createElement("div");
+ div.textContent = "Testing " + (count++);
+ document.body.appendChild(div);
+ if (count > 10)
+ document.body.removeChild(document.body.firstChild);
+}
+
+setInterval(run, 1000);
+</script>
diff --git a/Source/WebCore/manual-tests/inspector/resources/mutate-frame.html b/Source/WebCore/manual-tests/inspector/resources/mutate-frame.html
new file mode 100644
index 0000000..08fc656
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/resources/mutate-frame.html
@@ -0,0 +1,10 @@
+<script>
+var count = 1;
+function run() {
+ var div = document.createElement("div");
+ div.textContent = "Testing " + (count++);
+ document.body.appendChild(div);
+}
+
+setInterval(run, 1000);
+</script>
diff --git a/Source/WebCore/manual-tests/inspector/resources/script-console-calls.js b/Source/WebCore/manual-tests/inspector/resources/script-console-calls.js
new file mode 100644
index 0000000..9c7bc35
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/resources/script-console-calls.js
@@ -0,0 +1,8 @@
+console.info("Test console.info");
+console.log("Test console.log");
+console.warn("Test console.warn");
+console.error("Test console.error");
+console.time("Test console.time");
+console.timeEnd("Test console.time");
+console.count("Test console.count");
+console.assert(false, "Test console.assert");
diff --git a/Source/WebCore/manual-tests/inspector/resources/script-error.js b/Source/WebCore/manual-tests/inspector/resources/script-error.js
new file mode 100644
index 0000000..c8be5ea
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/resources/script-error.js
@@ -0,0 +1,6 @@
+var test = document.body;
+this.will.be.an.error = 1;
+
+function test() {
+ return 42;
+}
diff --git a/Source/WebCore/manual-tests/inspector/returnEvent-crash.html b/Source/WebCore/manual-tests/inspector/returnEvent-crash.html
new file mode 100644
index 0000000..5dd1119
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/returnEvent-crash.html
@@ -0,0 +1,17 @@
+<script>
+ function test2() {
+ var y = 6;
+ y += 3;
+ return y;
+ }
+
+ function test() {
+ var x = 5;
+ eval("test2()");
+ x += 6;
+ return x;
+ }
+</script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=19038">Bug 19038: Crash in JavaScriptDebugServer::returnEvent when inspecting an attached Inspector</a>.</p>
+<p>To test, open and attach the Inspector's debugger, then click the button below. If you don't crash, you have passed the test.</p>
+<button onclick="test()">click me</button>
diff --git a/Source/WebCore/manual-tests/inspector/styled-error-bubbles-in-scripts.html b/Source/WebCore/manual-tests/inspector/styled-error-bubbles-in-scripts.html
new file mode 100644
index 0000000..0049cef
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/styled-error-bubbles-in-scripts.html
@@ -0,0 +1,6 @@
+<script src="resources/script-error.js"></script>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=20345">Bug 19065:
+Error bubbles are clobbered when syntax highlighting JavaScript resources</a>.</p>
+<p>To test, open the Inspector. There should be a red bubble with the number "1"
+in it next to the the only script resource in the Resources panel. Clicking the
+resource should show syntax highlighted JavaScript with a red error bubble.</p>
diff --git a/Source/WebCore/manual-tests/inspector/webinspector-log.html b/Source/WebCore/manual-tests/inspector/webinspector-log.html
new file mode 100644
index 0000000..cdc5663
--- /dev/null
+++ b/Source/WebCore/manual-tests/inspector/webinspector-log.html
@@ -0,0 +1,22 @@
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=28047">Bug 28047: add utility method to enable logging messages for inspector development</a>.</p>
+
+<ul>
+<li>Open a browser, go to any web page.
+<li>Open web inspector
+<li>Open the console panel
+<li>Open a web inspector on the web inspector
+<li>Open that inspector's console panel
+<li>In that panel, run the code:
+<pre>
+ WebInspector.log("hello, world")
+</pre>
+</ul>
+
+<p>Results:
+<br>In the original inspector window, there should now be a message
+in the console with the text "hello, world". There will be a blue
+maginifying glass icon to the left of the message. Run the same
+command again, and you should see the repeat count go to 2.
+The message and repeat count are blue.
+
+
diff --git a/Source/WebCore/manual-tests/interrupted-compound-transform.html b/Source/WebCore/manual-tests/interrupted-compound-transform.html
new file mode 100644
index 0000000..7dafb73
--- /dev/null
+++ b/Source/WebCore/manual-tests/interrupted-compound-transform.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Interrupted Transitions on Transform Test</title>
+ <style type="text/css" media="screen">
+ #container {
+ width: 400px;
+ height: 400px;
+ margin: 20px;
+ border: 1px solid black;
+ -webkit-perspective: 800;
+ }
+ #tester {
+ width: 300px;
+ height: 300px;
+ margin: 50px;
+ background-color: blue;
+ -webkit-transition: -webkit-transform 3s linear;
+ -webkit-transform: rotateX(65deg) translateZ(75px) rotateZ(0deg);
+ -webkit-transform-style: preserve-3d;
+ }
+ #pos1 {
+ position:absolute;
+ width: 300px;
+ height: 300px;
+ margin: 50px;
+ border: 2px solid #F00;
+ -webkit-transform: rotateX(65deg) translateZ(75px) rotateZ(118deg);
+ -webkit-transform-style: preserve-3d;
+ }
+ #pos2 {
+ position:absolute;
+ width: 300px;
+ height: 300px;
+ margin: 50px;
+ border: 2px solid #0F0;
+ -webkit-transform: rotateX(65deg) translateZ(75px) rotateZ(80deg);
+ -webkit-transform-style: preserve-3d;
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ function setAngle(index)
+ {
+ var tester = document.getElementById('tester');
+ tester.style.webkitTransform = "rotateX(65deg) translateZ(75px) rotateZ(" + index + "deg)";
+ }
+
+ function runTest()
+ {
+ window.setTimeout(function() {
+ setAngle(240);
+ }, 0);
+
+ window.setTimeout(function() {
+ setAngle(80);
+ }, 1500);
+ }
+ window.addEventListener('load', runTest, false);
+ </script>
+</head>
+<body>
+In this test you should see a blue diamond spinning in the clockwise direction. After 1.5 seconds it should stop
+close to the red outlne and then spin counterclockwise. After 3 more seconds it should stop close to the
+position of the green outline.
+(see: <a href="https://bugs.webkit.org/show_bug.cgi?id=26162">https://bugs.webkit.org/show_bug.cgi?id=26162)</a>
+<div id="container">
+ <div id="pos1">
+ </div>
+ <div id="pos2">
+ </div>
+ <div id="tester">
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/invalid-mouse-event.html b/Source/WebCore/manual-tests/invalid-mouse-event.html
new file mode 100644
index 0000000..e76bbe5
--- /dev/null
+++ b/Source/WebCore/manual-tests/invalid-mouse-event.html
@@ -0,0 +1,23 @@
+<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=8272">bug 8272</a>:
+Use of window.open & window.close can cause crash.</p>
+<ol>
+ <li>(Get a dual processor Mac.)</li>
+ <li>Disable popup blocking in Safari.</li>
+ <li>Click the Start button.</li>
+ <li>As the test runs, move the mouse around.</li>
+ <li>If Safari doesn't crash in a while, interrupt the test by pressing Cmd+W.</li>
+</ol>
+
+<button onclick="window.open('invalid-mouse-event.html?2', '', '');">Start</button>
+
+<script>
+
+if (location.search) {
+ if (location.search == "?1") {
+ window.opener.location = window.opener.location;
+ window.close();
+ } else {
+ window.open('invalid-mouse-event.html?1', '', '');
+ }
+}
+</script>
diff --git a/Source/WebCore/manual-tests/item-background.html b/Source/WebCore/manual-tests/item-background.html
new file mode 100644
index 0000000..d9d3b07
--- /dev/null
+++ b/Source/WebCore/manual-tests/item-background.html
@@ -0,0 +1,155 @@
+<style>
+ div.container { float: left; background-color: #eee; padding: 4px; margin: 4px; }
+ div.swatch { width: 14px; height: 14px; background-color: white; position: relative; }
+ div.swatch div { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+ select { display: block; margin-left: 14px; margin-bottom: 1px; }
+
+ div.container.white > select,
+ div.container.white > div.swatch > div
+ { background-color: white; }
+
+ div.container.black > select,
+ div.container.black > div.swatch > div
+ { background-color: black; }
+
+ div.container.initial > select,
+ div.container.initial > div.swatch > div
+ { background-color: initial; }
+
+ div.container.semiblue > select,
+ div.container.semiblue > div.swatch > div
+ { background-color: rgba(0, 0, 255, 0.5); }
+
+ .solid { background-color: red; }
+ .reddish { background-color: rgba(255, 0, 0, 0.75); }
+ .semigreen { background-color: rgba(0, 255, 0, 0.5); }
+ .darken { background-color: rgba(0, 0, 0, 0.67); }
+</style>
+<p>
+ <strong>This test is for Windows only.</strong>
+ When you pull down each menu, the items&rsquo; background colors should match up with the swatches on the left (except for the hovered item).
+</p>
+<div class="container white">
+ Solid white menu:
+ <select>
+ <option>Default (transparent) option</option>
+ <option class="solid">Solid red option</option>
+ <option class="reddish">25% transparent red option</option>
+ <option class="semigreen">50% transparent green option</option>
+ <option class="darken">33% transparent black option</option>
+ </select>
+ <div class="swatch"></div>
+ <div class="swatch">
+ <div>
+ <div class="solid"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="reddish"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="semigreen"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="darken"></div>
+ </div>
+ </div>
+</div>
+<div class="container black">
+ Solid black menu:
+ <select>
+ <option>Default (transparent) option</option>
+ <option class="solid">Solid red option</option>
+ <option class="reddish">25% transparent red option</option>
+ <option class="semigreen">50% transparent green option</option>
+ <option class="darken">33% transparent black option</option>
+ </select>
+ <div class="swatch"></div>
+ <div class="swatch">
+ <div>
+ <div class="solid"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="reddish"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="semigreen"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="darken"></div>
+ </div>
+ </div>
+</div>
+<div class="container initial">
+ Transparent menu:
+ <select>
+ <option>Default (transparent) option</option>
+ <option class="solid">Solid red option</option>
+ <option class="reddish">25% transparent red option</option>
+ <option class="semigreen">50% transparent green option</option>
+ <option class="darken">33% transparent black option</option>
+ </select>
+ <div class="swatch"></div>
+ <div class="swatch">
+ <div>
+ <div class="solid"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="reddish"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="semigreen"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="darken"></div>
+ </div>
+ </div>
+</div>
+<div class="container semiblue">
+ 50% blue menu:
+ <select>
+ <option>Default (transparent) option</option>
+ <option class="solid">Solid red option</option>
+ <option class="reddish">25% transparent red option</option>
+ <option class="semigreen">50% transparent green option</option>
+ <option class="darken">33% transparent black option</option>
+ </select>
+ <div class="swatch"></div>
+ <div class="swatch">
+ <div>
+ <div class="solid"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="reddish"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="semigreen"></div>
+ </div>
+ </div>
+ <div class="swatch">
+ <div>
+ <div class="darken"></div>
+ </div>
+ </div>
+</div>
diff --git a/Source/WebCore/manual-tests/java-string-object-type.html b/Source/WebCore/manual-tests/java-string-object-type.html
new file mode 100644
index 0000000..ef74626
--- /dev/null
+++ b/Source/WebCore/manual-tests/java-string-object-type.html
@@ -0,0 +1,24 @@
+<html>
+<body onload="test();">
+<script>
+function test()
+{
+ document.getElementById("results").innerHTML =
+ "<p>Type of Java String object is: " + typeof(document.getElementById('applet').getString());
+}
+</script>
+
+<p>This test verifies that Java String objects are of the correct type when returned to JavaScript.</p>
+
+<p>On success, the Java String object will be of type &quot;object&quot;.<br/>
+On failure, the type will be &quot;function&quot;.<br/>
+See Radar 4212626.</p>
+
+<div id="results">
+</div>
+
+<APPLET id="applet" code="StringTypeTest.class" codebase="resources" width="0" height="0">
+</APPLET>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/js-timers-beneath-modal-dialog.html b/Source/WebCore/manual-tests/js-timers-beneath-modal-dialog.html
new file mode 100644
index 0000000..6d5f2c7
--- /dev/null
+++ b/Source/WebCore/manual-tests/js-timers-beneath-modal-dialog.html
@@ -0,0 +1,19 @@
+<p>JS timers should be paused while a modal dialog (or alert) is displayed.</p>
+<p>Please disable popup blocker for this test.</p>
+<div>0</div>
+<script>
+function f()
+{
+ var d = document.getElementsByTagName("div")[0];
+ d.innerHTML = parseInt(d.innerHTML) + 1;
+}
+
+var timerId = setInterval(f, 100);
+
+alert("Numbers in main window should not increase while this alert is displayed");
+showModalDialog("data:text/html,<p>Numbers in main window should not increase while this modal dialog is displayed</p>");
+document.getElementsByTagName("div")[0].innerHTML = "DONE";
+
+clearInterval(timerId);
+
+</script>
diff --git a/Source/WebCore/manual-tests/keep_spelling_markers.html b/Source/WebCore/manual-tests/keep_spelling_markers.html
new file mode 100644
index 0000000..7e1d964
--- /dev/null
+++ b/Source/WebCore/manual-tests/keep_spelling_markers.html
@@ -0,0 +1,24 @@
+<html><body>
+<h4>Test 1 - Check for hang (was bug #4836034)</h4>
+<ol>
+<li>open this in Blot or Safari</li>
+<li>click before the word "One" in the editable text, below</li>
+<li>repeatedly type cmd-; to advance to the next misspelling</li>
+<li>confirm that you can wrap back to the first misspelling without hanging</li>
+</ol>
+<h4>Test 2 - Check that markings are retained (was bug #4204892)</h4>
+<ol>
+<li>turn on Check Spelling as You Type from Edit-&gt;Spelling menu</li>
+<li>click on each of the misspelled words in the line at the bottom of this page</li>
+<p>&nbsp;&nbsp;(result should be that each misspelled word now has a red squiggly line below it)
+<li>control-click on &#147;foor&#148; in that sentence</li>
+<li>select a corrected spelling from the popup, e.g.&#147;four&#148;</li>
+<li>make sure that no other misspellings lost their red squiggly underline</li>
+</ol>
+<hr>
+<div contenteditable>
+One twwo three foor five siz seven
+<div></br></div>
+<div>eight nine ten</div>
+</div>
+</body></html>
diff --git a/Source/WebCore/manual-tests/keyboard-menukey-event.html b/Source/WebCore/manual-tests/keyboard-menukey-event.html
new file mode 100644
index 0000000..bd2c8e7
--- /dev/null
+++ b/Source/WebCore/manual-tests/keyboard-menukey-event.html
@@ -0,0 +1,31 @@
+<html lang="en">
+ <head>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+ <title>Menu key testing</title>
+ <script language="javascript" type="text/javascript">
+ function log(str) {
+ var li = document.createElement("li");
+ li.appendChild(document.createTextNode(str));
+ var results = document.getElementById("results");
+ results.appendChild(li);
+ }
+ </script>
+ </head>
+ <body>
+ <p>
+ See bug: <a href="https://bugs.webkit.org/show_bug.cgi?id=30619">30619</a>.
+ Note: this test is only applicable for Linux and Windows.
+ </p>
+ <ol>
+ <li>Click the text input box below and press Menu key.
+ The test passes if you see 'PASS' below.
+ <input type="text" oncontextmenu="log('PASS');" />
+ </li>
+ <li oncontextmenu="log('PASS');">Click or select somewhere
+ in this text and press Menu key.
+ The test passes if you see additional 'PASS' below.
+ </li>
+ </ol>
+ <ul id="results"></ul>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html b/Source/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html
new file mode 100644
index 0000000..8e3c102
--- /dev/null
+++ b/Source/WebCore/manual-tests/keyboard_select_elements_with_same_beginning.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+<title>
+Test select on elements with same beginning letter
+</title>
+</head>
+<body>
+See bug:<a href="https://bugs.webkit.org/show_bug.cgi?id=28205">28205</a>.
+<p>
+Click the drop-down to show selections (not navigate to the selection box).
+Type the first letter 'A' to go to the elements start with 'A'.
+It should select the first item starts with 'A'.
+In windows, Continue typing 'A', it should continue to select the next item starts with 'A'.
+<p>
+<select name="selOrigin">
+ <option value="">Select Station</option>
+ <option value="37169_NJCL">Aberdeen Matawan</option>
+ <option value="2_ATLC">Absecon</option>
+ <option value="3_MNBN">Allendale</option>
+ <option value="4_NJCL">Allenhurst</option>
+ <option value="12_MNE">Basking Ridge</option>
+ <option value="13_NJCL">Bay Head</option>
+ <option value="14_BNTN">Bay Street</option>
+ <option value="15_NJCL">Belmar</option>
+</select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/keyboard_select_non_english.html b/Source/WebCore/manual-tests/keyboard_select_non_english.html
new file mode 100644
index 0000000..d06ef97
--- /dev/null
+++ b/Source/WebCore/manual-tests/keyboard_select_non_english.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+<title>
+Test select non English element
+</title>
+</head>
+<body>
+See bug:<a href="https://bugs.webkit.org/show_bug.cgi?id=25899">25899</a>.
+<p>
+Choose the correct input method. Open the select element then type the first
+letter of one of the elements. The search prefix should be the first non English
+letter, not the value of the physical keyboard plus the native non English
+letter. For example, set the input method as Hebrew, hit keyboard 'c', the
+translated Hebrew character is 'ב'. The search prefix should be 'ב', not "cב".
+And the right element should be selected.
+<p>
+
+Hebrew Select:
+<select style="direction:rtl">
+ <option>×××</option>
+ <option>בבב</option>
+ <option>×’×’×’</option>
+ <option>דדדד מילה ערוכה מ×וד, כדי שיהיה ×פשר לר×ות יישור</option>
+</select>
+
+Russian Select:
+<select>
+ <option>фиÑв</option>
+ <option>уап</option>
+ <option>ршол</option>
+ <option>дьт</option>
+</select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/korean-input-space.html b/Source/WebCore/manual-tests/korean-input-space.html
new file mode 100644
index 0000000..c8ccf39
--- /dev/null
+++ b/Source/WebCore/manual-tests/korean-input-space.html
Binary files differ
diff --git a/Source/WebCore/manual-tests/large-size-image-crash.html b/Source/WebCore/manual-tests/large-size-image-crash.html
new file mode 100644
index 0000000..93cafa2
--- /dev/null
+++ b/Source/WebCore/manual-tests/large-size-image-crash.html
@@ -0,0 +1,6 @@
+<html>
+ <body>
+ Displaying the animated GIF below should not result in memory corruption.
+ <img src="resources/large-size-image-crash.gif">
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/layoutroot_detach.xml b/Source/WebCore/manual-tests/layoutroot_detach.xml
new file mode 100644
index 0000000..3a64c01
--- /dev/null
+++ b/Source/WebCore/manual-tests/layoutroot_detach.xml
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<body onload="addImg()">
+<style>
+.killme { display:none }
+</style>
+<div style="overflow:hidden; position:absolute; width:150px; height:150px; top:50px; left:0px">
+ <div id='parent' style="overflow:hidden; position:absolute; width:150px; height:150px; top:50px; left:0px">
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <g>
+ <rect id='rrr' x='0' y='0' width='10' height='10'/>
+ </g>
+ </svg>
+ </div>
+</div>
+<script>
+function boomie() {
+ document.body.offsetTop;
+ document.getElementById('rrr').setAttribute('x', '20');
+ document.getElementById('parent').className='killme';
+}
+function addImg() {
+ window.setTimeout(function() {
+ var i = new Image();
+ i.src = 'http://www.webkit.org/nosuchfile.png';
+ document.body.appendChild(i);
+ i.onerror = boomie;
+ }, 15);
+}
+</script>
+</body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/left-overflow-repaint.html b/Source/WebCore/manual-tests/left-overflow-repaint.html
new file mode 100644
index 0000000..5616c4b
--- /dev/null
+++ b/Source/WebCore/manual-tests/left-overflow-repaint.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=7916">Bugzilla bug 7916</a> Box repaint rect does not include the left overflow</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Scroll and resize the window as necessary to bring the three test cases below into view.
+Press each Test button once. Do not scroll, resize, or hide the window or switch to another
+tab.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+In each test, &ldquo;Lorem&rdquo; will move down along with &ldquo;ipsum&rdquo;.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+&ldquo;Lorem&rdquo; will stay behind as &ldquo;ipsum&rdquo; moves down.
+</p>
+
+<div style="height: 120px">
+ <p>
+ <button onclick="document.getElementById('t').style.marginTop = '2em'">
+ Test 1
+ </button>
+ Move block with left overflow
+ </p>
+ <div id="t" style="text-indent: -50px; background: silver; margin-left: 50px;">
+ Lorem ipsum
+ </div>
+</div>
+<hr>
+<div style="height: 120px">
+ <p>
+ <button onclick="document.getElementById('u').style.lineHeight = '3'">
+ Test 2
+ </button>
+ </p>
+ Move line with left overflow
+ <div style="text-indent: -50px; background: silver; margin-left: 50px;">
+ Lorem <span id="u">ipsum</span>
+ </div>
+</div>
+<hr>
+<div style="height: 120px">
+ <p>
+ <button onclick="document.getElementById('v').style.height = '3em'">
+ Test 3
+ </button>
+ Change height of table cell with left overflow
+ </p>
+ <table style="margin-left: 50px;"><tr>
+ <td id="v" style="text-indent: -50px; background: silver;">
+ Lorem ipsum
+ </td></tr></table>
+</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/link-cursor-auto.html b/Source/WebCore/manual-tests/link-cursor-auto.html
new file mode 100644
index 0000000..b978b4b
--- /dev/null
+++ b/Source/WebCore/manual-tests/link-cursor-auto.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/5551163">5551163</a> REGRESSION: Cursor does not change to arrow on "X" button in google maps, making it hard to click</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Move the mouse over the link below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The mouse pointer will change to an index finger.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The mouse pointer will change to a wristwatch.
+</p>
+
+<span style="cursor: wait;"><a href="#">This is the link</a></span>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/linkjump-1.html b/Source/WebCore/manual-tests/linkjump-1.html
new file mode 100644
index 0000000..0af0fe6
--- /dev/null
+++ b/Source/WebCore/manual-tests/linkjump-1.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4304213">4304213</a> sometimes have to click twice to jump to top, on href=""</p>
+<b>As of 01-31-2006, this bug has NOT been fixed.</b>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click through the numbered links on this page.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Page will scroll to the top after clicking link #3.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Page will scroll to the top after clicking link #3. Clicking this link twice might take you to the top of the page (but that is the bug).
+
+</p>
+
+<div><a href="#foo">1. click here</a></div>
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+</p>
+
+<div id="foo"><a href="#foo2">2. click here</a></div>
+
+<p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P><p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P>
+
+
+<div id="foo2"><a href="">3. click here (page should scroll to the top)</a></div>
+
+
+<p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.</P>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/linkjump-2.html b/Source/WebCore/manual-tests/linkjump-2.html
new file mode 100644
index 0000000..03eee77
--- /dev/null
+++ b/Source/WebCore/manual-tests/linkjump-2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG IDs:</b></p>
+<a href="rdar://4233844">4233844</a> in some cases, HTML href named anchors don't scroll to the right place<br>
+<a href="rdar://problem/4246096">4246096</a> REGRESSION links to named anchors don't scroll to the right place (4825)
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Manually resize window to about 800 x 600. Click on the links below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Page will scroll as indicated.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Page will NOT scroll, or will not scroll to the position indicated.
+</p>
+
+<a href="#0">1. Click here. Page should scroll to TARGET TEXT.</a>
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum consectetuer nulla a ligula. Vestibulum aliquet neque ac nunc. Sed ornare, ipsum sed blandit iaculis, nulla urna suscipit felis, id elementum dolor mi ac velit. Etiam quis velit vitae felis pretium venenatis. Donec lobortis, dui eget imperdiet tristique, velit pede rhoncus sapien, sed interdum quam felis mattis lectus. Sed quis sem. Curabitur pharetra felis eu eros suscipit egestas. Aenean tempus varius urna. Ut dolor. Fusce sem dolor, facilisis et, mollis ac, adipiscing ac, ipsum. Morbi fringilla, diam eget tincidunt consectetuer, mauris lectus vulputate quam, id ornare enim magna in pede. Vivamus commodo, sapien eget aliquam convallis, purus eros blandit libero, eget viverra diam nibh vel mi. Duis iaculis mollis ipsum. Duis accumsan posuere urna. Cras tempus. Pellentesque eu ante. Vestibulum nunc erat, tempus id, nonummy et, ullamcorper ac, odio. Aenean tincidunt enim sed ligula pellentesque lobortis. Donec pellentesque luctus nisl. Maecenas blandit lacus et lacus.
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum consectetuer nulla a ligula. Vestibulum aliquet neque ac nunc. Sed ornare, ipsum sed blandit iaculis, nulla urna suscipit felis, id elementum dolor mi ac velit. Etiam quis velit vitae felis pretium venenatis. Donec lobortis, dui eget imperdiet tristique, velit pede rhoncus sapien, sed interdum quam felis mattis lectus. Sed quis sem. Curabitur pharetra felis eu eros suscipit egestas. Aenean tempus varius urna. Ut dolor. Fusce sem dolor, facilisis et, mollis ac, adipiscing ac, ipsum. Morbi fringilla, diam eget tincidunt consectetuer, mauris lectus vulputate quam, id ornare enim magna in pede. Vivamus commodo, sapien eget aliquam convallis, purus eros blandit libero, eget viverra diam nibh vel mi. Duis iaculis mollis ipsum. Duis accumsan posuere urna. Cras tempus. Pellentesque eu ante. Vestibulum nunc erat, tempus id, nonummy et, ullamcorper ac, odio. Aenean tincidunt enim sed ligula pellentesque lobortis. Donec pellentesque luctus nisl. Maecenas blandit lacus et lacus.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum consectetuer nulla a ligula. Vestibulum aliquet neque ac nunc. Sed ornare, ipsum sed blandit iaculis, nulla urna suscipit felis, id elementum dolor mi ac velit. Etiam quis velit vitae felis pretium venenatis. Donec lobortis, dui eget imperdiet tristique, velit pede rhoncus sapien, sed interdum quam felis mattis lectus. Sed quis sem. Curabitur pharetra felis eu eros suscipit egestas. Aenean tempus varius urna. Ut dolor. Fusce sem dolor, facilisis et, mollis ac, adipiscing ac, ipsum. Morbi fringilla, diam eget tincidunt consectetuer, mauris lectus vulputate quam, id ornare enim magna in pede. Vivamus commodo, sapien eget aliquam convallis, purus eros blandit libero, eget viverra diam nibh vel mi. Duis iaculis mollis ipsum. Duis accumsan posuere urna. Cras tempus. Pellentesque eu ante. Vestibulum nunc erat, tempus id, nonummy et, ullamcorper ac, odio. Aenean tincidunt enim sed ligula pellentesque lobortis. Donec pellentesque luctus nisl. Maecenas blandit lacus et lacus.
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum consectetuer nulla a ligula. Vestibulum aliquet neque ac nunc. Sed ornare, ipsum sed blandit iaculis, nulla urna suscipit felis, id elementum dolor mi ac velit. Etiam quis velit vitae felis pretium venenatis. Donec lobortis, dui eget imperdiet tristique, velit pede rhoncus sapien, sed interdum quam felis mattis lectus. Sed quis sem. Curabitur pharetra felis eu eros suscipit egestas. Aenean tempus varius urna. Ut dolor. Fusce sem dolor, facilisis et, mollis ac, adipiscing ac, ipsum. Morbi fringilla, diam eget tincidunt consectetuer, mauris lectus vulputate quam, id ornare enim magna in pede. Vivamus commodo, sapien eget aliquam convallis, purus eros blandit libero, eget viverra diam nibh vel mi. Duis iaculis mollis ipsum. Duis accumsan posuere urna. Cras tempus. Pellentesque eu ante. Vestibulum nunc erat, tempus id, nonummy et, ullamcorper ac, odio. Aenean tincidunt enim sed ligula pellentesque lobortis.
+<a name="0">
+</a>
+TARGET TEXT
+<p><a href="#anchor">2. Click here. Page should scroll just a little bit, to the top of the red box below.</a></p>
+<a name="anchor"></a>
+<div style="width:100%; border:1px red solid; height:1000px;"></div>
+
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/linkjump-3.html b/Source/WebCore/manual-tests/linkjump-3.html
new file mode 100644
index 0000000..64e46c0
--- /dev/null
+++ b/Source/WebCore/manual-tests/linkjump-3.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=6916">Bugzilla 6916</a> REGRESSION: URLs with named anchors in a page don't jump to proper location in document</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Manually resize window to about 800 x 600. Click the link below.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Page will scroll down to the dashed line.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Page will scroll to the bottom, or to some other unexpected area of the page.
+</p>
+
+<div>Clicking <a href="#link">link</a> should move page down to the dashes, not to the end of the page.</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<font face="arial,sans-serif" size="2"><a name="link"></a>
+<div>--------------</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+<div>blah blah blah</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/linkjump-4.html b/Source/WebCore/manual-tests/linkjump-4.html
new file mode 100644
index 0000000..733277a
--- /dev/null
+++ b/Source/WebCore/manual-tests/linkjump-4.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4247537">4247537</a> link jumping should scroll to tallest object on line, not first object on line</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Manually resize window to about 800 x 600. Click the links in this document.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+After clicking a link, the page should always scroll to the top of the green box.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+After clicking a link, page scrolls to some unexpected area.
+</p>
+
+<div><a href="#foo">1. click to test</a></div>
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+</p>
+
+** The top of this box <img id="foo" style="height: 200px; width: 100px; background-color: green"> should be aligned to the top of the window **
+
+<div><a href="#foo2">2. click to test</a></div>
+
+
+<p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Curabitur facilisis pede nec arcu. Proin ut turpis. Maecenas quam nulla, dapibus vel, accumsan non, volutpat quis, tellus. Suspendisse consectetuer augue in mauris. Duis consequat pede sit amet dolor. Nulla vestibulum enim auctor felis tincidunt sodales. Nullam lobortis massa eu magna. Ut nonummy leo porta quam. Proin dignissim, ante ut aliquet dignissim, est odio aliquet lacus, eu sodales quam arcu ornare urna. Fusce arcu erat, vulputate pulvinar, dapibus luctus, volutpat quis, metus. Mauris eu massa. Praesent eget tortor eget arcu fringilla feugiat. Mauris posuere, risus nec blandit ultrices, enim odio tincidunt tortor, non bibendum elit mi non justo. Fusce tristique lacinia est. Maecenas est sem, eleifend a, fermentum et, interdum non, elit. Etiam sem. Vestibulum ultricies velit. Vivamus a mauris eget arcu volutpat vestibulum. Duis sed dui sit amet libero tempus tempor. Nulla diam.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Curabitur facilisis pede nec arcu. Proin ut turpis. Maecenas quam nulla, dapibus vel, accumsan non, volutpat quis, tellus. Suspendisse consectetuer augue in mauris. Duis consequat pede sit amet dolor. Nulla vestibulum enim auctor felis tincidunt sodales. Nullam lobortis massa eu magna. Ut nonummy leo porta quam. Proin dignissim, ante ut aliquet dignissim, est odio aliquet lacus, eu sodales quam arcu ornare urna. Fusce arcu erat, vulputate pulvinar, dapibus luctus, volutpat quis, metus. Mauris eu massa. Praesent eget tortor eget arcu fringilla feugiat. Mauris posuere, risus nec blandit ultrices, enim odio tincidunt tortor, non bibendum elit mi non justo. Fusce tristique lacinia est. Maecenas est sem, eleifend a, fermentum et, interdum non, elit. Etiam sem. Vestibulum ultricies velit. Vivamus a mauris eget arcu volutpat vestibulum. Duis sed dui sit amet libero tempus tempor. Nulla diam.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.</p>
+
+
+<span id="foo2">** The top of this box should be aligned <img style="height: 200px; width: 100px; background-color: green"> to the top of the window **</span>
+
+<div><a href="#foo3">3. click to test</a></div>
+
+
+<p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Curabitur facilisis pede nec arcu. Proin ut turpis. Maecenas quam nulla, dapibus vel, accumsan non, volutpat quis, tellus. Suspendisse consectetuer augue in mauris. Duis consequat pede sit amet dolor. Nulla vestibulum enim auctor felis tincidunt sodales. Nullam lobortis massa eu magna. Ut nonummy leo porta quam. Proin dignissim, ante ut aliquet dignissim, est odio aliquet lacus, eu sodales quam arcu ornare urna. Fusce arcu erat, vulputate pulvinar, dapibus luctus, volutpat quis, metus. Mauris eu massa. Praesent eget tortor eget arcu fringilla feugiat. Mauris posuere, risus nec blandit ultrices, enim odio tincidunt tortor, non bibendum elit mi non justo. Fusce tristique lacinia est. Maecenas est sem, eleifend a, fermentum et, interdum non, elit. Etiam sem. Vestibulum ultricies velit. Vivamus a mauris eget arcu volutpat vestibulum. Duis sed dui sit amet libero tempus tempor. Nulla diam.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.</p>
+
+
+
+
+<img style="height: 200px; width: 100px; background-color: yellow"><img id="foo3" style="height: 100px; width: 100px; background-color: green">** The top of the GREEN box should be aligned to the top of the window **
+
+<div><a href="#foo4">4. click to test</a></div>
+
+
+<p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Curabitur facilisis pede nec arcu. Proin ut turpis. Maecenas quam nulla, dapibus vel, accumsan non, volutpat quis, tellus. Suspendisse consectetuer augue in mauris. Duis consequat pede sit amet dolor. Nulla vestibulum enim auctor felis tincidunt sodales. Nullam lobortis massa eu magna. Ut nonummy leo porta quam. Proin dignissim, ante ut aliquet dignissim, est odio aliquet lacus, eu sodales quam arcu ornare urna. Fusce arcu erat, vulputate pulvinar, dapibus luctus, volutpat quis, metus. Mauris eu massa. Praesent eget tortor eget arcu fringilla feugiat. Mauris posuere, risus nec blandit ultrices, enim odio tincidunt tortor, non bibendum elit mi non justo. Fusce tristique lacinia est. Maecenas est sem, eleifend a, fermentum et, interdum non, elit. Etiam sem. Vestibulum ultricies velit. Vivamus a mauris eget arcu volutpat vestibulum. Duis sed dui sit amet libero tempus tempor. Nulla diam.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.</p>
+
+
+
+<a name="foo4"></a>
+<img style="height: 100px; width: 100px; background-color: green">** The top of this box should be aligned to the top of the window **
+
+<div><b>You're done!</b></div>
+
+
+<p>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.
+
+Curabitur facilisis pede nec arcu. Proin ut turpis. Maecenas quam nulla, dapibus vel, accumsan non, volutpat quis, tellus. Suspendisse consectetuer augue in mauris. Duis consequat pede sit amet dolor. Nulla vestibulum enim auctor felis tincidunt sodales. Nullam lobortis massa eu magna. Ut nonummy leo porta quam. Proin dignissim, ante ut aliquet dignissim, est odio aliquet lacus, eu sodales quam arcu ornare urna. Fusce arcu erat, vulputate pulvinar, dapibus luctus, volutpat quis, metus. Mauris eu massa. Praesent eget tortor eget arcu fringilla feugiat. Mauris posuere, risus nec blandit ultrices, enim odio tincidunt tortor, non bibendum elit mi non justo. Fusce tristique lacinia est. Maecenas est sem, eleifend a, fermentum et, interdum non, elit. Etiam sem. Vestibulum ultricies velit. Vivamus a mauris eget arcu volutpat vestibulum. Duis sed dui sit amet libero tempus tempor. Nulla diam.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.
+
+Donec libero est, semper non, pretium vel, adipiscing dapibus, justo. Morbi viverra, odio at suscipit sollicitudin, risus felis convallis odio, sit amet mollis mauris nisl ac magna. Donec tincidunt ante non ante ultricies rutrum. Sed enim sem, pharetra faucibus, faucibus a, venenatis nec, sem. Fusce lacus. Vestibulum porta urna. Vivamus nonummy gravida nisl. In pharetra eros ac arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nullam et lacus. Nunc metus nunc, iaculis eu, bibendum molestie, semper vitae, arcu. Nullam accumsan fringilla diam. Mauris odio risus, facilisis vitae, tincidunt eget, placerat nec, lacus. Mauris faucibus. Donec rutrum mauris non elit. Morbi dolor purus, auctor a, euismod at, vestibulum sed, massa. Suspendisse quis lorem.
+
+Donec blandit vestibulum mi. Donec turpis nisl, accumsan ut, vestibulum sed, mattis vel, turpis. Suspendisse placerat ultricies pede. Donec et diam vel libero volutpat vestibulum. Aenean luctus erat vitae urna. Etiam ac ligula. Praesent vestibulum urna vel lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque hendrerit porta lectus. Pellentesque sed velit sed massa malesuada egestas. Phasellus volutpat mauris vitae massa. Sed pretium est quis nulla. Quisque fringilla neque a nunc. Vivamus ligula risus, pharetra vitae, sodales ut, convallis et, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed a purus at turpis pellentesque porttitor.
+
+Integer consequat justo. Duis cursus. Sed lorem ante, aliquam sed, mattis eu, luctus in, elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi sem. Nam id pede et lectus luctus molestie. Vestibulum vulputate accumsan lectus. Proin ipsum libero, sagittis at, facilisis vitae, condimentum eu, urna. Vestibulum turpis magna, euismod in, pretium quis, cursus ut, diam. Vivamus in felis eget leo ultricies eleifend. Suspendisse sit amet dolor. Nam diam eros, tempor ut, tristique ut, accumsan commodo, neque. Etiam a orci eu ante suscipit tempor.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/linkjump-5.html b/Source/WebCore/manual-tests/linkjump-5.html
new file mode 100644
index 0000000..7310eb8
--- /dev/null
+++ b/Source/WebCore/manual-tests/linkjump-5.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4256060">4256060</a> Link scrolling to last object on the page doesn't work if the link being scrolled to contains an empty inline</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Manually resize window to about 800 x 600. Click the link below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Page should scroll to the bottom.</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Page will not scroll to the bottom.
+</p>
+
+<a href="#ccc">Click me</a>
+<div style="border: 1px solid red; height: 800px"></div>
+<a name="ccc"><b></b></a>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/liveconnect-applet-array-parameters.html b/Source/WebCore/manual-tests/liveconnect-applet-array-parameters.html
new file mode 100644
index 0000000..8f685c9
--- /dev/null
+++ b/Source/WebCore/manual-tests/liveconnect-applet-array-parameters.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>Array parameters Applet</title>
+</head>
+<body>
+<h1>Calling Java Array Test page</h1>
+This page calls a Java method which takes Arrays as parameters. On successful calling of the function, the passed in values are printed
+to stdout from Java using System.out.println
+Send object array should fail, but WebKit should not crash.
+<form name="controls">
+ <input type="button" name="string" value="Send String array" onClick="document.arraytestapplet.arrayFunction(['one', 'two', 'three'])"/><br>
+ <input type="button" name="boolean" value="Send boolean array" onClick="document.arraytestapplet.booleanFunction(['0', '1', '2'])"/><br>
+ <input type="button" name="byte" value="Send byte array" onClick="document.arraytestapplet.byteFunction(new Array(0, 1, 2))"/><br>
+ <input type="button" name="char" value="Send char array" onClick="document.arraytestapplet.charFunction(new Array('a', 'b', 'c'))"/><br>
+ <input type="button" name="short" value="Send short array" onClick="document.arraytestapplet.shortFunction(new Array(0, 1, 2))"/><br>
+ <input type="button" name="int" value="Send int array" onClick="document.arraytestapplet.intFunction(new Array(0, 1, 2))"/><br>
+ <input type="button" name="long" value="Send long array" onClick="document.arraytestapplet.longFunction(new Array(0, 1, 2))"/><br>
+ <input type="button" name="float" value="Send float array" onClick="document.arraytestapplet.floatFunction(new Array(0.0, 0.1, 0.2))"/><br>
+ <input type="button" name="double" value="Send double array" onClick="document.arraytestapplet.doubleFunction(new Array(0.1, 0.1, 0.2))"/><br>
+ <input type="button" name="object" value="Send object array" onClick="document.arraytestapplet.objectFunction(new Array(0.1, 0.1, 0.2))"/><br>
+</form>
+<applet name="arraytestapplet" code="ArrayParameterTestApplet.class" codebase="resources" width="0" height="0" mayscript="true">
+Unable to load applet.
+</applet>
+<!--
+<object id="helloapplet" codetype="application/java-archive"
+ classid="java:HelloApplet.class" archive="helloapplet.jar"
+ height="100" width="200">
+Unable to load applet.
+</object> -->
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/liveconnect-applet-get-boolean.html b/Source/WebCore/manual-tests/liveconnect-applet-get-boolean.html
new file mode 100644
index 0000000..0c0eddf
--- /dev/null
+++ b/Source/WebCore/manual-tests/liveconnect-applet-get-boolean.html
@@ -0,0 +1,7 @@
+<html>
+<body><applet code="CheckerApplet.class" name="Checker" codebase="resources">
+Unable to load applet.</applet>
+This tests retrieving a boolean value from a Java class using javascript. It tests the return value. The return value should be true.<br>
+<input type="button" name="test" value="Read applet" onClick="alert('return value: '+document.Checker.checkVersion())"/>
+</body>
+<html>
diff --git a/Source/WebCore/manual-tests/liveconnect-security-exception.html b/Source/WebCore/manual-tests/liveconnect-security-exception.html
new file mode 100644
index 0000000..8bce752
--- /dev/null
+++ b/Source/WebCore/manual-tests/liveconnect-security-exception.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+<!--
+Sorry for the hackery in this test. Currently, we have no elegant way to
+catch Java errors and print out an intelligent response.
+-->
+
+<script>
+function loadApplet() {
+ // force Safari to load and cache the TestApplet class
+ document.getElementById('applet').method();
+}
+</script>
+</head>
+<body onload="loadApplet();window.open('resources/liveconnect-security-exception-popup.html', 'w', 'height=300, width=300');">
+<p>This test checks for a regression against <i>rdar://problem/4151132 REGRESSION: Some applet liveconnect calls throws privilege exception.</i>.</p>
+<p>To test:</p>
+<ol>
+<li>Disable popup blocking.</li>
+<li>Select the window titled "popup window."</li>
+<li>From the debug menu, select "Show JavaScript console." This will allow you to see errors thrown in the popup window by the Java Virtual Machine. If there are any, the test has failed.</li>
+<li>If the text in the popup window does not match the text below, the test has failed:<br>
+applet.field returned 1<br>
+incremented applet.field by 1<br>
+applet.field returned 2<br>
+applet.method() returned 1<br>
+</li>
+<li>Otherwise, the test has passed.</li>
+</ol>
+<applet id='applet' code="TestApplet.class" codebase="resources"></applet>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/load-deferrer-resume-crash.html b/Source/WebCore/manual-tests/load-deferrer-resume-crash.html
new file mode 100644
index 0000000..89f15b1
--- /dev/null
+++ b/Source/WebCore/manual-tests/load-deferrer-resume-crash.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+<script>
+var counter = 0;
+
+function loadJSFile(){
+ var i = document.createElement('img')
+ i.setAttribute("src", "resources/apple.jpg?counter=" + counter);
+
+ counter++;
+
+ document.getElementById("images").appendChild(i);
+}
+
+function runModal()
+{
+ loadJSFile();
+
+ alert("Deferring loads");
+}
+</script>
+</head>
+
+<body>
+
+<input id="button" type="button" value="click me" onclick="runModal()"/>
+
+<div id="images"></div>
+
+<p>Click the above button to start loading an image and then open an alert() box. For the test to pass there should be no crash when closing the alert box.</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/load-deferrer-script-element.html b/Source/WebCore/manual-tests/load-deferrer-script-element.html
new file mode 100644
index 0000000..c0ad773
--- /dev/null
+++ b/Source/WebCore/manual-tests/load-deferrer-script-element.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+<script>
+function log(message)
+{
+ document.getElementById("result").innerHTML += message + "<br>";
+}
+
+function loadJSFile(){
+ var s = document.createElement('script')
+ s.setAttribute("type", "text/javascript")
+ s.setAttribute("src", "resources/load-deferrer-script-element.js")
+
+ document.getElementsByTagName("head")[0].appendChild(s);
+}
+
+jsLoaded = false;
+runningModal = false;
+
+// This line will load external script into memory.
+loadJSFile();
+
+function runModal()
+{
+ jsLoaded = true;
+ loadJSFile();
+
+ runningModal = true;
+ alert("Scripts should not be running in the background!");
+ runningModal = false;
+}
+</script>
+</head>
+
+<body>
+
+<p>This tests the bug https://bugs.webkit.org/show_bug.cgi?id=38910.
+Click the button, wait 5 seconds and close it.
+The test passes if no error messages show up in the page!</p>
+<input id="button" type="button" value="click me" onclick="runModal()"/>
+<p id="result"></p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/localstorage-empty-database.html b/Source/WebCore/manual-tests/localstorage-empty-database.html
new file mode 100644
index 0000000..d0fcc41
--- /dev/null
+++ b/Source/WebCore/manual-tests/localstorage-empty-database.html
@@ -0,0 +1,16 @@
+<html>
+<body>
+<script type="text/javascript">
+ var x = localStorage.getItem('foo');
+</script>
+<p>This page has called <code>localStorage.getItem('foo')</code>.
+Since no data has been stored, no database file should have been created.</p>
+
+<p>If you click <a href="javascript:localStorage.setItem('bar', 'baz');">here</a>, data will be stored, and a database file should be created.</p>
+
+<p>If you click <a href="javascript:localStorage.clear();">here</a>, the local storage will be cleared, and the database file should be gone when the browser is closed.</p>
+
+<p>(This is for <a href="https://bugs.webkit.org/show_bug.cgi?id=40301">https://bugs.webkit.org/show_bug.cgi?id=40301</a>
+and <a href="https://bugs.webkit.org/show_bug.cgi?id=40767">https://bugs.webkit.org/show_bug.cgi?id=40767</a>.)</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/location-host-canonicalization.html b/Source/WebCore/manual-tests/location-host-canonicalization.html
new file mode 100644
index 0000000..d13bd7d
--- /dev/null
+++ b/Source/WebCore/manual-tests/location-host-canonicalization.html
@@ -0,0 +1,15 @@
+<html>
+<head>
+<script>
+function changeHost() {
+ window.location.host = "www.example.com:";
+}
+</script>
+</head>
+<body>
+<p>This will test the URL canonicalization by assigning a host with an empty port specifier to window.location.host</p>
+<p>Clicking the following button should change the host in the current URL to "www.example.com:". It actually loading is not important -
+if you see "www.example.com:0" the test has failed. You should see "www.example.com:"</p>
+<input type="button" value="Click Here" onClick="changeHost();">
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/log-keypress-events.html b/Source/WebCore/manual-tests/log-keypress-events.html
new file mode 100644
index 0000000..87e2288
--- /dev/null
+++ b/Source/WebCore/manual-tests/log-keypress-events.html
@@ -0,0 +1,34 @@
+<html>
+<body>
+<p>This page is especially useful to test <a href="http://bugs.webkit.org/show_bug.cgi?id=5678">the shift-Tab issue</a>. Should see a code of 9.</p>
+<form name="f">
+Type here: <input id="field" type="text" />
+</form>
+<script language="javascript" type="text/javascript">
+<!--
+function logEvent(event) {
+ myDebugLog("--");
+ if (event.charCode)
+ myDebugLog("event.charCode: " + event.charCode);
+ if (event.which)
+ myDebugLog("event.which: " + event.which);
+ if (event.keyCode)
+ myDebugLog("event.keyCode: " + event.keyCode);
+ myDebugLog("shiftKey: " + event.shiftKey);
+ return false;
+}
+
+function myDebugLog(msg) {
+ var m = document.createElement("div");
+ m.appendChild(document.createTextNode(msg));
+ document.getElementById("debug-log").appendChild(m);
+}
+document.f.field.onkeypress = logEvent;
+// -->
+</script>
+
+<div id="debug-log">
+Key press values:
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/mail-attachments.html b/Source/WebCore/manual-tests/mail-attachments.html
new file mode 100644
index 0000000..9d8d920
--- /dev/null
+++ b/Source/WebCore/manual-tests/mail-attachments.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4435416">4435416</a> Attachments in Mail compose windows always display the broken image icon</p>
+<p>Steps:</p>
+<ol>
+<li>Launch Mail.app with built WebKit
+<li>create a new email
+<li>drag a file to the email (make sure to use a > 1 page file, otherwise Mail shows the contents inline)
+</ol>
+<p>Verify that the icon is what you see in Finder and has the file name and size beneath it</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/mask-composite-missing-images.html b/Source/WebCore/manual-tests/mask-composite-missing-images.html
new file mode 100644
index 0000000..ed0dfcd
--- /dev/null
+++ b/Source/WebCore/manual-tests/mask-composite-missing-images.html
@@ -0,0 +1,23 @@
+<html>
+<head>
+<style>
+.test {
+ width: 200px;
+ height: 200px;
+ border:10px solid black;
+ background-color:lime;
+ -webkit-mask-image: url(url-not-found), url(url-not-found), url(url-not-found), url(url-not-found), url(url-not-found), url(url-not-found), url(url-not-found), url(url-not-found), url(url-not-found);
+ -webkit-mask-position: top left, top right, bottom left, bottom right, top center, center right, bottom center, center left, center;
+ -webkit-mask-origin: border;
+ -webkit-mask-repeat: no-repeat, no-repeat, no-repeat, no-repeat, repeat-x, repeat-y, repeat-x, repeat-y, repeat;
+ -webkit-mask-composite: copy;
+}
+</style>
+</head>
+<body>
+<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=26084">WebKit Bug 26084: Bug 26084: Multiple missing images in webkit-mask-image prevent rendering</a></p>
+<div class="test">This text should be visible.</div>
+<p>If the test passes, you should be able to see a lime square with a black border. Inside the border, you should see the text: This text should be visible.</p>
+</body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/match-marker-rects.html b/Source/WebCore/manual-tests/match-marker-rects.html
new file mode 100644
index 0000000..d650965
--- /dev/null
+++ b/Source/WebCore/manual-tests/match-marker-rects.html
@@ -0,0 +1,33 @@
+<style>
+ div {
+ height: 50px;
+ width: 110px;
+ margin: 10px 0;
+ padding: 10px;
+ border: solid black;
+ font-size: 25px;
+ }
+
+ div.columns {
+ -webkit-columns: 2;
+ -webkit-column-gap: 10px;
+ }
+
+ div.scroll {
+ overflow-y: scroll;
+ }
+</style>
+<p>
+ In Safari, choose Edit > Find > Find, and type the strings &ldquo;xyz&rdquo;
+ and &ldquo;123&rdquo;. The white &ldquo;holes&rdquo; in the Find overlay
+ should line up with the matching text below.
+</p>
+<div class="columns">
+ <br>xyz
+</div>
+<div class="scroll" id="scroll">
+ <br><br>123<br><br>
+</div>
+<script>
+ document.getElementById("scroll").scrollTop = 100;
+</script>
diff --git a/Source/WebCore/manual-tests/media-controls-when-javascript-disabled.html b/Source/WebCore/manual-tests/media-controls-when-javascript-disabled.html
new file mode 100644
index 0000000..b7e52bc
--- /dev/null
+++ b/Source/WebCore/manual-tests/media-controls-when-javascript-disabled.html
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <style> #error { display: none; } </style>
+ <script>
+ function showErrorMsg()
+ {
+ document.getElementById('error').style.display = 'block';
+ }
+ </script>
+ </head>
+
+<body onload="showErrorMsg()">
+
+ <p>TEST: Video should have controls when scripting is disabled.</p>
+
+ <video
+ src="http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov">
+ </video>
+
+ <noscript><p>Scripting is DISABLED.</p></noscript>
+
+ <p id=error>ERROR: JavaScript must be disabled for this test.</p>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/media-elements/video-replaces-poster.html b/Source/WebCore/manual-tests/media-elements/video-replaces-poster.html
new file mode 100644
index 0000000..8d852aa
--- /dev/null
+++ b/Source/WebCore/manual-tests/media-elements/video-replaces-poster.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ </head>
+ <body>
+ <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=34965">https://bugs.webkit.org/show_bug.cgi?id=34965</a><br>
+ Disable accelerated compositing and reload this test. You should see the test video
+ start playing.</p>
+
+ <video width="480" height="270" type="video/mp4"
+ src="../../../LayoutTests/media/content/test.mp4"
+ poster="../../../LayoutTests/media/content/abe.png" autoplay>
+ </video>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/memory/MessageUidsAlreadyDownloaded2 b/Source/WebCore/manual-tests/memory/MessageUidsAlreadyDownloaded2
new file mode 100644
index 0000000..57269f6
--- /dev/null
+++ b/Source/WebCore/manual-tests/memory/MessageUidsAlreadyDownloaded2
@@ -0,0 +1,4296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>1154111803.H358449P19268.mbox1.freenet.de,S=22050,L=363</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-28T19:13:46Z</date>
+ </dict>
+ <key>1154117771.H461347P398.mbox1.freenet.de,S=2443,L=89</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-28T20:22:43Z</date>
+ </dict>
+ <key>1154118461.H845954P11540.mbox1.freenet.de,S=2073,L=60</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-28T20:34:37Z</date>
+ </dict>
+ <key>1154119399.H723288P24749.mbox1.freenet.de,S=3784,L=75</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:48Z</date>
+ </dict>
+ <key>1154120527.H499834P7002.mbox1.freenet.de,S=2428,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:49Z</date>
+ </dict>
+ <key>1154136928.H711235P7432.mbox1.freenet.de,S=2267,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:55Z</date>
+ </dict>
+ <key>1154141115.H278014P21772.mbox1.freenet.de,S=2648,L=94</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:55Z</date>
+ </dict>
+ <key>1154142404.H444143P13254.mbox1.freenet.de,S=26736,L=481</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:55Z</date>
+ </dict>
+ <key>1154143048.H4813P29876.mbox1.freenet.de,S=2432,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:55Z</date>
+ </dict>
+ <key>1154146079.H240331P27863.mbox1.freenet.de,S=3336,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:58Z</date>
+ </dict>
+ <key>1154148315.H16116P16385.mbox1.freenet.de,S=1973,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:17:58Z</date>
+ </dict>
+ <key>1154155911.H447952P8367.mbox1.freenet.de,S=9377,L=175</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:58:04Z</date>
+ </dict>
+ <key>1154156262.H931482P16302.mbox1.freenet.de,S=1467,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T06:58:04Z</date>
+ </dict>
+ <key>1154157562.H280906P1236.mbox1.freenet.de,S=35699,L=546</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T08:17:58Z</date>
+ </dict>
+ <key>1154157648.H144803P2338.mbox1.freenet.de,S=22613,L=370</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T08:17:58Z</date>
+ </dict>
+ <key>1154160958.H795942P22086.mbox1.freenet.de,S=2829,L=101</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T08:17:58Z</date>
+ </dict>
+ <key>1154164698.H624491P18335.mbox1.freenet.de,S=43702,L=1023</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:14:45Z</date>
+ </dict>
+ <key>1154167515.H972702P5030.mbox1.freenet.de,S=22467,L=368</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:14:46Z</date>
+ </dict>
+ <key>1154174670.H224050P30725.mbox1.freenet.de,S=3308,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:14:47Z</date>
+ </dict>
+ <key>1154176114.H743456P22579.mbox1.freenet.de,S=2006,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:14:47Z</date>
+ </dict>
+ <key>1154184971.H479935P25330.mbox1.freenet.de,S=2635,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:14:47Z</date>
+ </dict>
+ <key>1154185677.H789066P3851.mbox1.freenet.de,S=1167,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:14:47Z</date>
+ </dict>
+ <key>1154190799.H30721P17126.mbox1.freenet.de,S=3783,L=75</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T16:35:31Z</date>
+ </dict>
+ <key>1154194034.H891700P4354.mbox1.freenet.de,S=2153,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T17:35:31Z</date>
+ </dict>
+ <key>1154198323.H243017P9092.mbox1.freenet.de,S=1500,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T18:56:10Z</date>
+ </dict>
+ <key>1154201448.H521281P30530.mbox1.freenet.de,S=3766,L=110</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T19:35:34Z</date>
+ </dict>
+ <key>1154201733.H742067P3354.mbox1.freenet.de,S=1374,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T19:35:34Z</date>
+ </dict>
+ <key>1154202656.H351645P17823.mbox1.freenet.de,S=22871,L=370</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T19:55:49Z</date>
+ </dict>
+ <key>1154206406.H789099P8315.mbox1.freenet.de,S=1975,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T21:11:07Z</date>
+ </dict>
+ <key>1154207701.H462086P24032.mbox1.freenet.de,S=2628,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-29T21:54:47Z</date>
+ </dict>
+ <key>1154211428.H139331P11450.mbox1.freenet.de,S=1978,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:37Z</date>
+ </dict>
+ <key>1154211730.H16038P14828.mbox1.freenet.de,S=7500,L=226</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:39Z</date>
+ </dict>
+ <key>1154221130.H326563P6974.mbox1.freenet.de,S=2771,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:39Z</date>
+ </dict>
+ <key>1154222657.H751377P30045.mbox1.freenet.de,S=2197,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:39Z</date>
+ </dict>
+ <key>1154226264.H252785P28758.mbox1.freenet.de,S=2933,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:39Z</date>
+ </dict>
+ <key>1154230453.H837438P7526.mbox1.freenet.de,S=3571,L=78</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:41Z</date>
+ </dict>
+ <key>1154236571.H729085P28582.mbox1.freenet.de,S=2807,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:41Z</date>
+ </dict>
+ <key>1154236783.H955292P30199.mbox1.freenet.de,S=2188,L=62</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:41Z</date>
+ </dict>
+ <key>1154242354.H170494P14687.mbox1.freenet.de,S=9625,L=63</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:41Z</date>
+ </dict>
+ <key>1154242855.H757856P18626.mbox1.freenet.de,S=2672,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:41Z</date>
+ </dict>
+ <key>1154244551.H920942P2192.mbox1.freenet.de,S=2207,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T07:32:41Z</date>
+ </dict>
+ <key>1154263532.H193325P22924.mbox1.freenet.de,S=2039,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T12:46:38Z</date>
+ </dict>
+ <key>1154265275.H367713P16996.mbox1.freenet.de,S=2198,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-07-30T13:16:47Z</date>
+ </dict>
+ <key>1154282347.H20977P3823.mbox1.freenet.de,S=9587,L=199</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:16Z</date>
+ </dict>
+ <key>1154288804.H803763P8206.mbox1.freenet.de,S=2058,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:17Z</date>
+ </dict>
+ <key>1154299820.H477576P18033.mbox1.freenet.de,S=2618,L=93</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:18Z</date>
+ </dict>
+ <key>1154310315.H820113P1827.mbox1.freenet.de,S=3799,L=110</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:19Z</date>
+ </dict>
+ <key>1154311499.H546032P13891.mbox1.freenet.de,S=2233,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:19Z</date>
+ </dict>
+ <key>1154318224.H536896P14968.mbox1.freenet.de,S=8805,L=157</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154319854.H210142P26288.mbox1.freenet.de,S=2446,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154321361.H711271P5428.mbox1.freenet.de,S=2036,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154322532.H550166P17256.mbox1.freenet.de,S=3144,L=110</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154325187.H294135P17861.mbox1.freenet.de,S=3459,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154330389.H180134P593.mbox1.freenet.de,S=2768,L=94</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154330589.H853877P3916.mbox1.freenet.de,S=2048,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154330917.H159606P9329.mbox1.freenet.de,S=28506,L=562</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154335492.H583581P30769.mbox1.freenet.de,S=3134,L=110</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154339191.H120444P8465.mbox1.freenet.de,S=3063,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154339572.H788076P15350.mbox1.freenet.de,S=1586,L=45</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:22Z</date>
+ </dict>
+ <key>1154341116.H784100P13474.mbox1.freenet.de,S=9493,L=69</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154350115.H216883P8871.mbox1.freenet.de,S=3376,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154352077.H598131P13951.mbox1.freenet.de,S=2053,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154357533.H427278P29986.mbox1.freenet.de,S=5214,L=126</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154368111.H681374P21908.mbox1.freenet.de,S=3384,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154372487.H589212P18160.mbox1.freenet.de,S=1805,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154373426.H113666P5693.mbox1.freenet.de,S=1955,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:23Z</date>
+ </dict>
+ <key>1154374064.H646622P19789.mbox1.freenet.de,S=16327,L=260</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154374390.H822597P26688.mbox1.freenet.de,S=29058,L=568</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154374877.H443661P8856.mbox1.freenet.de,S=7478,L=144</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154378335.H372820P17205.mbox1.freenet.de,S=29708,L=578</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154380198.H919219P16039.mbox1.freenet.de,S=1617,L=41</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154380266.H829510P17338.mbox1.freenet.de,S=3159,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154381245.H781041P971.mbox1.freenet.de,S=29486,L=573</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154383826.H581519P5619.mbox1.freenet.de,S=2491,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154383907.H914484P6602.mbox1.freenet.de,S=2579,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154389136.H486057P2884.mbox1.freenet.de,S=18921,L=508</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154406313.H251951P16905.mbox1.freenet.de,S=8234,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154406403.H74248P17793.mbox1.freenet.de,S=1468,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154406904.H284040P25564.mbox1.freenet.de,S=1328,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154410875.H702423P10666.mbox1.freenet.de,S=3436,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154411027.H712871P13320.mbox1.freenet.de,S=2299,L=45</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:27Z</date>
+ </dict>
+ <key>1154412960.H909004P13832.mbox1.freenet.de,S=3304,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154423513.H859512P10214.mbox1.freenet.de,S=2261,L=66</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154432726.H69271P12439.mbox1.freenet.de,S=1774,L=41</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154433859.H266614P4663.mbox1.freenet.de,S=61054,L=790</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154437434.H599023P17039.mbox1.freenet.de,S=3191,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154446410.H329415P18075.mbox1.freenet.de,S=1871,L=41</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154446719.H706064P27099.mbox1.freenet.de,S=1666,L=40</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154452994.H219957P9909.mbox1.freenet.de,S=3768,L=109</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154456797.H410486P5536.mbox1.freenet.de,S=3808,L=112</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:30Z</date>
+ </dict>
+ <key>1154458368.H152307P9225.mbox1.freenet.de,S=2298,L=46</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154459822.H574797P13606.mbox1.freenet.de,S=2294,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154462619.H765747P10024.mbox1.freenet.de,S=2075,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154464640.H274928P18932.mbox1.freenet.de,S=2051,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154467696.H267955P13501.mbox1.freenet.de,S=26182,L=563</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154467775.H548080P14727.mbox1.freenet.de,S=29184,L=578</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154470343.H767624P26215.mbox1.freenet.de,S=2613,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154479256.H884595P18388.mbox1.freenet.de,S=17010,L=293</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154479329.H790239P19426.mbox1.freenet.de,S=29841,L=576</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154482204.H318144P19613.mbox1.freenet.de,S=2919,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154492754.H490902P13765.mbox1.freenet.de,S=3224,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154496852.H422665P22937.mbox1.freenet.de,S=2168,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154500305.H761267P3003.mbox1.freenet.de,S=2055,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:34Z</date>
+ </dict>
+ <key>1154502841.H481665P7299.mbox1.freenet.de,S=9029,L=158</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154503390.H907552P21594.mbox1.freenet.de,S=1355,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154506274.H963865P12453.mbox1.freenet.de,S=1538,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154507112.H636295P4391.mbox1.freenet.de,S=1545,L=41</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154510432.H500772P6353.mbox1.freenet.de,S=8098,L=136</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154510812.H930961P17880.mbox1.freenet.de,S=3269,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154511935.H742983P21884.mbox1.freenet.de,S=4303,L=63</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154518569.H771158P3018.mbox1.freenet.de,S=3228,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154518727.H778942P8528.mbox1.freenet.de,S=7727,L=181</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154525091.H309996P14768.mbox1.freenet.de,S=1577,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154527275.H61884P18991.mbox1.freenet.de,S=1629,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154528083.H278774P12141.mbox1.freenet.de,S=3469,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154531670.H161741P576.mbox1.freenet.de,S=17904,L=307</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154540694.H424930P11508.mbox1.freenet.de,S=2100,L=46</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154541967.H480715P24795.mbox1.freenet.de,S=34667,L=1135</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154544700.H204133P16065.mbox1.freenet.de,S=7518,L=177</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154545974.H878571P10429.mbox1.freenet.de,S=17643,L=304</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154547134.H790776P6068.mbox1.freenet.de,S=2129,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154547134.H791582P6082.mbox1.freenet.de,S=2109,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154552079.H183013P26609.mbox1.freenet.de,S=1557,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:37Z</date>
+ </dict>
+ <key>1154558833.H680601P19873.mbox1.freenet.de,S=29014,L=565</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154559443.H629394P27069.mbox1.freenet.de,S=28201,L=565</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154559705.H963621P30624.mbox1.freenet.de,S=1658,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154559903.H128255P635.mbox1.freenet.de,S=4293,L=115</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154561841.H24917P22788.mbox1.freenet.de,S=1678,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154565078.H552095P24820.mbox1.freenet.de,S=1571,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154567656.H888068P19790.mbox1.freenet.de,S=28626,L=565</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154577271.H344493P18097.mbox1.freenet.de,S=2687,L=94</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154581483.H783928P29693.mbox1.freenet.de,S=1956,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154592204.H40007P17630.mbox1.freenet.de,S=1723,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154596091.H624074P1470.mbox1.freenet.de,S=1771,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154596322.H41452P6095.mbox1.freenet.de,S=3290,L=93</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154596653.H393287P14440.mbox1.freenet.de,S=1662,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154602697.H48510P21068.mbox1.freenet.de,S=3294,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154610123.H590789P10560.mbox1.freenet.de,S=5389,L=140</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154611988.H804047P20437.mbox1.freenet.de,S=15159,L=234</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154620474.H342588P28635.mbox1.freenet.de,S=8578,L=239</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154624033.H534525P3741.mbox1.freenet.de,S=3097,L=109</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154624721.H847487P16221.mbox1.freenet.de,S=1666,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154625169.H409170P24163.mbox1.freenet.de,S=1810,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:41Z</date>
+ </dict>
+ <key>1154630617.H489240P18189.mbox1.freenet.de,S=15420,L=449</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154630832.H617668P26506.mbox1.freenet.de,S=3275,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154632455.H73886P5468.mbox1.freenet.de,S=41479,L=739</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154636004.H213292P11542.mbox1.freenet.de,S=2073,L=43</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154648684.H553339P9249.mbox1.freenet.de,S=1283,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154654111.H342601P28367.mbox1.freenet.de,S=1749,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154654548.H92597P32115.mbox1.freenet.de,S=1582,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154663797.H236313P19106.mbox1.freenet.de,S=3212,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154666007.H220170P15121.mbox1.freenet.de,S=2399,L=60</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154674137.H953239P18937.mbox1.freenet.de,S=1780,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154674539.H433913P29115.mbox1.freenet.de,S=1726,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154678097.H775074P29674.mbox1.freenet.de,S=2118,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154681470.H721664P30619.mbox1.freenet.de,S=1653,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154681835.H440294P5887.mbox1.freenet.de,S=3303,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154683329.H499060P3008.mbox1.freenet.de,S=2973,L=107</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154683349.H475784P3421.mbox1.freenet.de,S=1635,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154684133.H456313P20424.mbox1.freenet.de,S=16757,L=398</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154686227.H264355P3267.mbox1.freenet.de,S=5053,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154693255.H104812P23648.mbox1.freenet.de,S=3269,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154701385.H313603P24878.mbox1.freenet.de,S=1747,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154706438.H888975P28377.mbox1.freenet.de,S=8804,L=156</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154709564.H133555P12044.mbox1.freenet.de,S=1687,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154711177.H804272P9516.mbox1.freenet.de,S=3008,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154711962.H906792P24181.mbox1.freenet.de,S=1714,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:45Z</date>
+ </dict>
+ <key>1154712249.H863087P31306.mbox1.freenet.de,S=1346,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154713540.H686084P26445.mbox1.freenet.de,S=1553,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154713751.H55777P30321.mbox1.freenet.de,S=1656,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154714170.H614557P4421.mbox1.freenet.de,S=3281,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154718674.H962131P20772.mbox1.freenet.de,S=2187,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154736338.H750416P22092.mbox1.freenet.de,S=1653,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154737824.H694419P4946.mbox1.freenet.de,S=3256,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154739519.H564665P7297.mbox1.freenet.de,S=1480,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154742580.H145981P16735.mbox1.freenet.de,S=3083,L=109</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154748952.H268713P25433.mbox1.freenet.de,S=1582,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154762163.H879963P5656.mbox1.freenet.de,S=1743,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154762709.H416283P12536.mbox1.freenet.de,S=36151,L=651</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154764703.H681259P13907.mbox1.freenet.de,S=5585,L=142</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154765905.H451651P2578.mbox1.freenet.de,S=1823,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154769448.H539772P24732.mbox1.freenet.de,S=30509,L=579</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154771241.H958339P23393.mbox1.freenet.de,S=2643,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154771454.H867661P26915.mbox1.freenet.de,S=3250,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154772483.H759921P10662.mbox1.freenet.de,S=31161,L=584</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154774590.H735607P14785.mbox1.freenet.de,S=1349,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154780998.H350794P2186.mbox1.freenet.de,S=1476,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154783729.H629301P24338.mbox1.freenet.de,S=1828,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154787802.H457991P5386.mbox1.freenet.de,S=1693,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:48Z</date>
+ </dict>
+ <key>1154793287.H907122P26499.mbox1.freenet.de,S=1979,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154796083.H582751P18038.mbox1.freenet.de,S=3393,L=94</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154800164.H457883P20118.mbox1.freenet.de,S=1586,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154802791.H175746P2813.mbox1.freenet.de,S=32753,L=593</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154807187.H620176P8421.mbox1.freenet.de,S=2249,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154808376.H73702P29758.mbox1.freenet.de,S=31175,L=583</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154815352.H547663P23781.mbox1.freenet.de,S=2226,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154815852.H497641P28672.mbox1.freenet.de,S=1640,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154819844.H89068P3941.mbox1.freenet.de,S=1629,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154824220.H394534P13505.mbox1.freenet.de,S=3228,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154825688.H313706P30527.mbox1.freenet.de,S=1339,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154833081.H437178P7263.mbox1.freenet.de,S=1671,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154834629.H62247P20542.mbox1.freenet.de,S=32275,L=589</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154834996.H616625P23803.mbox1.freenet.de,S=2314,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154835617.H514035P28790.mbox1.freenet.de,S=32395,L=590</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:51Z</date>
+ </dict>
+ <key>1154838795.H268666P26334.mbox1.freenet.de,S=3237,L=112</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154842431.H758835P9655.mbox1.freenet.de,S=1859,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154842671.H909620P13204.mbox1.freenet.de,S=1899,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154845999.H991416P17794.mbox1.freenet.de,S=1522,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154847930.H731674P21637.mbox1.freenet.de,S=1682,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154850230.H929566P13366.mbox1.freenet.de,S=2687,L=70</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154853778.H392687P27949.mbox1.freenet.de,S=1510,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154858210.H631452P8577.mbox1.freenet.de,S=1949,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154866627.H35308P2473.mbox1.freenet.de,S=2118,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154870895.H472229P15808.mbox1.freenet.de,S=1666,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154873038.H830117P19580.mbox1.freenet.de,S=1821,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T14:33:52Z</date>
+ </dict>
+ <key>1154874938.H570736P20318.mbox1.freenet.de,S=9402,L=195</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T17:16:29Z</date>
+ </dict>
+ <key>1154879259.H913434P702.mbox1.freenet.de,S=5899,L=123</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T17:16:29Z</date>
+ </dict>
+ <key>1154892728.H872013P14934.mbox1.freenet.de,S=8171,L=176</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T20:03:30Z</date>
+ </dict>
+ <key>1154893187.H782991P23768.mbox1.freenet.de,S=2273,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T20:03:33Z</date>
+ </dict>
+ <key>1154896088.H57751P7859.mbox1.freenet.de,S=1746,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-06T20:29:21Z</date>
+ </dict>
+ <key>1154897034.H715417P27754.mbox1.freenet.de,S=1355,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:32Z</date>
+ </dict>
+ <key>1154897842.H192629P9304.mbox1.freenet.de,S=1775,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:34Z</date>
+ </dict>
+ <key>1154908466.H256444P4309.mbox1.freenet.de,S=9612,L=202</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:34Z</date>
+ </dict>
+ <key>1154913087.H603613P15691.mbox1.freenet.de,S=3458,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:34Z</date>
+ </dict>
+ <key>1154921729.H699962P10129.mbox1.freenet.de,S=32365,L=590</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:36Z</date>
+ </dict>
+ <key>1154925637.H501014P19587.mbox1.freenet.de,S=2030,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:36Z</date>
+ </dict>
+ <key>1154926530.H205520P969.mbox1.freenet.de,S=1497,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:36Z</date>
+ </dict>
+ <key>1154928611.H397993P27462.mbox1.freenet.de,S=1781,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:36Z</date>
+ </dict>
+ <key>1154930612.H415665P22794.mbox1.freenet.de,S=1608,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:36Z</date>
+ </dict>
+ <key>1154931196.H488624P31905.mbox1.freenet.de,S=31260,L=582</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:15:36Z</date>
+ </dict>
+ <key>1154933559.H443205P4635.mbox1.freenet.de,S=6551340,L=85105</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T06:58:36Z</date>
+ </dict>
+ <key>1154938322.H156182P23187.mbox1.freenet.de,S=2208,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T10:43:42Z</date>
+ </dict>
+ <key>1154939863.H828842P20902.mbox1.freenet.de,S=1646,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T10:43:43Z</date>
+ </dict>
+ <key>1154944050.H239620P3977.mbox1.freenet.de,S=1614,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T10:43:43Z</date>
+ </dict>
+ <key>1154944762.H411027P17426.mbox1.freenet.de,S=3329,L=93</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T10:43:43Z</date>
+ </dict>
+ <key>1154946936.H546750P29015.mbox1.freenet.de,S=16127,L=450</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T10:43:43Z</date>
+ </dict>
+ <key>1154950715.H932658P9753.mbox1.freenet.de,S=3123,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T11:44:24Z</date>
+ </dict>
+ <key>1154955826.H244494P25346.mbox1.freenet.de,S=1815,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T13:33:31Z</date>
+ </dict>
+ <key>1154956871.H53807P29765.mbox1.freenet.de,S=1631,L=49</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T13:33:31Z</date>
+ </dict>
+ <key>1154961414.H983301P10603.mbox1.freenet.de,S=3053,L=86</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T14:39:43Z</date>
+ </dict>
+ <key>1154964711.H449025P23281.mbox1.freenet.de,S=5168,L=133</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T15:39:27Z</date>
+ </dict>
+ <key>1154969887.H902776P18126.mbox1.freenet.de,S=3227,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T18:29:33Z</date>
+ </dict>
+ <key>1154973242.H36323P30035.mbox1.freenet.de,S=1313,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T18:29:33Z</date>
+ </dict>
+ <key>1154978298.H254629P25143.mbox1.freenet.de,S=33034,L=597</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T19:42:39Z</date>
+ </dict>
+ <key>1154979552.H889611P20200.mbox1.freenet.de,S=2261,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T19:42:39Z</date>
+ </dict>
+ <key>1154980568.H271316P9540.mbox1.freenet.de,S=31898,L=588</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T20:17:30Z</date>
+ </dict>
+ <key>1154981484.H87054P30587.mbox1.freenet.de,S=1497,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T20:17:31Z</date>
+ </dict>
+ <key>1154981702.H412110P4514.mbox1.freenet.de,S=8573,L=154</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T20:17:31Z</date>
+ </dict>
+ <key>1154981870.H420131P9009.mbox1.freenet.de,S=1651,L=29</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T20:26:09Z</date>
+ </dict>
+ <key>1154982355.H370141P21708.mbox1.freenet.de,S=1428,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T20:26:09Z</date>
+ </dict>
+ <key>1154984295.H419999P24736.mbox1.freenet.de,S=1710,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-07T21:02:39Z</date>
+ </dict>
+ <key>1154986457.H837808P23722.mbox1.freenet.de,S=1762,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:56Z</date>
+ </dict>
+ <key>1154989237.H324641P29504.mbox1.freenet.de,S=1665,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1154995803.H199883P16986.mbox1.freenet.de,S=3240,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1155007768.H677900P17429.mbox1.freenet.de,S=3429,L=106</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1155012524.H237704P28385.mbox1.freenet.de,S=1690,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1155015722.H329094P31095.mbox1.freenet.de,S=1598,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1155017688.H202986P2108.mbox1.freenet.de,S=2416,L=64</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1155019544.H171597P31071.mbox1.freenet.de,S=14875,L=204</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T07:11:57Z</date>
+ </dict>
+ <key>1155021858.H445423P4116.mbox1.freenet.de,S=2196,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T08:06:11Z</date>
+ </dict>
+ <key>1155026416.H676559P25807.mbox1.freenet.de,S=4593,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T09:07:42Z</date>
+ </dict>
+ <key>1155026481.H855058P27126.mbox1.freenet.de,S=1880,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T09:07:42Z</date>
+ </dict>
+ <key>1155031071.H398485P26147.mbox1.freenet.de,S=14897,L=204</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T11:24:37Z</date>
+ </dict>
+ <key>1155034969.H2428P30391.mbox1.freenet.de,S=159386,L=2162</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T11:24:38Z</date>
+ </dict>
+ <key>1155038195.H291065P15043.mbox1.freenet.de,S=1987,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T12:28:23Z</date>
+ </dict>
+ <key>1155038654.H448775P28113.mbox1.freenet.de,S=1691,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T12:28:23Z</date>
+ </dict>
+ <key>1155039123.H590017P6572.mbox1.freenet.de,S=3229,L=90</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T12:28:23Z</date>
+ </dict>
+ <key>1155039545.H801292P14681.mbox1.freenet.de,S=1715,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T12:28:23Z</date>
+ </dict>
+ <key>1155041106.H6125P17272.mbox1.freenet.de,S=25559,L=395</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T13:41:32Z</date>
+ </dict>
+ <key>1155047666.H906085P12577.mbox1.freenet.de,S=2136,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T14:39:06Z</date>
+ </dict>
+ <key>1155050012.H159989P29286.mbox1.freenet.de,S=1652,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:30Z</date>
+ </dict>
+ <key>1155050208.H193791P1203.mbox1.freenet.de,S=1683,L=40</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:30Z</date>
+ </dict>
+ <key>1155050754.H895485P13244.mbox1.freenet.de,S=1761,L=41</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:30Z</date>
+ </dict>
+ <key>1155054454.H613144P13074.mbox1.freenet.de,S=14663,L=205</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:30Z</date>
+ </dict>
+ <key>1155056216.H853320P28840.mbox1.freenet.de,S=1562,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:31Z</date>
+ </dict>
+ <key>1155060313.H287349P23272.mbox1.freenet.de,S=14987,L=206</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:31Z</date>
+ </dict>
+ <key>1155066043.H154047P5837.mbox1.freenet.de,S=1627,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-08T19:47:31Z</date>
+ </dict>
+ <key>1155071351.H344743P26441.mbox1.freenet.de,S=3238,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T06:51:24Z</date>
+ </dict>
+ <key>1155075396.H2838P11152.mbox1.freenet.de,S=2242,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T06:51:24Z</date>
+ </dict>
+ <key>1155087979.H908982P472.mbox1.freenet.de,S=3206,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T06:51:24Z</date>
+ </dict>
+ <key>1155102590.H596945P18125.mbox1.freenet.de,S=1665,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T06:51:24Z</date>
+ </dict>
+ <key>1155105219.H245947P23254.mbox1.freenet.de,S=1691,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T06:51:24Z</date>
+ </dict>
+ <key>1155114184.H181845P9641.mbox1.freenet.de,S=1365,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:29:40Z</date>
+ </dict>
+ <key>1155116990.H948623P3005.mbox1.freenet.de,S=1483,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:29:46Z</date>
+ </dict>
+ <key>1155121665.H11872P25431.mbox1.freenet.de,S=2077,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:29:46Z</date>
+ </dict>
+ <key>1155121962.H936848P2813.mbox1.freenet.de,S=3159,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:29:46Z</date>
+ </dict>
+ <key>1155122252.H501745P12050.mbox1.freenet.de,S=21210,L=353</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:29:46Z</date>
+ </dict>
+ <key>1155125174.H102411P11794.mbox1.freenet.de,S=1882,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:29:46Z</date>
+ </dict>
+ <key>1155127037.H36718P9860.mbox1.freenet.de,S=5025,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T12:47:47Z</date>
+ </dict>
+ <key>1155129246.H357155P25173.mbox1.freenet.de,S=28808,L=427</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T13:17:20Z</date>
+ </dict>
+ <key>1155134270.H946819P22490.mbox1.freenet.de,S=3105,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T15:38:09Z</date>
+ </dict>
+ <key>1155137071.H215601P6019.mbox1.freenet.de,S=2153,L=69</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T15:38:10Z</date>
+ </dict>
+ <key>1155140096.H731141P5353.mbox1.freenet.de,S=27117,L=947</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T19:20:10Z</date>
+ </dict>
+ <key>1155147435.H883142P16666.mbox1.freenet.de,S=3254,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T19:20:17Z</date>
+ </dict>
+ <key>1155149346.H483480P3230.mbox1.freenet.de,S=1742,L=29</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T19:20:20Z</date>
+ </dict>
+ <key>1155152041.H89754P29468.mbox1.freenet.de,S=13453,L=186</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T20:08:49Z</date>
+ </dict>
+ <key>1155152549.H938827P6615.mbox1.freenet.de,S=1654,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T20:08:49Z</date>
+ </dict>
+ <key>1155155667.H706656P27859.mbox1.freenet.de,S=1670,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T21:04:16Z</date>
+ </dict>
+ <key>1155155721.H806685P29134.mbox1.freenet.de,S=1723,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T21:04:17Z</date>
+ </dict>
+ <key>1155155861.H55151P32242.mbox1.freenet.de,S=1457,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T21:04:17Z</date>
+ </dict>
+ <key>1155156698.H850532P19416.mbox1.freenet.de,S=13623,L=186</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-09T21:04:17Z</date>
+ </dict>
+ <key>1155159422.H265424P29763.mbox1.freenet.de,S=5487,L=143</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:11Z</date>
+ </dict>
+ <key>1155161221.H794333P25451.mbox1.freenet.de,S=3397,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155167903.H387503P8670.mbox1.freenet.de,S=5102,L=130</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155178649.H955288P12079.mbox1.freenet.de,S=3277,L=93</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155186315.H470476P5661.mbox1.freenet.de,S=3487,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155186658.H670900P15406.mbox1.freenet.de,S=1989,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155186997.H18542P21862.mbox1.freenet.de,S=2150,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155187306.H580672P27067.mbox1.freenet.de,S=2039,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T06:41:12Z</date>
+ </dict>
+ <key>1155199565.H850171P22348.mbox1.freenet.de,S=1390,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:28Z</date>
+ </dict>
+ <key>1155200503.H856923P16842.mbox1.freenet.de,S=1755,L=60</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:29Z</date>
+ </dict>
+ <key>1155205799.H539866P8747.mbox1.freenet.de,S=1448,L=32</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:29Z</date>
+ </dict>
+ <key>1155210205.H954514P4886.mbox1.freenet.de,S=5059,L=130</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:29Z</date>
+ </dict>
+ <key>1155211504.H549185P762.mbox1.freenet.de,S=3250,L=92</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:29Z</date>
+ </dict>
+ <key>1155219619.H759780P2552.mbox1.freenet.de,S=1373,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:29Z</date>
+ </dict>
+ <key>1155224527.H270710P25060.mbox1.freenet.de,S=7736,L=305</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:29Z</date>
+ </dict>
+ <key>1155226024.H400337P22956.mbox1.freenet.de,S=34091,L=713</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:30Z</date>
+ </dict>
+ <key>1155230782.H443448P26737.mbox1.freenet.de,S=13144,L=186</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-10T18:48:30Z</date>
+ </dict>
+ <key>1155243694.H163572P15822.mbox1.freenet.de,S=5506,L=143</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:06Z</date>
+ </dict>
+ <key>1155244054.H318166P26053.mbox1.freenet.de,S=1531,L=29</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155246379.H408080P2400.mbox1.freenet.de,S=2226,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155248794.H746051P3848.mbox1.freenet.de,S=2052,L=45</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155250978.H781606P2109.mbox1.freenet.de,S=1601,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155251595.H386382P13425.mbox1.freenet.de,S=1574,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155252375.H816725P24987.mbox1.freenet.de,S=1577,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155253496.H489745P3333.mbox1.freenet.de,S=3120,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155263997.H396439P1002.mbox1.freenet.de,S=1640,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155267607.H85281P31359.mbox1.freenet.de,S=13158,L=185</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155268846.H494747P10094.mbox1.freenet.de,S=1951,L=40</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155271169.H140042P28629.mbox1.freenet.de,S=2760,L=97</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155274958.H592129P2743.mbox1.freenet.de,S=16365,L=260</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155278275.H114040P11873.mbox1.freenet.de,S=1723,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T07:02:15Z</date>
+ </dict>
+ <key>1155288724.H433494P24215.mbox1.freenet.de,S=3220,L=91</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T10:26:06Z</date>
+ </dict>
+ <key>1155293569.H411195P21139.mbox1.freenet.de,S=2721,L=76</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T11:11:15Z</date>
+ </dict>
+ <key>1155295204.H811233P22677.mbox1.freenet.de,S=1621,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T11:21:09Z</date>
+ </dict>
+ <key>1155296029.H99298P8943.mbox1.freenet.de,S=5011,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T11:55:47Z</date>
+ </dict>
+ <key>1155297301.H522378P5338.mbox1.freenet.de,S=19298,L=303</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T11:55:47Z</date>
+ </dict>
+ <key>1155297492.H795867P9124.mbox1.freenet.de,S=1373,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T12:01:07Z</date>
+ </dict>
+ <key>1155300909.H622250P20310.mbox1.freenet.de,S=194228,L=2683</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T12:55:49Z</date>
+ </dict>
+ <key>1155308792.H250936P22936.mbox1.freenet.de,S=2028,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T15:10:52Z</date>
+ </dict>
+ <key>1155309026.H629799P28442.mbox1.freenet.de,S=1621,L=29</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T15:10:52Z</date>
+ </dict>
+ <key>1155312703.H180117P16780.mbox1.freenet.de,S=13163,L=186</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-11T17:01:07Z</date>
+ </dict>
+ <key>1155341164.H110377P27980.mbox1.freenet.de,S=1470,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:14Z</date>
+ </dict>
+ <key>1155341478.H462941P2015.mbox1.freenet.de,S=1599,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155342793.H314697P19120.mbox1.freenet.de,S=1724,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155343779.H48544P30268.mbox1.freenet.de,S=3201,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155344116.H268158P7799.mbox1.freenet.de,S=1411,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155354546.H561532P28675.mbox1.freenet.de,S=1371,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155356696.H995990P11509.mbox1.freenet.de,S=1764,L=40</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155358818.H814534P27494.mbox1.freenet.de,S=2888,L=98</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T05:57:17Z</date>
+ </dict>
+ <key>1155362721.H710518P1102.mbox1.freenet.de,S=2762,L=74</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T06:07:28Z</date>
+ </dict>
+ <key>1155365332.H325159P29525.mbox1.freenet.de,S=1739,L=62</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T06:54:55Z</date>
+ </dict>
+ <key>1155372108.H319445P16165.mbox1.freenet.de,S=2708,L=62</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T08:46:45Z</date>
+ </dict>
+ <key>1155375874.H230704P3857.mbox1.freenet.de,S=2622,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T09:46:48Z</date>
+ </dict>
+ <key>1155381212.H468458P6801.mbox1.freenet.de,S=1936,L=45</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T11:52:04Z</date>
+ </dict>
+ <key>1155381681.H552427P18977.mbox1.freenet.de,S=5186,L=133</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T11:52:06Z</date>
+ </dict>
+ <key>1155382498.H369535P6941.mbox1.freenet.de,S=26692,L=477</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T11:52:06Z</date>
+ </dict>
+ <key>1155383606.H437045P30481.mbox1.freenet.de,S=1413,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T12:52:04Z</date>
+ </dict>
+ <key>1155383682.H553821P32262.mbox1.freenet.de,S=1712,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T12:52:04Z</date>
+ </dict>
+ <key>1155387642.H378906P31137.mbox1.freenet.de,S=1697,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T13:01:56Z</date>
+ </dict>
+ <key>1155389142.H64410P23467.mbox1.freenet.de,S=2791,L=96</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T14:20:15Z</date>
+ </dict>
+ <key>1155392313.H278709P4708.mbox1.freenet.de,S=3907,L=106</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T14:20:15Z</date>
+ </dict>
+ <key>1155392617.H994844P9195.mbox1.freenet.de,S=253915,L=3335</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T14:26:49Z</date>
+ </dict>
+ <key>1155394744.H831207P10676.mbox1.freenet.de,S=2793,L=104</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:02:13Z</date>
+ </dict>
+ <key>1155395369.H420233P21087.mbox1.freenet.de,S=36481,L=508</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:11:38Z</date>
+ </dict>
+ <key>1155395795.H180618P28398.mbox1.freenet.de,S=2038,L=69</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:16:41Z</date>
+ </dict>
+ <key>1155396396.H370822P4949.mbox1.freenet.de,S=4288,L=118</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:39:54Z</date>
+ </dict>
+ <key>1155396467.H347908P6065.mbox1.freenet.de,S=1666,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:39:54Z</date>
+ </dict>
+ <key>1155397346.H746437P19876.mbox1.freenet.de,S=232524,L=3830</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:47:28Z</date>
+ </dict>
+ <key>1155397550.H814414P23509.mbox1.freenet.de,S=1954,L=45</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:47:28Z</date>
+ </dict>
+ <key>1155397892.H161483P29827.mbox1.freenet.de,S=2137,L=67</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T15:54:14Z</date>
+ </dict>
+ <key>1155398368.H272840P5908.mbox1.freenet.de,S=1658,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T16:00:17Z</date>
+ </dict>
+ <key>1155398680.H95312P14345.mbox1.freenet.de,S=5500,L=141</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T16:12:37Z</date>
+ </dict>
+ <key>1155398690.H251433P14586.mbox1.freenet.de,S=2025,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-12T16:12:37Z</date>
+ </dict>
+ <key>1155399622.H294694P31838.mbox1.freenet.de,S=1643,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:20Z</date>
+ </dict>
+ <key>1155401459.H913217P28572.mbox1.freenet.de,S=2554,L=94</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155404891.H231218P23227.mbox1.freenet.de,S=1675,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155408089.H425332P10206.mbox1.freenet.de,S=2251,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155412433.H747029P3760.mbox1.freenet.de,S=1912,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155414118.H534159P31022.mbox1.freenet.de,S=2836,L=97</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155425735.H926302P27336.mbox1.freenet.de,S=1580,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155429421.H583293P26482.mbox1.freenet.de,S=2703,L=96</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:24Z</date>
+ </dict>
+ <key>1155432697.H707953P20293.mbox1.freenet.de,S=3295,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:27Z</date>
+ </dict>
+ <key>1155442908.H622889P29028.mbox1.freenet.de,S=15653,L=212</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:27Z</date>
+ </dict>
+ <key>1155447888.H964302P4158.mbox1.freenet.de,S=1773,L=60</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:27Z</date>
+ </dict>
+ <key>1155449311.H702848P16196.mbox1.freenet.de,S=2806,L=97</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:27Z</date>
+ </dict>
+ <key>1155452938.H544521P27881.mbox1.freenet.de,S=1319,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:27Z</date>
+ </dict>
+ <key>1155459240.H508185P13192.mbox1.freenet.de,S=1695,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T09:07:27Z</date>
+ </dict>
+ <key>1155466103.H392282P30143.mbox1.freenet.de,S=2893,L=101</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T10:54:42Z</date>
+ </dict>
+ <key>1155467153.H142108P13986.mbox1.freenet.de,S=1748,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T11:07:41Z</date>
+ </dict>
+ <key>1155468819.H15840P9570.mbox1.freenet.de,S=5005,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T11:36:45Z</date>
+ </dict>
+ <key>1155479457.H723406P8075.mbox1.freenet.de,S=2847,L=101</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:22Z</date>
+ </dict>
+ <key>1155482043.H738903P18244.mbox1.freenet.de,S=15708,L=213</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155485750.H781909P19673.mbox1.freenet.de,S=5492,L=139</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155487081.H464166P18373.mbox1.freenet.de,S=1571,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155489196.H263823P4222.mbox1.freenet.de,S=2037,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155489237.H334522P5149.mbox1.freenet.de,S=1672,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155492259.H868827P2084.mbox1.freenet.de,S=2749,L=88</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155494078.H223060P6524.mbox1.freenet.de,S=2068,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155495377.H271409P8759.mbox1.freenet.de,S=2002,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155499124.H310745P21654.mbox1.freenet.de,S=13691,L=203</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-13T20:15:25Z</date>
+ </dict>
+ <key>1155502236.H453831P28981.mbox1.freenet.de,S=1974,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:16Z</date>
+ </dict>
+ <key>1155502536.H4863P7134.mbox1.freenet.de,S=3423,L=103</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:16Z</date>
+ </dict>
+ <key>1155504322.H792521P10662.mbox1.freenet.de,S=2113,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:16Z</date>
+ </dict>
+ <key>1155505529.H281536P26985.mbox1.freenet.de,S=2625,L=87</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:16Z</date>
+ </dict>
+ <key>1155506205.H322296P1896.mbox1.freenet.de,S=1785,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:16Z</date>
+ </dict>
+ <key>1155506625.H931796P6990.mbox1.freenet.de,S=1673,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155507649.H402055P18118.mbox1.freenet.de,S=2829,L=73</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155510882.H358588P21362.mbox1.freenet.de,S=15722,L=213</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155510919.H587150P21798.mbox1.freenet.de,S=1632,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155511387.H485218P26769.mbox1.freenet.de,S=2659,L=101</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155511644.H820998P29150.mbox1.freenet.de,S=31715,L=537</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155520110.H948986P24237.mbox1.freenet.de,S=3381,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155525640.H835576P13636.mbox1.freenet.de,S=1472,L=32</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155539870.H521633P14256.mbox1.freenet.de,S=3752,L=161</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:24:17Z</date>
+ </dict>
+ <key>1155540611.H107641P28092.mbox1.freenet.de,S=2791,L=90</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T07:53:33Z</date>
+ </dict>
+ <key>1155547625.H571328P4725.mbox1.freenet.de,S=6181,L=138</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T14:32:37Z</date>
+ </dict>
+ <key>1155548287.H367423P19149.mbox1.freenet.de,S=2137,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T14:32:43Z</date>
+ </dict>
+ <key>1155554846.H614484P3380.mbox1.freenet.de,S=2672,L=86</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T14:32:43Z</date>
+ </dict>
+ <key>1155555174.H616170P9716.mbox1.freenet.de,S=4045,L=114</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T14:32:43Z</date>
+ </dict>
+ <key>1155555283.H376477P12879.mbox1.freenet.de,S=5019,L=130</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T14:32:43Z</date>
+ </dict>
+ <key>1155562611.H618120P10679.mbox1.freenet.de,S=1601,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T14:32:43Z</date>
+ </dict>
+ <key>1155567178.H899466P23120.mbox1.freenet.de,S=2537,L=85</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T15:32:41Z</date>
+ </dict>
+ <key>1155571046.H656123P19290.mbox1.freenet.de,S=15656,L=214</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:24Z</date>
+ </dict>
+ <key>1155572350.H939519P19072.mbox1.freenet.de,S=3646,L=103</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:25Z</date>
+ </dict>
+ <key>1155573494.H112844P11809.mbox1.freenet.de,S=10648,L=184</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:25Z</date>
+ </dict>
+ <key>1155573879.H715341P19888.mbox1.freenet.de,S=18996,L=392</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:25Z</date>
+ </dict>
+ <key>1155574584.H945804P2119.mbox1.freenet.de,S=4504,L=121</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:25Z</date>
+ </dict>
+ <key>1155575961.H332723P1198.mbox1.freenet.de,S=1510,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:25Z</date>
+ </dict>
+ <key>1155576490.H541871P15183.mbox1.freenet.de,S=1606,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:25Z</date>
+ </dict>
+ <key>1155579837.H72419P26294.mbox1.freenet.de,S=2002,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:26Z</date>
+ </dict>
+ <key>1155583115.H958331P27966.mbox1.freenet.de,S=1784,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:26Z</date>
+ </dict>
+ <key>1155584199.H239307P14726.mbox1.freenet.de,S=3479,L=108</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T19:57:26Z</date>
+ </dict>
+ <key>1155586181.H922796P27202.mbox1.freenet.de,S=1683,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T20:25:36Z</date>
+ </dict>
+ <key>1155588441.H876897P8510.mbox1.freenet.de,S=3823,L=162</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T20:53:00Z</date>
+ </dict>
+ <key>1155591961.H958739P27676.mbox1.freenet.de,S=8528,L=244</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-14T21:46:26Z</date>
+ </dict>
+ <key>1155592810.H178870P7600.mbox1.freenet.de,S=2443,L=86</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:51Z</date>
+ </dict>
+ <key>1155594577.H226466P30501.mbox1.freenet.de,S=1377,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:52Z</date>
+ </dict>
+ <key>1155594767.H359327P502.mbox1.freenet.de,S=2044,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:52Z</date>
+ </dict>
+ <key>1155595308.H206945P9299.mbox1.freenet.de,S=1539,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:52Z</date>
+ </dict>
+ <key>1155595714.H968683P18026.mbox1.freenet.de,S=1371,L=26</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:52Z</date>
+ </dict>
+ <key>1155605575.H514963P11444.mbox1.freenet.de,S=1582,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:52Z</date>
+ </dict>
+ <key>1155609054.H722461P26093.mbox1.freenet.de,S=1342,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:53Z</date>
+ </dict>
+ <key>1155609241.H114172P28491.mbox1.freenet.de,S=2377,L=86</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:53Z</date>
+ </dict>
+ <key>1155612954.H927628P8467.mbox1.freenet.de,S=14415,L=202</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:53Z</date>
+ </dict>
+ <key>1155613298.H183926P12165.mbox1.freenet.de,S=1594,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:54Z</date>
+ </dict>
+ <key>1155623498.H162605P23815.mbox1.freenet.de,S=18287,L=285</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:16:54Z</date>
+ </dict>
+ <key>1155627002.H454741P12744.mbox1.freenet.de,S=1289,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:31:50Z</date>
+ </dict>
+ <key>1155627889.H742535P26819.mbox1.freenet.de,S=2535,L=87</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T07:57:39Z</date>
+ </dict>
+ <key>1155634162.H456816P23232.mbox1.freenet.de,S=1713,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T09:31:47Z</date>
+ </dict>
+ <key>1155639133.H569323P26340.mbox1.freenet.de,S=52499,L=954</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T13:39:24Z</date>
+ </dict>
+ <key>1155642027.H16248P21003.mbox1.freenet.de,S=2468,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T13:39:29Z</date>
+ </dict>
+ <key>1155646523.H196753P28653.mbox1.freenet.de,S=4907,L=129</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T13:39:29Z</date>
+ </dict>
+ <key>1155647354.H345973P19847.mbox1.freenet.de,S=4138,L=70</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T13:39:29Z</date>
+ </dict>
+ <key>1155649003.H40740P30415.mbox1.freenet.de,S=14780,L=202</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T13:39:29Z</date>
+ </dict>
+ <key>1155655360.H224743P23901.mbox1.freenet.de,S=1751,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T15:23:49Z</date>
+ </dict>
+ <key>1155656257.H442639P10814.mbox1.freenet.de,S=12463,L=189</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:43Z</date>
+ </dict>
+ <key>1155658727.H21998P28019.mbox1.freenet.de,S=2629,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155660222.H789857P31515.mbox1.freenet.de,S=1713,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155660373.H539501P4119.mbox1.freenet.de,S=3977,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155660849.H475683P18605.mbox1.freenet.de,S=1779,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155661050.H849347P23410.mbox1.freenet.de,S=1723,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155662519.H272115P25223.mbox1.freenet.de,S=4066,L=120</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155663279.H93787P15524.mbox1.freenet.de,S=3286,L=99</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:20:47Z</date>
+ </dict>
+ <key>1155666170.H581264P16357.mbox1.freenet.de,S=1964,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T18:25:38Z</date>
+ </dict>
+ <key>1155672629.H698046P26779.mbox1.freenet.de,S=14858,L=202</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T20:13:32Z</date>
+ </dict>
+ <key>1155675970.H481059P829.mbox1.freenet.de,S=30101,L=568</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T21:14:42Z</date>
+ </dict>
+ <key>1155676427.H227690P9433.mbox1.freenet.de,S=28530,L=547</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-15T21:14:42Z</date>
+ </dict>
+ <key>1155679020.H360235P24199.mbox1.freenet.de,S=5379,L=138</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:32:57Z</date>
+ </dict>
+ <key>1155679259.H975948P30996.mbox1.freenet.de,S=1665,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155679666.H222655P5397.mbox1.freenet.de,S=13472,L=194</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155682595.H840883P17634.mbox1.freenet.de,S=2482,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155683025.H4077P24194.mbox1.freenet.de,S=28912,L=550</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155698954.H56251P20772.mbox1.freenet.de,S=1610,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155699730.H136388P29061.mbox1.freenet.de,S=13510,L=194</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155708190.H419348P27568.mbox1.freenet.de,S=1639,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:01Z</date>
+ </dict>
+ <key>1155708619.H61568P4130.mbox1.freenet.de,S=4824,L=73</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:02Z</date>
+ </dict>
+ <key>1155708934.H719113P13560.mbox1.freenet.de,S=4427,L=69</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:02Z</date>
+ </dict>
+ <key>1155709249.H561354P21490.mbox1.freenet.de,S=4621,L=68</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:33:02Z</date>
+ </dict>
+ <key>1155710073.H447832P6614.mbox1.freenet.de,S=2523,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T06:37:10Z</date>
+ </dict>
+ <key>1155712109.H228570P13737.mbox1.freenet.de,S=3950,L=163</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T07:16:49Z</date>
+ </dict>
+ <key>1155715259.H942469P29561.mbox1.freenet.de,S=4777,L=70</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T08:08:37Z</date>
+ </dict>
+ <key>1155726497.H229006P18946.mbox1.freenet.de,S=5076,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T11:27:53Z</date>
+ </dict>
+ <key>1155726841.H315888P31526.mbox1.freenet.de,S=2505,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T11:27:53Z</date>
+ </dict>
+ <key>1155731830.H203362P7473.mbox1.freenet.de,S=31693,L=579</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T12:40:23Z</date>
+ </dict>
+ <key>1155733467.H948324P28575.mbox1.freenet.de,S=29670,L=568</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T13:12:49Z</date>
+ </dict>
+ <key>1155740627.H596547P27213.mbox1.freenet.de,S=5489,L=143</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T19:17:33Z</date>
+ </dict>
+ <key>1155744035.H967627P7422.mbox1.freenet.de,S=1296,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T19:17:35Z</date>
+ </dict>
+ <key>1155745060.H914526P32159.mbox1.freenet.de,S=2595,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T19:17:35Z</date>
+ </dict>
+ <key>1155753499.H839663P19946.mbox1.freenet.de,S=1682,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T19:17:35Z</date>
+ </dict>
+ <key>1155754705.H760692P11736.mbox1.freenet.de,S=9002,L=379</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-16T19:17:35Z</date>
+ </dict>
+ <key>1155757129.H73453P26817.mbox1.freenet.de,S=3900,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:37Z</date>
+ </dict>
+ <key>1155762271.H271538P26592.mbox1.freenet.de,S=9158,L=380</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:40Z</date>
+ </dict>
+ <key>1155762960.H196055P6057.mbox1.freenet.de,S=2775,L=97</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:40Z</date>
+ </dict>
+ <key>1155764084.H509441P23252.mbox1.freenet.de,S=1709,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:40Z</date>
+ </dict>
+ <key>1155764556.H644385P29660.mbox1.freenet.de,S=14251,L=199</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:40Z</date>
+ </dict>
+ <key>1155774936.H450120P5009.mbox1.freenet.de,S=2777,L=103</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:40Z</date>
+ </dict>
+ <key>1155780523.H871720P4329.mbox1.freenet.de,S=3183,L=99</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:41Z</date>
+ </dict>
+ <key>1155783955.H51113P13218.mbox1.freenet.de,S=1799,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:41Z</date>
+ </dict>
+ <key>1155784022.H990661P14043.mbox1.freenet.de,S=14539,L=199</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:41Z</date>
+ </dict>
+ <key>1155793718.H955690P17050.mbox1.freenet.de,S=34755,L=632</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T06:30:41Z</date>
+ </dict>
+ <key>1155801361.H759607P6409.mbox1.freenet.de,S=2647,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:37Z</date>
+ </dict>
+ <key>1155802366.H621150P28413.mbox1.freenet.de,S=2917,L=66</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:40Z</date>
+ </dict>
+ <key>1155802717.H226200P5106.mbox1.freenet.de,S=2787,L=66</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:40Z</date>
+ </dict>
+ <key>1155803161.H223217P17067.mbox1.freenet.de,S=1569,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:40Z</date>
+ </dict>
+ <key>1155807606.H620116P11099.mbox1.freenet.de,S=23684,L=829</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:40Z</date>
+ </dict>
+ <key>1155808943.H257985P8125.mbox1.freenet.de,S=1803,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:40Z</date>
+ </dict>
+ <key>1155810163.H393619P4857.mbox1.freenet.de,S=5100,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:18:40Z</date>
+ </dict>
+ <key>1155813863.H756962P28805.mbox1.freenet.de,S=1731,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:35:21Z</date>
+ </dict>
+ <key>1155815032.H298878P28376.mbox1.freenet.de,S=2763,L=82</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T11:53:34Z</date>
+ </dict>
+ <key>1155818963.H747901P22963.mbox1.freenet.de,S=34712,L=634</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:22Z</date>
+ </dict>
+ <key>1155818984.H739984P23410.mbox1.freenet.de,S=34308,L=633</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:23Z</date>
+ </dict>
+ <key>1155821900.H745528P30523.mbox1.freenet.de,S=14637,L=199</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155822043.H736444P1616.mbox1.freenet.de,S=5689,L=233</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155823988.H367897P19251.mbox1.freenet.de,S=3639,L=105</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155827411.H56325P7730.mbox1.freenet.de,S=4128,L=62</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155830753.H802421P22648.mbox1.freenet.de,S=2696,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155836839.H781658P6842.mbox1.freenet.de,S=3915,L=163</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155837795.H23180P1296.mbox1.freenet.de,S=1773,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:26Z</date>
+ </dict>
+ <key>1155840734.H800798P4865.mbox1.freenet.de,S=1689,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:27Z</date>
+ </dict>
+ <key>1155841425.H808648P21505.mbox1.freenet.de,S=34988,L=634</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:27Z</date>
+ </dict>
+ <key>1155844693.H738830P5437.mbox1.freenet.de,S=1424,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T20:32:27Z</date>
+ </dict>
+ <key>1155849030.H181753P18909.mbox1.freenet.de,S=2563,L=82</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T21:32:40Z</date>
+ </dict>
+ <key>1155850140.H201004P7026.mbox1.freenet.de,S=5513,L=141</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-17T21:32:40Z</date>
+ </dict>
+ <key>1155856569.H774450P31180.mbox1.freenet.de,S=14378,L=201</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:09Z</date>
+ </dict>
+ <key>1155858413.H985113P19952.mbox1.freenet.de,S=43251,L=733</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:10Z</date>
+ </dict>
+ <key>1155866739.H628872P13661.mbox1.freenet.de,S=14587,L=200</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:11Z</date>
+ </dict>
+ <key>1155867521.H542305P24567.mbox1.freenet.de,S=1470,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:11Z</date>
+ </dict>
+ <key>1155867939.H526630P498.mbox1.freenet.de,S=3322,L=101</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:11Z</date>
+ </dict>
+ <key>1155875999.H983999P3123.mbox1.freenet.de,S=7921,L=133</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:11Z</date>
+ </dict>
+ <key>1155876166.H404276P5169.mbox1.freenet.de,S=14596,L=201</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:11Z</date>
+ </dict>
+ <key>1155880133.H13635P26998.mbox1.freenet.de,S=1438,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:12Z</date>
+ </dict>
+ <key>1155881575.H161964P21959.mbox1.freenet.de,S=2546,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T06:27:12Z</date>
+ </dict>
+ <key>1155883400.H255525P17617.mbox1.freenet.de,S=7693,L=142</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T08:49:03Z</date>
+ </dict>
+ <key>1155884435.H930535P2478.mbox1.freenet.de,S=3339,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T08:49:04Z</date>
+ </dict>
+ <key>1155886199.H865896P10437.mbox1.freenet.de,S=40408,L=703</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T08:49:06Z</date>
+ </dict>
+ <key>1155886812.H222537P23034.mbox1.freenet.de,S=34692,L=632</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T08:49:06Z</date>
+ </dict>
+ <key>1155888897.H165107P3093.mbox1.freenet.de,S=1728,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T08:49:06Z</date>
+ </dict>
+ <key>1155894239.H249312P22078.mbox1.freenet.de,S=35341,L=635</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T10:27:53Z</date>
+ </dict>
+ <key>1155896408.H218608P8208.mbox1.freenet.de,S=36962,L=888</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T10:27:54Z</date>
+ </dict>
+ <key>1155899834.H107315P29722.mbox1.freenet.de,S=5051,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T13:42:12Z</date>
+ </dict>
+ <key>1155900128.H579880P5438.mbox1.freenet.de,S=1796,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T13:42:13Z</date>
+ </dict>
+ <key>1155908232.H143450P24816.mbox1.freenet.de,S=2679,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T13:42:13Z</date>
+ </dict>
+ <key>1155908730.H379921P3969.mbox1.freenet.de,S=1839,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T13:47:16Z</date>
+ </dict>
+ <key>1155909184.H50144P16561.mbox1.freenet.de,S=2705,L=96</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T17:40:33Z</date>
+ </dict>
+ <key>1155919201.H953928P10247.mbox1.freenet.de,S=14635,L=200</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T17:40:36Z</date>
+ </dict>
+ <key>1155919500.H299571P18227.mbox1.freenet.de,S=2781,L=83</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T17:40:36Z</date>
+ </dict>
+ <key>1155922317.H155721P10234.mbox1.freenet.de,S=3723,L=59</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T17:40:36Z</date>
+ </dict>
+ <key>1155926157.H516665P26689.mbox1.freenet.de,S=3872,L=162</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T18:45:07Z</date>
+ </dict>
+ <key>1155930117.H43110P409.mbox1.freenet.de,S=1657,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T19:42:59Z</date>
+ </dict>
+ <key>1155930487.H459342P6935.mbox1.freenet.de,S=1810,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T19:52:18Z</date>
+ </dict>
+ <key>1155931871.H711403P31320.mbox1.freenet.de,S=2754,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-18T20:13:08Z</date>
+ </dict>
+ <key>1155940967.H661079P21403.mbox1.freenet.de,S=3892,L=82</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155942954.H959054P13213.mbox1.freenet.de,S=2606,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155943594.H830163P21738.mbox1.freenet.de,S=14496,L=199</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155953941.H375532P22922.mbox1.freenet.de,S=37663,L=650</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155955639.H224625P4873.mbox1.freenet.de,S=2534,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155956770.H717876P16828.mbox1.freenet.de,S=1353,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155958211.H395151P1885.mbox1.freenet.de,S=1575,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:11Z</date>
+ </dict>
+ <key>1155959154.H720265P12713.mbox1.freenet.de,S=1645,L=29</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:12Z</date>
+ </dict>
+ <key>1155962213.H850812P15620.mbox1.freenet.de,S=3313,L=99</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:12Z</date>
+ </dict>
+ <key>1155964530.H674989P10524.mbox1.freenet.de,S=2473,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T06:32:12Z</date>
+ </dict>
+ <key>1155971182.H958306P25902.mbox1.freenet.de,S=1764,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T07:09:18Z</date>
+ </dict>
+ <key>1155975654.H360857P32746.mbox1.freenet.de,S=24281,L=380</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T08:21:55Z</date>
+ </dict>
+ <key>1155978606.H882247P21614.mbox1.freenet.de,S=4750,L=215</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T09:20:11Z</date>
+ </dict>
+ <key>1155978609.H91622P21762.mbox1.freenet.de,S=2843,L=83</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T09:20:12Z</date>
+ </dict>
+ <key>1155983252.H142286P31396.mbox1.freenet.de,S=1725,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T14:01:58Z</date>
+ </dict>
+ <key>1155990327.H250456P14330.mbox1.freenet.de,S=40658,L=710</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T14:01:59Z</date>
+ </dict>
+ <key>1155992006.H268992P14095.mbox1.freenet.de,S=5002,L=131</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T14:01:59Z</date>
+ </dict>
+ <key>1155993464.H775200P5734.mbox1.freenet.de,S=2750,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T14:01:59Z</date>
+ </dict>
+ <key>1155993923.H23966P13335.mbox1.freenet.de,S=1806,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T14:02:00Z</date>
+ </dict>
+ <key>1155998626.H531558P24470.mbox1.freenet.de,S=2782,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T15:17:45Z</date>
+ </dict>
+ <key>1156000731.H835960P7899.mbox1.freenet.de,S=13307,L=218</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T15:24:13Z</date>
+ </dict>
+ <key>1156001862.H12790P29824.mbox1.freenet.de,S=42175,L=796</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T15:47:46Z</date>
+ </dict>
+ <key>1156002114.H868256P2154.mbox1.freenet.de,S=2789,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T15:47:47Z</date>
+ </dict>
+ <key>1156002227.H64014P4163.mbox1.freenet.de,S=1648,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T15:47:47Z</date>
+ </dict>
+ <key>1156005285.H611697P29480.mbox1.freenet.de,S=3484,L=102</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T16:47:49Z</date>
+ </dict>
+ <key>1156005955.H380622P10683.mbox1.freenet.de,S=1664,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T16:47:50Z</date>
+ </dict>
+ <key>1156006709.H199343P23552.mbox1.freenet.de,S=3596,L=84</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T17:24:01Z</date>
+ </dict>
+ <key>1156008044.H808442P12305.mbox1.freenet.de,S=2899,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T17:24:01Z</date>
+ </dict>
+ <key>1156008369.H960103P17621.mbox1.freenet.de,S=2836,L=61</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T17:28:01Z</date>
+ </dict>
+ <key>1156008381.H841515P17850.mbox1.freenet.de,S=3458,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T17:28:01Z</date>
+ </dict>
+ <key>1156008500.H671840P19682.mbox1.freenet.de,S=4883,L=107</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T17:32:47Z</date>
+ </dict>
+ <key>1156008786.H901063P24353.mbox1.freenet.de,S=1410,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-19T18:26:38Z</date>
+ </dict>
+ <key>1156014162.H151759P29462.mbox1.freenet.de,S=8207,L=211</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:30Z</date>
+ </dict>
+ <key>1156014181.H164973P29778.mbox1.freenet.de,S=2801,L=83</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:33Z</date>
+ </dict>
+ <key>1156014251.H352625P31015.mbox1.freenet.de,S=4357,L=103</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156014340.H455048P320.mbox1.freenet.de,S=6468,L=159</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156014743.H629783P6625.mbox1.freenet.de,S=53033,L=881</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156018123.H961397P5943.mbox1.freenet.de,S=3905,L=163</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156028379.H828505P27266.mbox1.freenet.de,S=2767,L=82</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156028508.H894P29445.mbox1.freenet.de,S=1839,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156030327.H474473P18724.mbox1.freenet.de,S=1649,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156030963.H627766P28091.mbox1.freenet.de,S=2522,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156031101.H865938P30784.mbox1.freenet.de,S=1884,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156035905.H438180P20429.mbox1.freenet.de,S=16274,L=222</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156038032.H113870P16352.mbox1.freenet.de,S=7836,L=156</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:35Z</date>
+ </dict>
+ <key>1156044240.H86659P12513.mbox1.freenet.de,S=1682,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:36Z</date>
+ </dict>
+ <key>1156051753.H810260P18368.mbox1.freenet.de,S=1558,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:36Z</date>
+ </dict>
+ <key>1156052106.H745766P25697.mbox1.freenet.de,S=1661,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:36Z</date>
+ </dict>
+ <key>1156052701.H989197P4642.mbox1.freenet.de,S=3779,L=57</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:36Z</date>
+ </dict>
+ <key>1156054400.H787458P23430.mbox1.freenet.de,S=1741,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:36Z</date>
+ </dict>
+ <key>1156058019.H137367P3773.mbox1.freenet.de,S=39348,L=700</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:36Z</date>
+ </dict>
+ <key>1156058731.H311112P14455.mbox1.freenet.de,S=39941,L=706</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:37Z</date>
+ </dict>
+ <key>1156060483.H441837P7720.mbox1.freenet.de,S=2072,L=46</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:37Z</date>
+ </dict>
+ <key>1156061154.H29866P20249.mbox1.freenet.de,S=3251,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:37Z</date>
+ </dict>
+ <key>1156061500.H245944P30226.mbox1.freenet.de,S=1849,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T09:54:37Z</date>
+ </dict>
+ <key>1156068184.H339810P27736.mbox1.freenet.de,S=2760,L=103</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T10:42:01Z</date>
+ </dict>
+ <key>1156069993.H861771P26685.mbox1.freenet.de,S=1731,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T10:42:02Z</date>
+ </dict>
+ <key>1156072809.H896197P13488.mbox1.freenet.de,S=2683,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T11:26:58Z</date>
+ </dict>
+ <key>1156073950.H741083P2725.mbox1.freenet.de,S=2736,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T13:46:06Z</date>
+ </dict>
+ <key>1156074277.H297055P12345.mbox1.freenet.de,S=4930,L=216</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T13:46:07Z</date>
+ </dict>
+ <key>1156074822.H289674P486.mbox1.freenet.de,S=1674,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T13:46:07Z</date>
+ </dict>
+ <key>1156076589.H226383P3006.mbox1.freenet.de,S=13122,L=182</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T13:46:07Z</date>
+ </dict>
+ <key>1156082622.H613666P8035.mbox1.freenet.de,S=1490,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T14:05:51Z</date>
+ </dict>
+ <key>1156084473.H524332P15040.mbox1.freenet.de,S=1386,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T14:36:01Z</date>
+ </dict>
+ <key>1156090742.H552842P4682.mbox1.freenet.de,S=1724,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T16:26:17Z</date>
+ </dict>
+ <key>1156090980.H629428P10269.mbox1.freenet.de,S=40061,L=704</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T16:26:18Z</date>
+ </dict>
+ <key>1156093399.H69021P27455.mbox1.freenet.de,S=2605,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T20:32:26Z</date>
+ </dict>
+ <key>1156093776.H964394P3345.mbox1.freenet.de,S=1648,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T20:32:28Z</date>
+ </dict>
+ <key>1156100633.H224315P22071.mbox1.freenet.de,S=6550,L=176</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T20:32:28Z</date>
+ </dict>
+ <key>1156100691.H592228P23082.mbox1.freenet.de,S=8705,L=235</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T20:32:28Z</date>
+ </dict>
+ <key>1156104739.H462735P1094.mbox1.freenet.de,S=2602,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-20T20:32:28Z</date>
+ </dict>
+ <key>1156109830.H17914P19227.mbox1.freenet.de,S=2492,L=78</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:49Z</date>
+ </dict>
+ <key>1156112101.H795367P17167.mbox1.freenet.de,S=2647,L=101</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156113315.H343544P762.mbox1.freenet.de,S=1658,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156114091.H694234P11549.mbox1.freenet.de,S=1772,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156115165.H762268P24644.mbox1.freenet.de,S=14527,L=200</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156116327.H660320P9489.mbox1.freenet.de,S=1460,L=38</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156116534.H55291P13612.mbox1.freenet.de,S=1449,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156119986.H882019P25652.mbox1.freenet.de,S=2823,L=104</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:50Z</date>
+ </dict>
+ <key>1156122853.H28178P27742.mbox1.freenet.de,S=2002,L=45</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:51Z</date>
+ </dict>
+ <key>1156131466.H176825P3041.mbox1.freenet.de,S=1708,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:51Z</date>
+ </dict>
+ <key>1156133130.H663462P20675.mbox1.freenet.de,S=2592,L=78</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:51Z</date>
+ </dict>
+ <key>1156133473.H468753P24781.mbox1.freenet.de,S=1739,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:51Z</date>
+ </dict>
+ <key>1156141359.H46959P9189.mbox1.freenet.de,S=1998,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:51Z</date>
+ </dict>
+ <key>1156141630.H425226P15434.mbox1.freenet.de,S=40631,L=707</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T06:48:52Z</date>
+ </dict>
+ <key>1156143777.H401918P28037.mbox1.freenet.de,S=37278,L=697</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T07:11:22Z</date>
+ </dict>
+ <key>1156145388.H594392P28582.mbox1.freenet.de,S=2833,L=97</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T07:47:00Z</date>
+ </dict>
+ <key>1156151885.H882182P30496.mbox1.freenet.de,S=1743,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T12:46:55Z</date>
+ </dict>
+ <key>1156153111.H998990P24464.mbox1.freenet.de,S=4674,L=114</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T12:46:56Z</date>
+ </dict>
+ <key>1156154981.H430092P31085.mbox1.freenet.de,S=2626,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T12:46:56Z</date>
+ </dict>
+ <key>1156155567.H266846P10396.mbox1.freenet.de,S=37062,L=649</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T12:46:57Z</date>
+ </dict>
+ <key>1156156653.H123786P1237.mbox1.freenet.de,S=1770,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T12:46:57Z</date>
+ </dict>
+ <key>1156170396.H551730P19808.mbox1.freenet.de,S=41193,L=711</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T15:18:19Z</date>
+ </dict>
+ <key>1156170466.H740758P21835.mbox1.freenet.de,S=51711,L=869</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T15:18:20Z</date>
+ </dict>
+ <key>1156171031.H926392P4585.mbox1.freenet.de,S=2822,L=82</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T15:18:20Z</date>
+ </dict>
+ <key>1156172230.H512316P6915.mbox1.freenet.de,S=24759,L=720</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T15:18:21Z</date>
+ </dict>
+ <key>1156172650.H717242P18326.mbox1.freenet.de,S=36601,L=652</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T15:18:21Z</date>
+ </dict>
+ <key>1156173039.H615099P28777.mbox1.freenet.de,S=1559,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T15:18:22Z</date>
+ </dict>
+ <key>1156177594.H375484P16541.mbox1.freenet.de,S=1656,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T17:44:50Z</date>
+ </dict>
+ <key>1156179152.H152794P24323.mbox1.freenet.de,S=4969,L=131</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T17:44:50Z</date>
+ </dict>
+ <key>1156179647.H207059P6245.mbox1.freenet.de,S=16092,L=443</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T17:44:51Z</date>
+ </dict>
+ <key>1156179723.H67824P7891.mbox1.freenet.de,S=15277,L=348</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T17:44:51Z</date>
+ </dict>
+ <key>1156180060.H346675P15430.mbox1.freenet.de,S=1685,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T17:44:51Z</date>
+ </dict>
+ <key>1156184445.H418632P10236.mbox1.freenet.de,S=4378,L=89</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T19:14:56Z</date>
+ </dict>
+ <key>1156186699.H700456P19447.mbox1.freenet.de,S=1233,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T19:14:56Z</date>
+ </dict>
+ <key>1156187075.H773717P27146.mbox1.freenet.de,S=6439,L=168</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T19:14:56Z</date>
+ </dict>
+ <key>1156187142.H119915P28764.mbox1.freenet.de,S=24952,L=729</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T19:14:57Z</date>
+ </dict>
+ <key>1156188434.H624660P25438.mbox1.freenet.de,S=1233,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T19:28:29Z</date>
+ </dict>
+ <key>1156190016.H585491P4204.mbox1.freenet.de,S=1233,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T20:10:45Z</date>
+ </dict>
+ <key>1156190229.H892273P10385.mbox1.freenet.de,S=31774,L=502</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T20:10:46Z</date>
+ </dict>
+ <key>1156191121.H58939P1014.mbox1.freenet.de,S=8464,L=170</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T20:15:48Z</date>
+ </dict>
+ <key>1156192210.H445719P28360.mbox1.freenet.de,S=3627,L=103</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T20:33:16Z</date>
+ </dict>
+ <key>1156193539.H965586P24560.mbox1.freenet.de,S=1691,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-21T20:53:33Z</date>
+ </dict>
+ <key>1156194052.H843898P1112.mbox1.freenet.de,S=1967,L=44</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:22Z</date>
+ </dict>
+ <key>1156196073.H946686P6609.mbox1.freenet.de,S=2988,L=69</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:24Z</date>
+ </dict>
+ <key>1156196215.H436396P8975.mbox1.freenet.de,S=7371,L=200</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:24Z</date>
+ </dict>
+ <key>1156196403.H875793P12311.mbox1.freenet.de,S=2590,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:24Z</date>
+ </dict>
+ <key>1156197011.H296928P21563.mbox1.freenet.de,S=3738,L=86</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:24Z</date>
+ </dict>
+ <key>1156200476.H48277P29045.mbox1.freenet.de,S=1986,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:25Z</date>
+ </dict>
+ <key>1156201055.H431831P10859.mbox1.freenet.de,S=1968,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:25Z</date>
+ </dict>
+ <key>1156203189.H194716P13945.mbox1.freenet.de,S=2412,L=64</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:25Z</date>
+ </dict>
+ <key>1156204076.H822392P25643.mbox1.freenet.de,S=1589,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:25Z</date>
+ </dict>
+ <key>1156204147.H248290P26727.mbox1.freenet.de,S=2650,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:25Z</date>
+ </dict>
+ <key>1156207011.H734989P30440.mbox1.freenet.de,S=30056,L=489</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:28Z</date>
+ </dict>
+ <key>1156210710.H728400P8151.mbox1.freenet.de,S=2498,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:28Z</date>
+ </dict>
+ <key>1156213391.H964402P5554.mbox1.freenet.de,S=5473,L=143</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:28Z</date>
+ </dict>
+ <key>1156215292.H927815P28287.mbox1.freenet.de,S=1586,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:28Z</date>
+ </dict>
+ <key>1156217397.H976068P19638.mbox1.freenet.de,S=1479,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T06:40:28Z</date>
+ </dict>
+ <key>1156229965.H933681P25828.mbox1.freenet.de,S=2421,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T07:14:03Z</date>
+ </dict>
+ <key>1156234060.H167927P7982.mbox1.freenet.de,S=3144,L=98</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T10:09:21Z</date>
+ </dict>
+ <key>1156240198.H552010P24198.mbox1.freenet.de,S=38144,L=593</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T10:09:21Z</date>
+ </dict>
+ <key>1156240239.H444189P25491.mbox1.freenet.de,S=38042,L=599</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T10:09:21Z</date>
+ </dict>
+ <key>1156243974.H843643P20009.mbox1.freenet.de,S=1676,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T13:10:59Z</date>
+ </dict>
+ <key>1156247073.H368328P32534.mbox1.freenet.de,S=36249,L=569</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T13:11:02Z</date>
+ </dict>
+ <key>1156247921.H894091P26986.mbox1.freenet.de,S=2596,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T13:11:03Z</date>
+ </dict>
+ <key>1156248662.H609680P13224.mbox1.freenet.de,S=37647,L=593</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T13:11:03Z</date>
+ </dict>
+ <key>1156254708.H669035P13799.mbox1.freenet.de,S=1542,L=27</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T13:56:52Z</date>
+ </dict>
+ <key>1156256353.H821648P30051.mbox1.freenet.de,S=3774,L=98</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T14:20:54Z</date>
+ </dict>
+ <key>1156256369.H12830P30457.mbox1.freenet.de,S=17408,L=480</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T14:20:55Z</date>
+ </dict>
+ <key>1156256982.H147690P13434.mbox1.freenet.de,S=1567,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T14:31:14Z</date>
+ </dict>
+ <key>1156260058.H608282P25599.mbox1.freenet.de,S=2984,L=66</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:04Z</date>
+ </dict>
+ <key>1156260534.H14160P5828.mbox1.freenet.de,S=3533,L=104</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:08Z</date>
+ </dict>
+ <key>1156265731.H362387P27705.mbox1.freenet.de,S=2127,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:08Z</date>
+ </dict>
+ <key>1156265942.H904452P1499.mbox1.freenet.de,S=2295,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:08Z</date>
+ </dict>
+ <key>1156273508.H146082P6958.mbox1.freenet.de,S=23332,L=624</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:08Z</date>
+ </dict>
+ <key>1156274107.H293316P22750.mbox1.freenet.de,S=5610,L=144</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:11Z</date>
+ </dict>
+ <key>1156275874.H463874P31726.mbox1.freenet.de,S=2711,L=81</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T19:53:11Z</date>
+ </dict>
+ <key>1156277419.H710606P2701.mbox1.freenet.de,S=2563,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-22T20:24:08Z</date>
+ </dict>
+ <key>1156285689.H685812P12554.mbox1.freenet.de,S=5035,L=121</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:04Z</date>
+ </dict>
+ <key>1156286221.H591132P20728.mbox1.freenet.de,S=1667,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:05Z</date>
+ </dict>
+ <key>1156286563.H445822P29014.mbox1.freenet.de,S=1444,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:05Z</date>
+ </dict>
+ <key>1156289183.H89604P29422.mbox1.freenet.de,S=1575,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156289963.H647307P6913.mbox1.freenet.de,S=3304,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156290394.H586113P16128.mbox1.freenet.de,S=5022,L=128</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156293727.H129171P20060.mbox1.freenet.de,S=1420,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156297635.H278548P20388.mbox1.freenet.de,S=1679,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156300709.H183097P594.mbox1.freenet.de,S=2569,L=78</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156305288.H901531P8596.mbox1.freenet.de,S=2933,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156310085.H727481P21928.mbox1.freenet.de,S=1594,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:06Z</date>
+ </dict>
+ <key>1156311497.H823295P7719.mbox1.freenet.de,S=17437,L=292</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:07Z</date>
+ </dict>
+ <key>1156311960.H256277P16603.mbox1.freenet.de,S=1878,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:41:07Z</date>
+ </dict>
+ <key>1156315347.H730367P1334.mbox1.freenet.de,S=2576,L=79</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:48:34Z</date>
+ </dict>
+ <key>1156315856.H546199P10284.mbox1.freenet.de,S=5053,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:58:08Z</date>
+ </dict>
+ <key>1156316015.H836293P15059.mbox1.freenet.de,S=2637,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T06:58:08Z</date>
+ </dict>
+ <key>1156317490.H316128P12220.mbox1.freenet.de,S=1609,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T07:53:19Z</date>
+ </dict>
+ <key>1156323069.H397905P7644.mbox1.freenet.de,S=1731,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:31Z</date>
+ </dict>
+ <key>1156328305.H107557P11033.mbox1.freenet.de,S=2684,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:31Z</date>
+ </dict>
+ <key>1156328610.H899510P21236.mbox1.freenet.de,S=20398,L=332</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:32Z</date>
+ </dict>
+ <key>1156329141.H976121P6861.mbox1.freenet.de,S=22614,L=364</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:34Z</date>
+ </dict>
+ <key>1156329381.H661923P16478.mbox1.freenet.de,S=3571,L=102</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:34Z</date>
+ </dict>
+ <key>1156331767.H169951P4175.mbox1.freenet.de,S=19386,L=321</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:34Z</date>
+ </dict>
+ <key>1156333292.H687377P23174.mbox1.freenet.de,S=19034,L=316</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:01:35Z</date>
+ </dict>
+ <key>1156335065.H813527P25388.mbox1.freenet.de,S=1855,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:20:52Z</date>
+ </dict>
+ <key>1156335128.H506627P27897.mbox1.freenet.de,S=34219,L=596</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T12:20:52Z</date>
+ </dict>
+ <key>1156337693.H916709P26274.mbox1.freenet.de,S=1488,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T14:33:15Z</date>
+ </dict>
+ <key>1156339969.H201016P29226.mbox1.freenet.de,S=2729,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T14:33:16Z</date>
+ </dict>
+ <key>1156340983.H489572P1578.mbox1.freenet.de,S=5353,L=138</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T14:33:18Z</date>
+ </dict>
+ <key>1156343905.H613262P29822.mbox1.freenet.de,S=18033,L=871</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T14:42:42Z</date>
+ </dict>
+ <key>1156347308.H585921P10247.mbox1.freenet.de,S=2509,L=78</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:03:36Z</date>
+ </dict>
+ <key>1156348235.H605443P5820.mbox1.freenet.de,S=24063,L=831</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:03:37Z</date>
+ </dict>
+ <key>1156349535.H189526P13945.mbox1.freenet.de,S=2784,L=82</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:03:37Z</date>
+ </dict>
+ <key>1156349791.H518401P22732.mbox1.freenet.de,S=7069,L=186</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:03:38Z</date>
+ </dict>
+ <key>1156352330.H449068P8873.mbox1.freenet.de,S=6059,L=155</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:03:38Z</date>
+ </dict>
+ <key>1156352921.H600969P29626.mbox1.freenet.de,S=25063,L=716</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:18:15Z</date>
+ </dict>
+ <key>1156353931.H733759P28776.mbox1.freenet.de,S=9424,L=258</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:38:06Z</date>
+ </dict>
+ <key>1156354448.H385753P11448.mbox1.freenet.de,S=1666,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T17:38:06Z</date>
+ </dict>
+ <key>1156355946.H172785P26542.mbox1.freenet.de,S=3133,L=98</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T18:02:28Z</date>
+ </dict>
+ <key>1156356879.H751770P17495.mbox1.freenet.de,S=64948,L=1457</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T19:11:41Z</date>
+ </dict>
+ <key>1156357949.H742519P7828.mbox1.freenet.de,S=1742,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T19:11:41Z</date>
+ </dict>
+ <key>1156359742.H927083P11243.mbox1.freenet.de,S=8924,L=302</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T19:11:41Z</date>
+ </dict>
+ <key>1156359904.H859310P14363.mbox1.freenet.de,S=6729,L=173</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T19:11:41Z</date>
+ </dict>
+ <key>1156360217.H1360P19796.mbox1.freenet.de,S=1649,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T19:11:42Z</date>
+ </dict>
+ <key>1156360946.H982607P633.mbox1.freenet.de,S=39555,L=717</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T21:19:56Z</date>
+ </dict>
+ <key>1156363621.H577806P17175.mbox1.freenet.de,S=1587,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T21:20:00Z</date>
+ </dict>
+ <key>1156364087.H814559P31535.mbox1.freenet.de,S=1532,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T21:20:00Z</date>
+ </dict>
+ <key>1156364446.H917308P8932.mbox1.freenet.de,S=1621,L=32</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T21:20:00Z</date>
+ </dict>
+ <key>1156366127.H829818P8733.mbox1.freenet.de,S=1353,L=31</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-23T21:20:00Z</date>
+ </dict>
+ <key>1156369166.H442716P21101.mbox1.freenet.de,S=2562,L=70</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:44Z</date>
+ </dict>
+ <key>1156370291.H719P6952.mbox1.freenet.de,S=1616,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:45Z</date>
+ </dict>
+ <key>1156371667.H788296P29922.mbox1.freenet.de,S=4999,L=132</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:45Z</date>
+ </dict>
+ <key>1156375748.H902317P11345.mbox1.freenet.de,S=2497,L=77</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:45Z</date>
+ </dict>
+ <key>1156384457.H617314P16691.mbox1.freenet.de,S=1584,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:46Z</date>
+ </dict>
+ <key>1156389145.H523602P9740.mbox1.freenet.de,S=2575,L=80</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:46Z</date>
+ </dict>
+ <key>1156390322.H953020P24591.mbox1.freenet.de,S=2138,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:46Z</date>
+ </dict>
+ <key>1156391277.H842866P5178.mbox1.freenet.de,S=1573,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:46Z</date>
+ </dict>
+ <key>1156392812.H490436P26555.mbox1.freenet.de,S=1943,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T05:58:46Z</date>
+ </dict>
+ <key>1156409023.H275252P19047.mbox1.freenet.de,S=16951,L=282</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T10:16:05Z</date>
+ </dict>
+ <key>1156409406.H140046P26739.mbox1.freenet.de,S=1689,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T10:16:05Z</date>
+ </dict>
+ <key>1156415085.H201171P20387.mbox1.freenet.de,S=1814,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T10:25:52Z</date>
+ </dict>
+ <key>1156416657.H807142P26711.mbox1.freenet.de,S=312347,L=4119</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T10:56:18Z</date>
+ </dict>
+ <key>1156423141.H738283P9595.mbox1.freenet.de,S=8204,L=155</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T13:14:17Z</date>
+ </dict>
+ <key>1156423586.H986469P18910.mbox1.freenet.de,S=24526,L=378</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T13:14:19Z</date>
+ </dict>
+ <key>1156423766.H305574P22337.mbox1.freenet.de,S=1757,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T13:14:19Z</date>
+ </dict>
+ <key>1156426034.H411561P11292.mbox1.freenet.de,S=1751,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T14:53:56Z</date>
+ </dict>
+ <key>1156426257.H814508P17034.mbox1.freenet.de,S=2142,L=50</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T14:53:57Z</date>
+ </dict>
+ <key>1156432315.H944338P11912.mbox1.freenet.de,S=1689,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T15:40:00Z</date>
+ </dict>
+ <key>1156437064.H929760P27072.mbox1.freenet.de,S=1396,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T16:34:59Z</date>
+ </dict>
+ <key>1156437552.H24990P7839.mbox1.freenet.de,S=1772,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T18:00:14Z</date>
+ </dict>
+ <key>1156437671.H85068P11659.mbox1.freenet.de,S=1684,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T18:00:15Z</date>
+ </dict>
+ <key>1156441998.H409093P17815.mbox1.freenet.de,S=5785,L=139</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T18:00:15Z</date>
+ </dict>
+ <key>1156446198.H125878P7360.mbox1.freenet.de,S=8722,L=270</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T19:26:26Z</date>
+ </dict>
+ <key>1156446298.H279321P9602.mbox1.freenet.de,S=7215,L=203</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T19:26:26Z</date>
+ </dict>
+ <key>1156446397.H304492P11756.mbox1.freenet.de,S=20240,L=558</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T19:26:27Z</date>
+ </dict>
+ <key>1156450351.H298345P26939.mbox1.freenet.de,S=4133,L=115</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T21:15:59Z</date>
+ </dict>
+ <key>1156453995.H371780P29628.mbox1.freenet.de,S=1580,L=28</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-24T21:16:00Z</date>
+ </dict>
+ <key>1156460441.H902493P17252.mbox1.freenet.de,S=1585,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T06:39:53Z</date>
+ </dict>
+ <key>1156460928.H250512P22577.mbox1.freenet.de,S=2571,L=78</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T06:40:10Z</date>
+ </dict>
+ <key>1156468449.H428556P31977.mbox1.freenet.de,S=1758,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T06:40:10Z</date>
+ </dict>
+ <key>1156468701.H640830P2031.mbox1.freenet.de,S=2381,L=76</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T06:40:10Z</date>
+ </dict>
+ <key>1156471052.H538705P24970.mbox1.freenet.de,S=3245,L=90</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T06:40:10Z</date>
+ </dict>
+ <key>1156472233.H352865P4623.mbox1.freenet.de,S=542213,L=7800</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T06:40:13Z</date>
+ </dict>
+ <key>1156490541.H545396P8320.mbox1.freenet.de,S=96654,L=1346</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T07:25:02Z</date>
+ </dict>
+ <key>1156492596.H148223P20881.mbox1.freenet.de,S=1999,L=34</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T09:31:31Z</date>
+ </dict>
+ <key>1156493168.H185516P7060.mbox1.freenet.de,S=1816,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T09:31:31Z</date>
+ </dict>
+ <key>1156502823.H884919P26106.mbox1.freenet.de,S=1691,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T11:31:46Z</date>
+ </dict>
+ <key>1156507113.H321643P19255.mbox1.freenet.de,S=5378,L=140</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T12:35:04Z</date>
+ </dict>
+ <key>1156507414.H963810P28046.mbox1.freenet.de,S=2857,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T12:35:04Z</date>
+ </dict>
+ <key>1156513457.H597038P18199.mbox1.freenet.de,S=1486,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:22Z</date>
+ </dict>
+ <key>1156516574.H33272P14791.mbox1.freenet.de,S=6938,L=118</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:23Z</date>
+ </dict>
+ <key>1156517309.H650800P29358.mbox1.freenet.de,S=2982,L=75</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:23Z</date>
+ </dict>
+ <key>1156522127.H373876P2643.mbox1.freenet.de,S=1587,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:23Z</date>
+ </dict>
+ <key>1156522766.H246625P20682.mbox1.freenet.de,S=3333,L=100</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:23Z</date>
+ </dict>
+ <key>1156529537.H136065P26779.mbox1.freenet.de,S=3780,L=116</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:24Z</date>
+ </dict>
+ <key>1156530524.H954463P14172.mbox1.freenet.de,S=3712,L=115</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T18:39:24Z</date>
+ </dict>
+ <key>1156532587.H787648P19469.mbox1.freenet.de,S=16095,L=437</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T19:22:38Z</date>
+ </dict>
+ <key>1156532679.H554445P21183.mbox1.freenet.de,S=5584,L=162</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T19:22:38Z</date>
+ </dict>
+ <key>1156532748.H638119P22590.mbox1.freenet.de,S=9089,L=198</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T19:22:38Z</date>
+ </dict>
+ <key>1156534574.H270836P24004.mbox1.freenet.de,S=21643,L=350</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T21:09:33Z</date>
+ </dict>
+ <key>1156536377.H578706P25236.mbox1.freenet.de,S=8217,L=176</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T21:09:36Z</date>
+ </dict>
+ <key>1156538955.H25329P11731.mbox1.freenet.de,S=1765,L=55</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T21:09:36Z</date>
+ </dict>
+ <key>1156541102.H692666P12671.mbox1.freenet.de,S=1506,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-25T21:38:36Z</date>
+ </dict>
+ <key>1156544069.H856248P27072.mbox1.freenet.de,S=1562,L=29</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:58Z</date>
+ </dict>
+ <key>1156549318.H314695P5966.mbox1.freenet.de,S=1594,L=51</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:58Z</date>
+ </dict>
+ <key>1156552574.H442749P8681.mbox1.freenet.de,S=28405,L=522</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:58Z</date>
+ </dict>
+ <key>1156553161.H622189P14963.mbox1.freenet.de,S=23163,L=374</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:59Z</date>
+ </dict>
+ <key>1156561537.H227330P14836.mbox1.freenet.de,S=3759,L=116</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:59Z</date>
+ </dict>
+ <key>1156564400.H36368P11833.mbox1.freenet.de,S=3864,L=118</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:59Z</date>
+ </dict>
+ <key>1156574920.H627211P18312.mbox1.freenet.de,S=3010,L=86</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:15:59Z</date>
+ </dict>
+ <key>1156576237.H864144P3629.mbox1.freenet.de,S=3196,L=109</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:16:00Z</date>
+ </dict>
+ <key>1156576267.H974879P4022.mbox1.freenet.de,S=3065,L=107</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T07:16:00Z</date>
+ </dict>
+ <key>1156579309.H517997P12771.mbox1.freenet.de,S=1724,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T09:38:43Z</date>
+ </dict>
+ <key>1156580704.H8509P31929.mbox1.freenet.de,S=1648,L=54</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T09:38:43Z</date>
+ </dict>
+ <key>1156581378.H425638P8539.mbox1.freenet.de,S=3939,L=119</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T09:38:44Z</date>
+ </dict>
+ <key>1156581789.H721913P14216.mbox1.freenet.de,S=7053,L=123</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T09:38:44Z</date>
+ </dict>
+ <key>1156590749.H170677P27688.mbox1.freenet.de,S=3377,L=112</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T11:43:22Z</date>
+ </dict>
+ <key>1156590890.H501398P30491.mbox1.freenet.de,S=1507,L=36</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T11:43:23Z</date>
+ </dict>
+ <key>1156594169.H314422P20793.mbox1.freenet.de,S=3866,L=117</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T12:59:47Z</date>
+ </dict>
+ <key>1156598595.H104465P28754.mbox1.freenet.de,S=1695,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T13:59:46Z</date>
+ </dict>
+ <key>1156602381.H87196P22354.mbox1.freenet.de,S=1632,L=52</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T14:59:32Z</date>
+ </dict>
+ <key>1156607782.H396993P12508.mbox1.freenet.de,S=5154,L=133</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T16:23:15Z</date>
+ </dict>
+ <key>1156608275.H103212P28930.mbox1.freenet.de,S=1350,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T16:23:16Z</date>
+ </dict>
+ <key>1156610616.H638298P7490.mbox1.freenet.de,S=4018,L=111</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T17:05:52Z</date>
+ </dict>
+ <key>1156610763.H278725P10198.mbox1.freenet.de,S=3691,L=58</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T17:05:53Z</date>
+ </dict>
+ <key>1156617667.H152062P26956.mbox1.freenet.de,S=4704,L=89</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T19:30:56Z</date>
+ </dict>
+ <key>1156618965.H215788P16362.mbox1.freenet.de,S=24100,L=687</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T19:30:57Z</date>
+ </dict>
+ <key>1156619069.H69198P18118.mbox1.freenet.de,S=8816,L=240</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T19:30:57Z</date>
+ </dict>
+ <key>1156619142.H495546P19352.mbox1.freenet.de,S=5115,L=134</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T19:30:57Z</date>
+ </dict>
+ <key>1156622683.H623990P9695.mbox1.freenet.de,S=4462,L=119</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-26T20:55:10Z</date>
+ </dict>
+ <key>1156627302.H474172P6812.mbox1.freenet.de,S=1705,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:46Z</date>
+ </dict>
+ <key>1156629242.H605644P32006.mbox1.freenet.de,S=1683,L=43</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:47Z</date>
+ </dict>
+ <key>1156633050.H581303P13138.mbox1.freenet.de,S=1524,L=30</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:47Z</date>
+ </dict>
+ <key>1156633485.H534083P21169.mbox1.freenet.de,S=3805,L=116</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:47Z</date>
+ </dict>
+ <key>1156643912.H983156P23127.mbox1.freenet.de,S=3786,L=116</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:47Z</date>
+ </dict>
+ <key>1156645412.H702961P12524.mbox1.freenet.de,S=1590,L=37</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:47Z</date>
+ </dict>
+ <key>1156646412.H830885P22234.mbox1.freenet.de,S=3555,L=104</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:47Z</date>
+ </dict>
+ <key>1156648116.H733591P6025.mbox1.freenet.de,S=23089,L=370</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:48Z</date>
+ </dict>
+ <key>1156650850.H755558P2627.mbox1.freenet.de,S=1560,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:48Z</date>
+ </dict>
+ <key>1156657047.H587784P18251.mbox1.freenet.de,S=1699,L=56</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:48Z</date>
+ </dict>
+ <key>1156659804.H361202P11295.mbox1.freenet.de,S=4485,L=118</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T09:32:48Z</date>
+ </dict>
+ <key>1156677067.H165927P23712.mbox1.freenet.de,S=3816,L=116</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T11:22:35Z</date>
+ </dict>
+ <key>1156677789.H338206P3684.mbox1.freenet.de,S=3917,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T11:23:38Z</date>
+ </dict>
+ <key>1156678063.H539715P10854.mbox1.freenet.de,S=2414,L=48</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T11:33:05Z</date>
+ </dict>
+ <key>1156678360.H217893P18381.mbox1.freenet.de,S=1977,L=35</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T11:33:05Z</date>
+ </dict>
+ <key>1156679377.H960667P9014.mbox1.freenet.de,S=1780,L=33</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T11:59:11Z</date>
+ </dict>
+ <key>1156681141.H749219P15470.mbox1.freenet.de,S=1742,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T12:38:44Z</date>
+ </dict>
+ <key>1156682243.H802388P2173.mbox1.freenet.de,S=4615,L=120</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T12:38:44Z</date>
+ </dict>
+ <key>1156685948.H91108P27966.mbox1.freenet.de,S=1478,L=39</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T13:45:01Z</date>
+ </dict>
+ <key>1156686125.H586308P31263.mbox1.freenet.de,S=6825,L=95</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T13:45:02Z</date>
+ </dict>
+ <key>1156687202.H377173P17632.mbox1.freenet.de,S=1644,L=53</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T14:20:35Z</date>
+ </dict>
+ <key>1156690381.H436758P11593.mbox1.freenet.de,S=5589,L=144</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:01Z</date>
+ </dict>
+ <key>1156691746.H108969P4127.mbox1.freenet.de,S=20903,L=341</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:04Z</date>
+ </dict>
+ <key>1156692551.H254066P19430.mbox1.freenet.de,S=3873,L=117</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:04Z</date>
+ </dict>
+ <key>1156694718.H545079P28530.mbox1.freenet.de,S=21022,L=344</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:04Z</date>
+ </dict>
+ <key>1156696327.H98631P26821.mbox1.freenet.de,S=9038,L=120</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:04Z</date>
+ </dict>
+ <key>1156696693.H413970P1627.mbox1.freenet.de,S=2048,L=47</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:04Z</date>
+ </dict>
+ <key>1156697667.H784900P20074.mbox1.freenet.de,S=1723,L=42</key>
+ <dict>
+ <key>DateDownloaded</key>
+ <date>2006-08-27T17:50:04Z</date>
+ </dict>
+</dict>
+</plist>
diff --git a/Source/WebCore/manual-tests/memory/string-growth.html b/Source/WebCore/manual-tests/memory/string-growth.html
new file mode 100644
index 0000000..2f921d0
--- /dev/null
+++ b/Source/WebCore/manual-tests/memory/string-growth.html
@@ -0,0 +1,16 @@
+<script>
+var x = "x";
+
+for (var i = 1; i < 23; ++i) {
+ x = x + x;
+}
+
+// x should now be a 2^23 character string, which is 16M in size.
+
+var y;
+
+// now append to it repeatedly in a way that prevents buffer sharing
+for (var i = 0; i < 1000; ++i) {
+ y = x + i;
+}
+</script>
diff --git a/Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseText.html b/Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseText.html
new file mode 100644
index 0000000..463be57
--- /dev/null
+++ b/Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseText.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>TestWidget 1.3</title>
+ <script type="text/javascript">
+ var mainDiv;
+ var widgetID = "12345678";
+
+ function init() {
+ mainDiv = document.getElementById( "main" );
+
+ if ( window.widget ) {
+ widget.setCloseBoxOffset( 304, 16 );
+ window.resizeTo( 640, 480 );
+ //widgetID = widget.identifier;
+ }
+ }
+
+ function getLocalMailIDList() {
+ var storedLocalMailIDList = new Array();
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);
+ xmlHttp.send(null);
+
+ if (xmlHttp.readyState == 4) {
+ xmlHttp.responseText;
+ }
+ }
+
+ function getLocalMailIDList2() {
+ var storedLocalMailIDList = new Array();
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);
+ xmlHttp.send(null);
+
+
+ if (xmlHttp.readyState == 4) {
+ xmlHttp.responseText;
+ }
+ }
+
+ function clear() {
+ mainDiv.innerText = "C:\\>";
+ }
+
+ function fillMyRam() {
+ getLocalMailIDList2();
+ setTimeout( "fillMyRam();", 500 );
+ }
+ </script>
+ </head>
+
+ <body onLoad="init();">
+ <div><a href="javascript:fillMyRam();">fillMyRam</a></div>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseXML.html b/Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseXML.html
new file mode 100644
index 0000000..939302a
--- /dev/null
+++ b/Source/WebCore/manual-tests/memory/xhr-multiple-requests-responseXML.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>TestWidget 1.3</title>
+ <script type="text/javascript">
+ var mainDiv;
+ var widgetID = "12345678";
+
+ function init() {
+ mainDiv = document.getElementById( "main" );
+
+ if ( window.widget ) {
+ widget.setCloseBoxOffset( 304, 16 );
+ window.resizeTo( 640, 480 );
+ //widgetID = widget.identifier;
+ }
+ }
+
+ function getLocalMailIDList() {
+ var storedLocalMailIDList = new Array();
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);
+ xmlHttp.send(null);
+
+ if (xmlHttp.readyState == 4) {
+ var items = xmlHttp.responseXML;
+ var counter = 0;
+
+ for ( var i = 0; i < items.childNodes.length; i++ ) {
+ counter++;
+
+ if ( items.childNodes[i].nodeName == "plist" ) {
+ counter++;
+ //alert( items.childNodes[i].nodeName );
+
+ for ( var j = 0; j < items.childNodes[i].childNodes.length; j++) {
+ counter++;
+
+ if ( items.childNodes[i].childNodes[j].nodeName == "dict" ) {
+ counter++;
+ //alert( items.childNodes[i].childNodes[j].nodeName );
+
+ for ( var k = 0; k < items.childNodes[i].childNodes[j].childNodes.length; k++) {
+ counter++;
+
+ if ( items.childNodes[i].childNodes[j].childNodes[k].nodeName == "key" ) {
+ counter++;
+ //alert( items.childNodes[i].childNodes[j].childNodes[k].nodeName );
+ //alert( items.childNodes[i].childNodes[j].childNodes[k].firstChild.nodeValue );
+ storedLocalMailIDList.push( items.childNodes[i].childNodes[j].childNodes[k].firstChild.nodeValue );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ for ( var i = 0; i < storedLocalMailIDList.length; i++ ) {
+ counter++;
+ mainDiv.innerText = storedLocalMailIDList[i];
+ }
+ */
+ //alert(storedLocalMailIDList.length);
+
+
+ //storedLocalMailIDList.sort();
+
+ alert(counter);
+ }
+ }
+
+ function getLocalMailIDList2() {
+ var storedLocalMailIDList = new Array();
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);
+ xmlHttp.send(null);
+
+
+ if (xmlHttp.readyState == 4) {
+ var items = xmlHttp.responseXML; //.getElementsByTagName("key");
+
+ /*
+ //alert(items.length);
+
+ for ( var i = 0; i < items.length; i+= 2 ) {
+ //alert( items[i].firstChild.nodeValue );
+ //storedLocalMailIDList.push( items[i].firstChild.nodeValue );
+ }
+
+ //for ( var i = 0; i < storedLocalMailIDList.length; i++ ) {
+ // mainDiv.innerText = storedLocalMailIDList[i];
+ //}
+
+ //alert(storedLocalMailIDList.length);
+
+ //storedLocalMailIDList.sort();
+ */
+ }
+ }
+
+ function clear() {
+ mainDiv.innerText = "C:\\>";
+ }
+
+ function fillMyRam() {
+ getLocalMailIDList2();
+ setTimeout( "fillMyRam();", 500 );
+ }
+ </script>
+ </head>
+
+ <body onLoad="init();">
+ <div><a href="javascript:fillMyRam();">fillMyRam</a></div>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/memory/xhr-multiple-requests.html b/Source/WebCore/manual-tests/memory/xhr-multiple-requests.html
new file mode 100644
index 0000000..17518b9
--- /dev/null
+++ b/Source/WebCore/manual-tests/memory/xhr-multiple-requests.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>TestWidget 1.3</title>
+ <script type="text/javascript">
+ var mainDiv;
+ var widgetID = "12345678";
+
+ function init() {
+ mainDiv = document.getElementById( "main" );
+
+ if ( window.widget ) {
+ widget.setCloseBoxOffset( 304, 16 );
+ window.resizeTo( 640, 480 );
+ //widgetID = widget.identifier;
+ }
+ }
+
+ function getLocalMailIDList() {
+ var storedLocalMailIDList = new Array();
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);
+ xmlHttp.send(null);
+
+ if (xmlHttp.readyState == 4) {
+ }
+ }
+
+ function getLocalMailIDList2() {
+ var storedLocalMailIDList = new Array();
+ var xmlHttp = new XMLHttpRequest();
+ xmlHttp.open("GET", "MessageUidsAlreadyDownloaded2", false);
+ xmlHttp.send(null);
+
+
+ if (xmlHttp.readyState == 4) {
+ }
+ }
+
+ function clear() {
+ mainDiv.innerText = "C:\\>";
+ }
+
+ function fillMyRam() {
+ getLocalMailIDList2();
+ setTimeout( "fillMyRam();", 500 );
+ }
+ </script>
+ </head>
+
+ <body onLoad="init();">
+ <div><a href="javascript:fillMyRam();">fillMyRam</a></div>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/memory/xhr-repeated-string-access.xml b/Source/WebCore/manual-tests/memory/xhr-repeated-string-access.xml
new file mode 100644
index 0000000..efb8e35
--- /dev/null
+++ b/Source/WebCore/manual-tests/memory/xhr-repeated-string-access.xml
@@ -0,0 +1,43 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+ <head>
+ <title>Massive Memory Leak</title>
+ <script>
+ <![CDATA[
+
+ function loadVideo (videoURI) {
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', videoURI, true);
+ xhr.onreadystatechange = function (xhrEvent) {
+ if (xhr.readyState == 3) {
+ var currentLength = xhr.responseText.length;
+ var totalLength = parseInt(xhr.getResponseHeader('Content-Length'), 10);
+ print((Math.round((currentLength / totalLength) * 10000) / 100) + '%');
+ }
+ else if (xhr.readyState == 4) {
+ if (xhr.status == 200) {
+ alert('done loading');
+ alert(xhr.responseText.length);
+ }
+ else {
+ alert('NOK');
+ }
+ }
+ };
+ xhr.send(null);
+ }
+
+ function print (message) {
+ document.getElementById('outlet').textContent = message;
+ }
+
+ ]]>
+ </script>
+ </head>
+
+ <body>
+ <a onclick="loadVideo('http://streamos.atlrec.com/download/atlantic/bjork/video/bjork_itunes1.m4v');">do it!</a>
+ <p id="outlet" />
+ </body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/modal-dialog-arguments.html b/Source/WebCore/manual-tests/modal-dialog-arguments.html
new file mode 100644
index 0000000..9916137
--- /dev/null
+++ b/Source/WebCore/manual-tests/modal-dialog-arguments.html
@@ -0,0 +1,19 @@
+<html>
+<script>
+function runTest() {
+ var o = { };
+ showModalDialog("data:text/html,<scr" + "ipt>dialogArguments['result'] = 'PASS'; window.close() </scr" + "ipt>", o);
+
+ if (o.result == 'PASS')
+ document.getElementById('result').innerHTML = 'SUCCESS';
+}
+
+</script>
+<body>
+<div>
+This tests that modal dialog arguments get passed around correctly. Click the button below to test. The text "SUCCESS" will be shown below if the test was successful.
+</div>
+<button onclick="runTest()">Click Me!</button>
+<div id="result">
+</div>
+</html>
diff --git a/Source/WebCore/manual-tests/modal-dialog-blur-selfclose.html b/Source/WebCore/manual-tests/modal-dialog-blur-selfclose.html
new file mode 100644
index 0000000..c6b2da8
--- /dev/null
+++ b/Source/WebCore/manual-tests/modal-dialog-blur-selfclose.html
@@ -0,0 +1,3 @@
+<script>
+window.close()
+</script>
diff --git a/Source/WebCore/manual-tests/modal-dialog-blur.html b/Source/WebCore/manual-tests/modal-dialog-blur.html
new file mode 100644
index 0000000..bd72aa5
--- /dev/null
+++ b/Source/WebCore/manual-tests/modal-dialog-blur.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head><title>
+Tests blur/focus events with modal dialogs
+</title></head>
+<script>
+var failed = "";
+function failBlur() {
+ failed = "blur";
+}
+function failFocus() {
+ failed = "focus";
+}
+
+var inputElement;
+
+function test() {
+ inputElement = document.getElementById("i")
+ inputElement.focus();
+ inputElement.addEventListener("blur", failBlur, false);
+ inputElement.addEventListener("focus", failFocus, false);
+ window.showModalDialog("modal-dialog-blur-selfclose.html");
+ if (failed) {
+ document.getElementById("status").innerHTML = "FAIL, " + failed;
+ } else {
+ document.getElementById("status").innerHTML = "SUCCESS";
+ }
+}
+</script>
+<body onload="test()">
+<input id="i"></input>
+<div id="status">RUNNING...</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/modal-dialog.html b/Source/WebCore/manual-tests/modal-dialog.html
new file mode 100644
index 0000000..fe8f128
--- /dev/null
+++ b/Source/WebCore/manual-tests/modal-dialog.html
@@ -0,0 +1,27 @@
+<head>
+<script>
+function timerFired()
+{
+ document.getElementById("timerResult").firstChild.data = "Timer fired!";
+}
+
+function closeModal() {
+ window.returnValue = document.form.toWindow.value;
+ window.close();
+}
+
+function init()
+{
+ document.form.fromWindow.value = window.dialogArguments;
+}
+</script>
+</head>
+<body onload="init()">
+<form name="form">
+<p>Here is the text from the main window: <input name="fromWindow"></p>
+<p>Type text here to be sent back to the main window: <input name="toWindow" value="from modal window"></p>
+<p>Then, push this button: <input type="button" value="Close" onClick="closeModal()"></p>
+<p>Push this button to test timer: <input type="button" value="Test Timer" onClick="setTimeout(timerFired, 0)"></p>
+<p id="timerResult">Timer did not fire yet.</p>
+</form>
+</body>
diff --git a/Source/WebCore/manual-tests/mouseevent-on-closeddoc.html b/Source/WebCore/manual-tests/mouseevent-on-closeddoc.html
new file mode 100644
index 0000000..2da76bd
--- /dev/null
+++ b/Source/WebCore/manual-tests/mouseevent-on-closeddoc.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4229177"> 4229177</a> REGRESSION (Denver): crash dispatching mouse events (4608)</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click on the link below, and move your mouse cursor over the blank page that is loaded.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+No crash after moving the mouse over the blank page that is loaded. Nothing happens.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Crash after moving the mouse over the blank page that opens.
+</p>
+
+<a href="resources/mouseevent-on-closeddoc.html">Click this link</a>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/mouseevents-on-textnodes.html b/Source/WebCore/manual-tests/mouseevents-on-textnodes.html
new file mode 100644
index 0000000..2d1c226
--- /dev/null
+++ b/Source/WebCore/manual-tests/mouseevents-on-textnodes.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<script type="text/javascript" language="javascript" charset="utf-8">
+
+ document.onmousedown = doIt;
+
+ function doIt(evt) {
+ var elem = evt.target;
+ var anAttr = null;
+ alert (elem);
+ }
+
+</script>
+
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4196646">4196646</a> target returns text node when it should return the parent node</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click where indicated below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+After clicking, see alert dialogs as described below.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+After clicking, see alert dialogs other than what is described below.
+Specifically, tests #1 and #3 below will alert "[object TEXT]"
+</p>
+
+<p>1. click on this text - you should see an alert that says "[object P]"</p>
+
+<div style="border: 1px dotted red; width: 500px; ">2. click on white space next to this text --> <br>you should see an alert that says "[object DIV]" --> </div><br>
+
+3. click on this text - you should see an alert that says "[object BODY]"<br><br>
+
+4. click on empty whitespace on this page, below this text - you should see an alert that says "[object HTML]"
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/named-window-blank-target.html b/Source/WebCore/manual-tests/named-window-blank-target.html
new file mode 100644
index 0000000..33e8822
--- /dev/null
+++ b/Source/WebCore/manual-tests/named-window-blank-target.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<script type="text/javascript">
+ window.name = "foo"; // any non-empty name will do here
+</script>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=7747">Bugzilla bug 7747</a> REGRESSION: Background tab/window auto-refresh in GMail will take focus.</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+STEP 1: Close all other Safari windows and tabs.<br>
+STEP 2: Open <a href="resources/named-window-blank-target-step2.html">this link</a> in a new window in front of this window and follow the instructions in it.
+</p>
+
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/nested-plug-ins.html b/Source/WebCore/manual-tests/nested-plug-ins.html
new file mode 100644
index 0000000..20a11fa
--- /dev/null
+++ b/Source/WebCore/manual-tests/nested-plug-ins.html
@@ -0,0 +1,45 @@
+<script>
+ function toggleDisplay(element, button)
+ {
+ if (element.style.display == "none")
+ element.style.display = "";
+ else
+ element.style.display = "none";
+ }
+
+ function toggleVisibility(element, button)
+ {
+ if (element.style.visibility == "hidden")
+ element.style.visibility = "";
+ else
+ element.style.visibility = "hidden";
+ }
+
+</script>
+<p>
+ Play with the display and visibility toggles. Make sure that turning an inner element visible does not show it if it has a hidden or
+ non-displaying ancestor, and that making an ancestor visible and displaying shows only its descendants the are visible and displaying.
+</p>
+<table>
+ <tr>
+ <td>
+ <input type="checkbox" checked="true" onclick="toggleDisplay(document.getElementById('middle'))"> Outer frame display
+ </td>
+ <td>
+ <input type="checkbox" checked="true" onclick="toggleDisplay(document.getElementById('middle').contentDocument.getElementById('inner'))"> Inner frame display
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <input type="checkbox" checked="true" onclick="toggleVisibility(document.getElementById('middle'))"> Outer frame visibility
+ </td>
+ <td>
+ <input type="checkbox" checked="true" onclick="toggleVisibility(document.getElementById('middle').contentDocument.getElementById('inner'))"> Inner frame visibility
+ </td>
+ <td>
+ <input type="checkbox" checked="true" onclick="toggleVisibility(document.getElementById('middle').contentDocument.getElementById('inner').contentDocument.getElementById('plugin'))"> Inner plug-in visibility
+ </td>
+ </tr>
+</table>
+
+<iframe id="middle" style="height: 400px; width: 400px;" src="resources/nested-plug-ins-outer-frame.html"></iframe>
diff --git a/Source/WebCore/manual-tests/new-window-subresource-crash.html b/Source/WebCore/manual-tests/new-window-subresource-crash.html
new file mode 100644
index 0000000..b287d90
--- /dev/null
+++ b/Source/WebCore/manual-tests/new-window-subresource-crash.html
@@ -0,0 +1,20 @@
+<body onload="test()">
+<script>
+ function test()
+ {
+ var win = window.open("");
+ var doc = win.document;
+ var text = "<html><body><sc" + "ript src='data:text/javascript,'></scr" + "ipt></body></html>";
+ doc.write(text);
+ }
+</script>
+
+<p>This test verifies that document.writing into a newly-opened empty
+window does not cause crashes or assertion failures, even if it
+triggers subresource loads. If you have popup blocking enabled you can
+click the button below to test. The test only works in Safari, because
+it depends on behavior with resource identifiers, which are provided
+by the app.</p>
+
+<button onclick="test()">Crash</button>
+</body>
diff --git a/Source/WebCore/manual-tests/no-listbox-rendering.html b/Source/WebCore/manual-tests/no-listbox-rendering.html
new file mode 100644
index 0000000..24336e0
--- /dev/null
+++ b/Source/WebCore/manual-tests/no-listbox-rendering.html
@@ -0,0 +1,66 @@
+<html>
+<body>
+<style>
+td {padding: 20px}
+</style>
+<br><br>
+This test just makes sense if webkit was build with NO_LISTBOX_RENDERING enabled.<br><br>
+You should see in the following table three comboboxes and no listboxes.<br><br>
+At the right cell you see a description of what should be the state of the elements just after loading this page.<br><br>
+<form>
+<table border="1">
+ <tr>
+ <td><select><option>1</option><option>2</option></select></td>
+ <td>combobox in previos cell should have option '1' selected.</td>
+ </tr>
+ <tr>
+ <td><select multiple><option>1</option><option>2</option></select></td>
+ <td>combobox in previos cell should have no selected option.</td>
+ </tr>
+ <tr>
+ <td><select size="5"><option>1</option><option>2</option>s</select></td>
+ <td>combobox in previos cell should have no selected option.</td>
+ </tr>
+ <tr>
+ <td>
+ <select multiple>
+ <optgroup label="1"></optgroup>
+ <option>11</option>
+ <option>12</option>
+ <option>13</option>
+ <option>14</option>
+ <optgroup label="2"></optgroup>
+ <option>21</option>
+ <option>22</option>
+ <option>23</option>
+ <option>24</option>
+ </select>
+ </td>
+ <td>combobox in previos cell should handle optgroup correctly.</td>
+ </tr>
+ <tr>
+ <td>
+ <select>
+ <optgroup label="1"></optgroup>
+ <option>11</option>
+ <option>12</option>
+ <option>13</option>
+ <option>14</option>
+ <optgroup label="2"></optgroup>
+ <option>21</option>
+ <option>22</option>
+ <option>23</option>
+ <option>24</option>
+ </select>
+ </td>
+ <td>combobox in previos cell should handle optgroup correctly.</td>
+ </tr>
+ <tr>
+ <td><input type="reset"</td>
+ <td>after pressing this button all the combo boxes should go back to the state discribed above.</td>
+ </tr>
+</table>
+</form>
+</body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/no-repaint-after-wake-from-sleep.html b/Source/WebCore/manual-tests/no-repaint-after-wake-from-sleep.html
new file mode 100644
index 0000000..0c0f161
--- /dev/null
+++ b/Source/WebCore/manual-tests/no-repaint-after-wake-from-sleep.html
@@ -0,0 +1,183 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>Test for Bug 39139</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta name="viewport" content="initial-scale=0.60, minimum-scale=0.60, maximum-scale=0.60">
+ <style type="text/css">
+
+ body {
+ font-family: 'Lucida Grande', Verdana, Arial;
+ font-size: 12px;
+ }
+
+ #stage {
+ margin: 150px auto;
+ width: 600px;
+ height: 400px;
+ /*
+
+ Setting the perspective of the contents of the stage
+ but not the stage itself
+
+ */
+ -webkit-perspective: 800;
+ }
+
+ #rotate {
+ margin: 0 auto;
+ width: 600px;
+ height: 400px;
+ /* Ensure that we're in 3D space */
+ -webkit-transform-style: preserve-3d;
+ /*
+ Make the whole set of rows use the x-axis spin animation
+ for a duration of 7 seconds, running infinitely and linearly
+ */
+ -webkit-animation-name: x-spin;
+ -webkit-animation-duration: 7s;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-timing-function: linear;
+ }
+
+ .ring {
+ margin: 0 auto;
+ height: 110px;
+ width: 600px;
+ -webkit-transform-style: preserve-3d;
+ -webkit-animation-iteration-count: infinite;
+ -webkit-animation-timing-function: linear;
+ }
+
+ .ring > :nth-child(odd) {
+ background-color: #995C7F;
+ }
+
+ .ring > :nth-child(even) {
+ background-color: #835A99;
+ }
+
+ .poster {
+ position: absolute;
+ left: 250px;
+ width: 100px;
+ height: 100px;
+ opacity: 0.7;
+ color: rgba(0,0,0,0.9);
+ -webkit-border-radius: 10px;
+ }
+
+ .poster > p {
+ font-family: 'Georgia', serif;
+ font-size: 36px;
+ font-weight: bold;
+ text-align: center;
+ margin-top: 28px;
+ }
+
+ /*
+ Set up each row to have a different animation duration
+ and alternating y-axis rotation directions.
+ */
+ #ring-1 {
+ -webkit-animation-name: y-spin;
+ -webkit-animation-duration: 5s;
+ }
+
+ #ring-2 {
+ -webkit-animation-name: back-y-spin;
+ -webkit-animation-duration: 4s;
+ }
+
+ #ring-3 {
+ -webkit-animation-name: y-spin;
+ -webkit-animation-duration: 3s;
+ }
+
+ /*
+
+ Here we define each of the three individual animations that
+ we will be using to have our 3D rotation effect. The first
+ animation will perform a full rotation on the x-axis, we'll
+ use that on the whole set of objects. The second and third
+ animations will perform a full rotation on the y-axis in
+ opposite directions, alternating directions between rows.
+
+ Note that you currently have to specify an intermediate step
+ for rotations even when you are using individual transformation
+ constructs.
+
+ */
+ @-webkit-keyframes x-spin {
+ 0% { -webkit-transform: rotateX(0deg); }
+ 50% { -webkit-transform: rotateX(180deg); }
+ 100% { -webkit-transform: rotateX(360deg); }
+ }
+
+ @-webkit-keyframes y-spin {
+ 0% { -webkit-transform: rotateY(0deg); }
+ 50% { -webkit-transform: rotateY(180deg); }
+ 100% { -webkit-transform: rotateY(360deg); }
+ }
+
+ @-webkit-keyframes back-y-spin {
+ 0% { -webkit-transform: rotateY(360deg); }
+ 50% { -webkit-transform: rotateY(180deg); }
+ 100% { -webkit-transform: rotateY(0deg); }
+ }
+ </style>
+
+ <script type="text/javascript">
+
+ const POSTERS_PER_ROW = 12;
+ const RING_RADIUS = 200;
+
+ function setup_posters (row)
+ {
+ var posterAngle = 360 / POSTERS_PER_ROW;
+ for (var i = 0; i < POSTERS_PER_ROW; i ++) {
+ var poster = document.createElement('div');
+ poster.className = 'poster';
+ // compute and assign the transform for this poster
+ var transform = 'rotateY(' + (posterAngle * i) + 'deg) translateZ(' + RING_RADIUS + 'px)';
+ poster.style.webkitTransform = transform;
+ // setup the number to show inside the poster
+ var content = poster.appendChild(document.createElement('p'));
+ content.textContent = i;
+ // add the poster to the row
+ row.appendChild(poster);
+ }
+
+ }
+
+ function init ()
+ {
+ setup_posters(document.getElementById('ring-1'));
+ setup_posters(document.getElementById('ring-2'));
+ setup_posters(document.getElementById('ring-3'));
+ }
+
+ // call init once the document is fully loaded
+ window.addEventListener('load', init, false);
+
+ </script>
+ </head>
+
+ <body>
+
+ <p>This is a test for <a href="https://bugs.webkit.org/show_bug.cgi?id=39139">Bug 39139: Pages
+ that use hardware acceleration don't repaint after waking computer from sleep</a>. To test, put
+ your computer to sleep (or "Standby", as Windows calls it). When you wake your computer up, the
+ animation below should still be running.</p>
+ <div id="stage">
+ <div id="rotate">
+ <div id="ring-1" class="ring"></div>
+ <div id="ring-2" class="ring"></div>
+ <div id="ring-3" class="ring"></div>
+ </div>
+ </div>
+
+ </body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/non-bmp.html b/Source/WebCore/manual-tests/non-bmp.html
new file mode 100644
index 0000000..e7cc581
--- /dev/null
+++ b/Source/WebCore/manual-tests/non-bmp.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>Bug 25657 : Non-BMP characters</title>
+</head>
+<body>
+Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=25657">bug 25657</a> :
+Listed below are Mathematical Bold Capital A through E (U+1D400 .. U+1D404). Note that you need to install a font covering Plane 1 like Code2001 for this test.
+<div>
+&#x1d400;&#x1d401;&#x1d402;&#x1d403;&#x1d404;
+</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/onbeforeunload-close_with_javascript.html b/Source/WebCore/manual-tests/onbeforeunload-close_with_javascript.html
new file mode 100644
index 0000000..525f8f1
--- /dev/null
+++ b/Source/WebCore/manual-tests/onbeforeunload-close_with_javascript.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<script language="JavaScript">
+function openWindow() {
+ window.open("./onbeforeunload-close_with_javascript.html","name","width=700px,height=500px");
+}
+</script>
+</head>
+<BODY onbeforeunload="return 'onBeforeUnloadHandler return string is displayed here.';">
+<p><b>BUG ID:</b> <a href="rdar://problem/4394910">4394910</a> calling Javascript window.close() does not trigger onbeforeunload event</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+ <ol>
+ <li>Click the "Open" button below.
+ <li>In the window that opens, click the "Close" button.
+ </ol>
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+After the close button is clicked, you should see a dialog that reads:</p>
+<pre>Are you sure you want to navigate away from this page?
+
+onBeforeUnloadHandler return string is displayed here.
+
+Press OK to continue or Cancel to stay on the current page.</pre>
+<p id="success" style="background-color:palegreen; padding:3px;">You should see the same dialog if you click the "Close" button in the main window.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+No dialog (as described above) after clicking the "Close" button in the newly opened window, or in the main window.
+</p>
+
+<BODY onbeforeunload="return 'onBeforeUnloadHandler return string is displayed here.';">
+<input type=button value="Open Window" onclick="openWindow()"><br>
+<input type=button value="Close Window" onclick="window.close();"><br>
+<p>Click the Open Window button. Once the new window is opened, close the new window by clicking the Close Window button (not the browser's close window icon).</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/onblur-remove.html b/Source/WebCore/manual-tests/onblur-remove.html
new file mode 100644
index 0000000..7348e16
--- /dev/null
+++ b/Source/WebCore/manual-tests/onblur-remove.html
@@ -0,0 +1,31 @@
+<html>
+ <head>
+ <script>
+ var numBlurs = 0;
+
+ function debug(str) {
+ var c = document.getElementById('console')
+ c.innerHTML += str + "<br>"
+
+ }
+
+ function finish() {
+ var f = document.getElementById('f')
+
+ f.innerHTML = '';
+
+ if (numBlurs)
+ debug('FAILURE: Onblur handler called!')
+ else
+ debug('SUCCESS!')
+ }
+ </script>
+ </head>
+<body>
+ <p>This tests that elements shouldn't emit any onblur events when they are being removed from the document. To test this, click inside the input field. If If this test is successful, "SUCCESS" should be shown below, otherwise "FAILURE" is shown.</p>
+ <form id='f'>
+ <input onblur="numBlurs++" onfocus="setTimeout('finish()', 0)">
+ </form>
+ <pre id="console"></pre>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/onclick_in_noncontent.html b/Source/WebCore/manual-tests/onclick_in_noncontent.html
new file mode 100644
index 0000000..9c14674
--- /dev/null
+++ b/Source/WebCore/manual-tests/onclick_in_noncontent.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+<script>
+function displayAlert(element)
+{
+ alert('You clicked '+element.nodeName);
+}
+</script>
+</head>
+<body>
+ <table style="width:100px;height:100px;border:inset">
+ <tr>
+ <td onclick="displayAlert(this)">Content.</td>
+ </tr>
+ </table>
+ <p>Click anywhere inside the table element and you should get an alert telling you so.</p>
+ <p>Bugzilla 3662 was that clicking in non-content did not fire onclick handler.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/onfocus-alert-blinking-caret.html b/Source/WebCore/manual-tests/onfocus-alert-blinking-caret.html
new file mode 100644
index 0000000..26b9812
--- /dev/null
+++ b/Source/WebCore/manual-tests/onfocus-alert-blinking-caret.html
@@ -0,0 +1,8 @@
+<!DOCTYPE HTML>
+
+<body>
+Focus the field below, then dismiss the alert. The field should retain the focus,
+and the caret in the field should blink.
+<br>
+<input onfocus="alert('Test');">
+</body>
diff --git a/Source/WebCore/manual-tests/onsearch-enter.html b/Source/WebCore/manual-tests/onsearch-enter.html
new file mode 100644
index 0000000..e6e15fe
--- /dev/null
+++ b/Source/WebCore/manual-tests/onsearch-enter.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+ <input type="search" value="test" onsearch="document.getElementById('result').innerHTML='SUCCESS'">
+ <p>This tests that onsearch handlers for search fields are invoked correctly when pressing enter. To test this in Safari, focus the search field and press enter. The text below should change to SUCCESS.</p>
+ <div id="result">FAILURE</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/onunload-form-submit-crash.html b/Source/WebCore/manual-tests/onunload-form-submit-crash.html
new file mode 100644
index 0000000..1813e3f
--- /dev/null
+++ b/Source/WebCore/manual-tests/onunload-form-submit-crash.html
@@ -0,0 +1,9 @@
+<html>
+<body onUnload="document.myForm.submit()">
+<a href="" onClick="location.href=location.href; return false;">Click here and see if Safari crashes.</a>
+<p>Still with me? Now close the window and see if Safari crashes.</p>
+<form name="myForm">
+</form>
+</body>
+<html>
+
diff --git a/Source/WebCore/manual-tests/open-after-close.html b/Source/WebCore/manual-tests/open-after-close.html
new file mode 100644
index 0000000..4fcf5d2
--- /dev/null
+++ b/Source/WebCore/manual-tests/open-after-close.html
@@ -0,0 +1,16 @@
+<html>
+<script>
+ var url = "resources/open-after-close-popup.html";
+
+ function test() {
+ var w = window.open(url, 'popup', "height=200, width=200, top=100, left=100");
+ w.close();
+ window.open(url, 'popup', "height=200, width=200, top=100, left=100");
+ }
+</script>
+<body onload="test()">
+<p>This test checks for a regression against rdar://problem/3572585: window.open fails if name param = the name of a window just closed in same function.</p>
+<p>If the test passes, you will see a "PASS" message open in a new window.</p>
+<hr>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/open-close-tokenizer-crash.html b/Source/WebCore/manual-tests/open-close-tokenizer-crash.html
new file mode 100644
index 0000000..d108cf8
--- /dev/null
+++ b/Source/WebCore/manual-tests/open-close-tokenizer-crash.html
@@ -0,0 +1,6 @@
+<html>
+ <body>
+ <input type="button" value="Click Here" onclick="window.open('resources/open-close-tokenizer-crash.html', 'foo');">
+ Click the button above. Another browser window should open and then immediately close without crashing.
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/open-url-undefined.html b/Source/WebCore/manual-tests/open-url-undefined.html
new file mode 100644
index 0000000..2f725d5
--- /dev/null
+++ b/Source/WebCore/manual-tests/open-url-undefined.html
@@ -0,0 +1,11 @@
+<body>
+ <p>
+ Tests that <code>window.open()</code> does not interpret the missing URL
+ argument as the literal string &ldquo;undefined&rdquo;.
+ </p>
+ <p>
+ Click the Test button. A new window should open. To pass the test, the address
+ bar of the new window should be empty. If it contains a URL (ending with &ldquo;undefined&rdquo;), WebKit failed the test.
+ </p>
+ <button onclick="window.open()">Test</button>
+</body>
diff --git a/Source/WebCore/manual-tests/optgroup-empty-and-nested.html b/Source/WebCore/manual-tests/optgroup-empty-and-nested.html
new file mode 100644
index 0000000..6aa3e7b
--- /dev/null
+++ b/Source/WebCore/manual-tests/optgroup-empty-and-nested.html
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>Empty and nested optgroup elements</title>
+</head>
+
+<body>
+
+<select>
+ <!-- A div here is invalid. However, both IE and Firefox will walk into it
+ and enumerate the elements inside. -->
+ <div>
+ <option value="1">Item one</option>
+
+ <!-- this group has no children. We /should/ render it because that matches
+ IE and FireFox. -->
+ <optgroup label="Group one"></optgroup>
+
+ <!-- this group has a text node child. It should render the same as group one. -->
+ <optgroup label="Group two"> </optgroup>
+
+ <!-- for an optgroup without a label, IE will show an empty, unselectable row.
+ Firefox doesn't show it. We /do/ show it because someone might be using
+ it as a spacer. -->
+ <!-- Additionally, this has been updated to test the crash fixed in
+ https://bugs.webkit.org/show_bug.cgi?id=26656. When setting the
+ font-size in the <optgroup> to extra large, opening the select element
+ must not leave any unpainted areas of overlapping text. -->
+ <optgroup style="font-size: x-large;">
+ <option value="2">Item inside an optgroup without a label</option>
+ </optgroup>
+
+ <!-- for an optgroup with an empty label, IE will show an empty,
+ unselectable row. Firefox doesn't show it. We /do/ show it because
+ someone might be using it as a spacer. -->
+ <optgroup label="">
+ <option value="3">Item inside an optgroup with an empty label</option>
+ </optgroup>
+
+ <div>
+ <option value="4"></option>
+ <optgroup label="Group three">
+ <option value="5">Item two</option>
+ <!-- nested groups are disallowed by the spec, but IE and Firefox will
+ flatten the tree. We should match them. -->
+ <optgroup label="Nested group 1"></optgroup>
+ <optgroup label="Nested group 2">
+ <optgroup label="Nested group 3">
+ <option value="6">Item three</option>
+ </optgroup>
+ </optgroup>
+ </optgroup>
+ </div>
+ <option value="7">Item four</option>
+ </div>
+</select>
+
+<p>Click on the select element above. When it drops down you should see the following items in the list:</p>
+
+<ul>
+ <li>Item one</li>
+ <li><b>Group one</b></li>
+ <li><b>Group two</b></li>
+ <li><i>(unselectable, empty row)</i></li>
+ <li>Item inside an optgroup without a label</li>
+ <li><i>(unselectable, empty row)</i></li>
+ <li>Item inside an optgroup with an empty label</li>
+ <li><i>(selectable, empty row)</i></li>
+ <li><b>Group three</b></li>
+ <li>Item two</li>
+ <li><b>Nested group 1</b></li>
+ <li><b>Nested group 2</b></li>
+ <li><b>Nested group 3</b></li>
+ <li>Item three</li>
+ <li>Item four</li>
+</ul>
+
+<p>The text of the rows of the dropdown must not overlap each other.</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/overlappingTableSpans.html b/Source/WebCore/manual-tests/overlappingTableSpans.html
new file mode 100644
index 0000000..861606a
--- /dev/null
+++ b/Source/WebCore/manual-tests/overlappingTableSpans.html
@@ -0,0 +1,27 @@
+<html>
+ <body>
+ <table>
+ <tr>
+ <td width='1'></td>
+ </tr>
+ <tr>
+ <td colspan='2' rowspan='2'></td>
+ </tr>
+ <tr>
+ <td rowspan='2'></td>
+ </tr>
+ <tr>
+ <td colspan='2'>
+ <table>
+ <tr>
+ <td></td>
+ <td>
+ <input type='text' />
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/paint-during-plugin-attach.html b/Source/WebCore/manual-tests/paint-during-plugin-attach.html
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/WebCore/manual-tests/paint-during-plugin-attach.html
diff --git a/Source/WebCore/manual-tests/panScroll.html b/Source/WebCore/manual-tests/panScroll.html
new file mode 100644
index 0000000..726755b
--- /dev/null
+++ b/Source/WebCore/manual-tests/panScroll.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+ <p><b>BUG ID:</b> <a href="https://bugs.webkit.org/show_bug.cgi?id=16424">Bugzilla Bug 16424</a> Enable auto-scroll in page by mouse middle click</p>
+
+ <p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+ For each iframe : Middle-click within the iframe and then move your mouse.</p>
+
+ <p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+ For each iframe (except the 6th one which explicitly refuses scroll), you should see the scroll bars follow your moves and even reach the end of the page included in the iframe. You should also see an 4 arrow designed icon on the initial click location.
+ </p>
+
+ <p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+ The scroll doesn't follow the mouse moves or doesn't get activated (except the 6th one which explicitly refuses scroll).
+ </p>
+
+ <div style="height=2000px;width=2000px">
+ <iframe src="resources/big-page.html"></iframe>
+ <iframe src="resources/big-page.html" scrolling></iframe>
+ <iframe src="resources/big-page.html" scrolling=""></iframe>
+ <iframe src="resources/big-page.html" scrolling="auto"></iframe>
+ <iframe src="resources/big-page.html" scrolling="yes"></iframe>
+ <iframe src="resources/big-page.html" scrolling="no"></iframe>
+ <iframe src="resources/big-page.html" scrolling="bogus"></iframe>
+ <iframe src="resources/big-page.html" scrolling="1234"></iframe>
+ </div>
+
+ </body>
+ </html>
diff --git a/Source/WebCore/manual-tests/partially-opaque-form-elements.html b/Source/WebCore/manual-tests/partially-opaque-form-elements.html
new file mode 100644
index 0000000..b525c64
--- /dev/null
+++ b/Source/WebCore/manual-tests/partially-opaque-form-elements.html
@@ -0,0 +1,27 @@
+<html>
+<style>
+ body { opacity: 0.5; }
+</style>
+<body>
+<p><b>BUG ID:</b> <a href="https://bugs.webkit.org/show_bug.cgi?id=41113">Bugzilla bug 41113</a> [WinCairo] Text box backgrounds do not render in partially opaque layers</p>
+
+<div style="background-color:skyblue; padding:3px;">
+In the next paragraph you should see a partially opaque sequence including:
+<ol>
+<li>The word "Before"</li>
+<li>A checkbox</li>
+<li>A radio button</li>
+<li>The world "After"</li>
+</ol>
+If this test is failing you might only see the word "Before."
+</div>
+
+<p>
+Before
+<input value="Checkbox" type="checkbox">
+<input value="Radio" type="radio">
+After
+</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/partially-opaque-text-input.html b/Source/WebCore/manual-tests/partially-opaque-text-input.html
new file mode 100644
index 0000000..bef147e
--- /dev/null
+++ b/Source/WebCore/manual-tests/partially-opaque-text-input.html
@@ -0,0 +1,25 @@
+<html>
+<style>
+ body { opacity: 0.5; }
+</style>
+<body>
+<p><b>BUG ID:</b> <a href="https://bugs.webkit.org/show_bug.cgi?id=41113">Bugzilla bug 41113</a> [WinCairo] Text box backgrounds do not render in partially opaque layers</p>
+
+<div style="background-color:skyblue; padding:3px;">
+In the next paragraph you should see a partially opaque sequence including:
+<ol>
+<li>The word "Before"</li>
+<li>A text box</li>
+<li>The world "After"</li>
+</ol>
+If this test is failing you will not see the text box border.
+</div>
+
+<p>
+Before
+<input type="text"/>
+After
+</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/password-caps-lock.html b/Source/WebCore/manual-tests/password-caps-lock.html
new file mode 100644
index 0000000..d63e433
--- /dev/null
+++ b/Source/WebCore/manual-tests/password-caps-lock.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body onload="document.getElementById('tf').focus()">
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=10577">10577</a> Caps lock icon should show in password fields</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Press the caps lock key.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Verify that the caps lock indicator icon is drawn in the password field. Verify that when you open a new window, the password field in the background window no longer has an indicator.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+If there is no caps lock indicator, or if the indicator remains when the window is inactive, the test has failed.
+</p>
+
+<input type="password" id="tf">
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/password-ctrl-click-lose-focus.html b/Source/WebCore/manual-tests/password-ctrl-click-lose-focus.html
new file mode 100644
index 0000000..26cfbc4
--- /dev/null
+++ b/Source/WebCore/manual-tests/password-ctrl-click-lose-focus.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4604703">4604703</a> REGRESSION (NativeTextField): Focus is not removed from password field after I ctrl-click into a different field</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+<br>1) Make a selection in the password field
+<br>2) Ctrl-click in the text field</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+After ctrl-clicking in the text field, the password field should lose focus, and its selection should be cleared.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+After ctrl-clicking in the text field, if the password field still has a selection, the test has failed.
+</p>
+<br><input type="text" value="Ctrl-Click in this field. Test passes if the password field no longer has a selection." size=100></input>
+<br><input type="password" id="pass" value="12345"></input>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/paste-crash.html b/Source/WebCore/manual-tests/paste-crash.html
new file mode 100644
index 0000000..b88af1d
--- /dev/null
+++ b/Source/WebCore/manual-tests/paste-crash.html
@@ -0,0 +1,26 @@
+<HTML><BODY>
+ <p>This test checks for a regression against.</p>
+ <p>To run the test:</p>
+ <ol>
+ <li>Select All
+ <li>Copy
+ <li>Paste into Blot
+ </ol>
+ <p>If you don't crash, you pass.</p>
+ <hr>
+ <iframe style="color: red"></iframe>
+ <iframe src=""></iframe>
+</BODY></HTML>
+<HTML><BODY>
+ <p>This test checks for a regression against.</p>
+ <p>To run the test:</p>
+ <ol>
+ <li>Select All
+ <li>Copy
+ <li>Paste into Blot
+ </ol>
+ <p>If you don't crash, you pass.</p>
+ <hr>
+ <iframe style="color: red"></iframe>
+ <iframe src=""></iframe>
+</BODY></HTML>
diff --git a/Source/WebCore/manual-tests/plain-text-paste.html b/Source/WebCore/manual-tests/plain-text-paste.html
new file mode 100644
index 0000000..89ef451
--- /dev/null
+++ b/Source/WebCore/manual-tests/plain-text-paste.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8276">Bugzilla bug 8276</a> REGRESSION (NativeTextField): Pasting a Finder item into a text field results in a file: URL being pasted instead of just the file name
+<br><i>and</i><br> <b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8283">Bugzilla bug 8283</a> REGRESSION: File's path doesn't appear after dragging file into input field</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b><br>
+1. Double-click <a href="resources/plain-text-paste.dmg">this disk image</a> in the Finder.<br>
+2. Drag each item from the Finder window into the corresponding field below.<br>
+3. Select item 5 in the Finder window and choose Copy &ldquo;5&rdquo; from the Finder&rsquo;s Edit menu.<br>
+4. Back in Safari, click inside the &ldquo;Paste item 5 here&rdquo; field and choose Paste from the Edit menu.<br>
+5. Eject the disk image.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The fields&rsquo; contents will match the Expected Contents.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The fields&rsquo; contents will NOT match the Expected Contents.
+</p>
+Plain text clipping
+<table cellspacing="0" cellpadding="5">
+ <col><col style="background: #ffc;">
+ <tr>
+ <td></td>
+ <td><b>Expected Contents</b></td>
+ </tr>
+ <tr>
+ <td>Drag item 1 here: <input></td>
+ <td>Plain text clipping</td>
+ </tr>
+ <tr>
+ <td>Drag item 2 here: <input></td>
+ <td>Styled text clipping</td>
+ </tr>
+ <tr>
+ <td>Drag item 3 here: <input></td>
+ <td><i>full path to 3.gif, starting with a / character</i></td>
+ </tr>
+ <tr>
+ <td>Drag item 4 here: <input></td>
+ <td><i>full path to 4.txt, starting with a / character</i></td>
+ </tr>
+ <tr>
+ <td>Drag item 5 here: <input></td>
+ <td>http://www.ibm.com/</td>
+ </tr>
+ <tr>
+ <td>Paste item 5 here: <input></td>
+ <td>5</td>
+ </tr>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugin-controller-datasource.html b/Source/WebCore/manual-tests/plugin-controller-datasource.html
new file mode 100644
index 0000000..6a70bf7
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugin-controller-datasource.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8658">Bugzilla bug 8658</a> Assertion failure in -[WebPluginContainerCheck _isForbiddenFileLoad] (bridge is null) when clicking QuickTime object with href</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click the small orange square below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+QuickTime Player will open <i>orange.mov</i>.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Nothing will happen in response to clicking the orange square.
+</p>
+
+<EMBED id="e" src="resources/orange.mov" width="15" height="15" controller="false" href="#" target="QuickTimePlayer"></EMBED>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugin-in-iframe-scroll.html b/Source/WebCore/manual-tests/plugin-in-iframe-scroll.html
new file mode 100644
index 0000000..182c43c
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugin-in-iframe-scroll.html
@@ -0,0 +1,7 @@
+<p>This test requires that accelerated compositing be disabled. Please scroll down to the bottom.</p>
+<p>Both squares should be orange, with no red visible at any time.</p>
+<iframe src="resources/plugin-in-iframe-scroll-iframe.html" width="300" height="300" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" style="border:1px"></iframe>
+
+<div style="height:1000px">&nbsp;</div>
+<iframe src="resources/plugin-in-iframe-scroll-iframe.html" width="300" height="300" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" style="border:1px"></iframe>
+<div style="height:1000px">&nbsp;</div>
diff --git a/Source/WebCore/manual-tests/plugin-visible-rect-change.html b/Source/WebCore/manual-tests/plugin-visible-rect-change.html
new file mode 100644
index 0000000..3fe12e9
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugin-visible-rect-change.html
@@ -0,0 +1,25 @@
+<p>
+ This test requires that accelerated compositing be disabled. Clicking the Test button should completely reveal the black-bordered box.
+ The orange video should completely fill the box, with the controller visible and touching the bottom of the box. There should be
+ not be any red visible.
+</p>
+<p>
+ <button onclick="test()">Test</button>
+</p>
+<div style="overflow: hidden; border: solid blue; position: relative;">
+ <div style="height: 100px; padding: 0 8px;">
+ </div>
+ <object type="video/quicktime" style="background-color: red; width: 300px; height: 241px; position: absolute; top: 50px; left: 40px; border: solid black;">
+ <param name="src" value="resources/orange.mov">
+ <param name="controller" value="true">
+ <param name="autoplay" value="false">
+ <param name="scale" value="tofit">
+ </object>
+ <div id="target"></div>
+ <script>
+ function test()
+ {
+ document.getElementById("target").style.height = "500px";
+ }
+ </script>
+</div>
diff --git a/Source/WebCore/manual-tests/plugins/flip4mac-update-alert-over-navigation.html b/Source/WebCore/manual-tests/plugins/flip4mac-update-alert-over-navigation.html
new file mode 100644
index 0000000..2391717
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/flip4mac-update-alert-over-navigation.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>Test case for &lt;rdar://problem/7313430&gt; Many crashes in Safari inside Flip4Mac below -[NSAlert didEndAlert:returnCode:contextInfo:]</title>
+</head>
+<body>
+ <h1>Test case for &lt;<a href='rdar://problem/7313430'>rdar://problem/7313430</a>&gt; Many crashes in Safari inside Flip4Mac below -[NSAlert didEndAlert:returnCode:contextInfo:]</h1>
+
+ <p>This test requires Flip4Mac to be installed and an update to be available for the version that is installed. Previous versions
+ of Flip4Mac can be downloaded from <a href='http://dynamic.telestream.net/downloads/download-flip4macwmv.htm'>Telestream's website</a>.
+ As of the writing of this test on 2010-04-21 the latest available version of Flip4Mac is 2.3.2.6. The prior version to that,
+ version 2.3.1.2, is therefore currently the most recent version that will reproduce this bug due to it being the most recent version
+ with an update available.
+ </p>
+
+ <p>Once Flip4Mac is installed, you can test the bug by doing the following.</p>
+ <ol>
+ <li>Launch the browser with <code>NSZombieEnabled=YES</code> and <code>NSDeallocateZombies=NO</code> set in the enrivonment.</li>
+ <li>Load this page. A Flip4Mac update alert will be displayed, and soon after the page will navigate.</li>
+ <li>After the new page has loaded click the "Cancel" button on the update alert.The browser should not crash.</li>
+ </ol>
+
+ <p>If you have the correct version of Flip4Mac installed but do not see the update alert displayed when loading this page then you may need to delete
+ the Flip4Mac preferences to force it to check for updates. You can do this by removing <code>~/Library/Preferences/net.telestream.wmv.*</code>
+ and then relaunching the browser.</p>
+
+ <object type="application/asx"></object>
+
+ <script>window.setTimeout(function() { window.location = "data:text/html,If the browser does not crash when you click 'Cancel' in the Flip4Mac update alert sheet then the bug is not present."; }, 10000)</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugins/gtk-windowed-grey-glitch.html b/Source/WebCore/manual-tests/plugins/gtk-windowed-grey-glitch.html
new file mode 100644
index 0000000..73975eb
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/gtk-windowed-grey-glitch.html
@@ -0,0 +1,20 @@
+<html>
+<script type="text/javascript">
+ function openFullScreenFlash() {
+ window.open("test.swf","","width=200,height=200");
+ }
+</script>
+<head>
+ <title>Test grey glitch with fullscreen Flash animation (but 47742)</title>
+</head>
+<body>
+ <p>This manual test is used to test <a href="https://bugs.webkit.org/show_bug.cgi?id=47742">bug 47742</a>.</p>
+ <ul>
+ <li>1. Click on the button to open popup with full screen flash animation.</li>
+ <li>2. Make sure the popup content is not grey.</li>
+ <li>3. Resize the popup. </li>
+ <li>4. Make sure the resize does not produce grey flash (especially when scaling down).</li>
+ </ul>
+ <input type="button" value="Open fullscreen Flash" onclick="openFullScreenFlash();"/>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugins/object-clipping.html b/Source/WebCore/manual-tests/plugins/object-clipping.html
new file mode 100644
index 0000000..23fd630
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/object-clipping.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <title>clipping objects</title>
+ <style type="text/css" media="screen">
+ object {
+ margin: 30px;
+ border: 20px solid green;
+ }
+ </style>
+</head>
+<body>
+ <p>You should see a clipped video surrounded by a thick green border.</p>
+ <p><a href="https://bugs.webkit.org/show_bug.cgi?id=35555">https://bugs.webkit.org/show_bug.cgi?id=35555</a></p>
+ <object type="video/quicktime" data="../../../LayoutTests/media/content/test.mp4" width="200" height="150">
+ <param value="false" name="autoplay">
+ <param value="false" name="controller">
+ </object>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugins/plugin-paint-causes-layout.html b/Source/WebCore/manual-tests/plugins/plugin-paint-causes-layout.html
new file mode 100644
index 0000000..4781c7e
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/plugin-paint-causes-layout.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ embed {
+ position: absolute;
+ margin: 10px;
+ }
+
+ .container {
+ position: relative;
+ border: 2px solid blue;
+ padding: 20px;
+ width: 100px;
+ }
+
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ function hideFirst()
+ {
+ var firstDiv = document.getElementById('first');
+ if (!firstDiv)
+ return;
+
+ firstDiv.parentNode.removeChild(firstDiv);
+ document.body.clientWidth;
+ }
+ </script>
+</head>
+<body>
+ <embed type="application/x-webkit-test-netscape" onpaintevent="hideFirst()" drawingmodel="coreanimation"></embed>
+
+ <p>This test should not assert or crash when loaded in Safari, when Safari captures a snapshot.</p>
+ <div id="first" class="container">
+ </div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugins/test.swf b/Source/WebCore/manual-tests/plugins/test.swf
new file mode 100644
index 0000000..8952982
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/test.swf
Binary files differ
diff --git a/Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.html b/Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.html
new file mode 100644
index 0000000..53fc1b7
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <title>Test case for &lt;rdar://problem/7856151&gt; REGRESSION: NPP_Destroy is not called when page navigates when plug-in is displaying modal dialog</title>
+
+ <meta http-equiv="refresh" content="3; data:text/html,If we did not crash or hang and there is no Adobe Flash dialog on screen then this test was a success.<p><a href='javascript:history.back();'>Run again</a>.</p><p><a href='rdar://problem/7856151'>&amp;lt;rdar://problem/7856151&amp;gt;</a>.</p>">
+</head>
+<body>
+ <h1>Test case for &lt;<a href='rdar://problem/7856151'>rdar://problem/7856151</a>&gt; REGRESSION: NPP_Destroy is not called when page navigates when plug-in is displaying modal dialog</h1>
+
+ <p>This page loads some Adobe Flash content that results in the Flash Player plug-in displaying a modal alert window. The page then triggers
+ a navigation while this alert is on-screen. After the navigation completes the Flash Player plug-in's modal alert should no longer be
+ visible on-screen and the plug-in host and browser application should not crash.
+ </p>
+
+ <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" align="middle">
+ <param name="allowScriptAccess" value="sameDomain">
+ <param name="allowFullScreen" value="false">
+ <param name="movie" value="timeout-dialog-displayed-over-navigation.swf">
+ <param name="quality" value="high">
+ <param name="bgcolor" value="#ffffff">
+ <embed src="timeout-dialog-displayed-over-navigation.swf" quality="high" bgcolor="#ffffff" width="550" height="400" align="middle"
+ allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer">
+ </object>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.swf b/Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.swf
new file mode 100644
index 0000000..7e7c3d9
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/timeout-dialog-displayed-over-navigation.swf
Binary files differ
diff --git a/Source/WebCore/manual-tests/plugins/windowed.html b/Source/WebCore/manual-tests/plugins/windowed.html
new file mode 100644
index 0000000..56a02f4
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/windowed.html
@@ -0,0 +1,109 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Transparent Flash Test File</title>
+<style>
+ #overlayDiv {
+ position: relative;
+ color: white;
+ background: black;
+ top: 50px;
+ left: -50px;
+ width: 200px;
+ opacity: 0.6;
+ float: left;
+ z-index: 1;
+ display: none;
+ }
+ embed {
+ float: left;
+ -webkit-transition: -webkit-transform 3s ease-in;
+ }
+</style>
+<script>
+ function testVisibility() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ if (flashPlugin.style.display == 'none') {
+ flashPlugin.style.display = 'block';
+ } else {
+ flashPlugin.style.display = 'none';
+ }
+ }
+
+ function testResize() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ flashPlugin.width = flashPlugin.width == "200" ? "100" : "200";
+ flashPlugin.height = flashPlugin.height == "200" ? "100" : "200";
+ }
+
+ function testMove() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ var t = parseInt(flashPlugin.style.top);
+ flashPlugin.style['padding-left'] = "100px";
+ }
+
+ function testAnimation() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ flashPlugin.style.webkitTransform='rotate(180deg)';
+ }
+
+ function toggleDivOverFlash() {
+ var overlayDiv = document.getElementById('overlayDiv');
+ if (overlayDiv.style.display != 'block') {
+ overlayDiv.style.display = 'block';
+ } else {
+ overlayDiv.style.display = '';
+ }
+ }
+</script>
+</head>
+
+<body>
+
+ <b> Verify the following tests with and without the page scrolled (including seeming unrelated test cases like printing). <br/>
+ For the Qt port, test with QGraphicsView enabled and disabled</b> <br/><br/>
+
+ <!-- <embed id="flashPlugin" src="http://www.youtube.com/v/loXfcsXRB-w&#038;hl=en&#038;fs=1" --!>
+ <embed id="flashPlugin" src="test.swf"
+ width="200" height="200"
+ type="application/x-shockwave-flash">
+ </embed>
+
+ <div id="overlayDiv"> This is an overlay that will display over the flash. In addition, you should be able to see
+ the flash through the div contents. </div>
+
+ <div style="clear:both"/>
+
+ <input type="checkbox" name="visibilityCheckBox"> Verify if the flash toggles visibility
+ <input type="button" id="visibilityButton" value="Test Visibility" onClick="testVisibility()"/><br/>
+
+ <input type="checkbox" name="resizeCheckBox"> Verify if the flash resizes when element is resized
+ <input type="button" id="resizeButton" value="Test Resize" onClick="testResize()"/><br/>
+
+ <input type="checkbox" name="moveCheckBox"> Verify if the flash moves when element is moved
+ <input type="button" id="moveButton" value="Test Move" onClick="testMove()"/><br/>
+
+ <input type="checkbox" name="animationCheckBox"> Verify css animations with flash
+ <input type="button" id="animationButton" value="Test Animation" onClick="testAnimation()"/><br/>
+
+ <input type="checkbox" name="printCheckBox"> Verify if printing displays flash on the print preview and printer output <br/>
+
+ <input type="checkbox" name="zoomCheckBox"> Verify if elements in flash are correctly painted and clickable after zooming <br/>
+
+ <input type="checkbox" name="screenshotBox"> Verify if taking a screenshot from QtTestBrowser displays flash <br/>
+
+ <input type="checkbox" name="paintSystemsCheckBox"> Verify if flash is displayed with graphicssystems - raster, opengl <br/>
+
+ <input type="checkbox" name="focusCheckBox"> Verify if shifting focus back and forth from flash to html works
+ <input value="Shift focus here"/></br/>
+
+ <input type="checkbox" name="testZIndex"> Test if html can display over flash
+ <input type="button" value="Toggle transparent div" onClick="toggleDivOverFlash()"<br/>
+
+ <input type="checkbox" name="testZIndex"> Test opaque mode by setting wmode to opaque <br/>
+
+ <br/>
+</body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/plugins/windowless.html b/Source/WebCore/manual-tests/plugins/windowless.html
new file mode 100644
index 0000000..27e8a82
--- /dev/null
+++ b/Source/WebCore/manual-tests/plugins/windowless.html
@@ -0,0 +1,108 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Transparent Flash Test File</title>
+<style>
+ #overlayDiv {
+ position: relative;
+ color: white;
+ background: black;
+ top: 50px;
+ left: -50px;
+ width: 200px;
+ opacity: 0.6;
+ float: left;
+ z-index: 1;
+ display: none;
+ }
+ embed {
+ float: left;
+ -webkit-transition: -webkit-transform 3s ease-in;
+ }
+</style>
+<script>
+ function testVisibility() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ if (flashPlugin.style.display == 'none') {
+ flashPlugin.style.display = 'block';
+ } else {
+ flashPlugin.style.display = 'none';
+ }
+ }
+
+ function testResize() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ flashPlugin.width = flashPlugin.width == "200" ? "100" : "200";
+ flashPlugin.height = flashPlugin.height == "200" ? "100" : "200";
+ }
+
+ function testMove() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ var t = parseInt(flashPlugin.style.top);
+ flashPlugin.style['padding-left'] = "100px";
+ }
+
+ function testAnimation() {
+ var flashPlugin = document.getElementById('flashPlugin');
+ flashPlugin.style.webkitTransform='rotate(180deg)';
+ }
+
+ function toggleDivOverFlash() {
+ var overlayDiv = document.getElementById('overlayDiv');
+ if (overlayDiv.style.display != 'block') {
+ overlayDiv.style.display = 'block';
+ } else {
+ overlayDiv.style.display = '';
+ }
+ }
+</script>
+</head>
+
+<body>
+
+ <b> Verify the following tests with and without the page scrolled (including seeming unrelated test cases like printing). <br/>
+ For the Qt port, test with QGraphicsView enabled and disabled</b> <br/><br/>
+
+ <!-- <embed id="flashPlugin" src="http://www.youtube.com/v/loXfcsXRB-w&#038;hl=en&#038;fs=1" --!>
+ <embed id="flashPlugin" src="test.swf"
+ width="200" height="200"
+ wmode="transparent"
+ type="application/x-shockwave-flash">
+ </embed>
+
+ <div id="overlayDiv"> This is an overlay that will display over the flash. In addition, you should be able to see
+ the flash through the div contents. </div>
+
+ <div style="clear:both"/>
+
+ <input type="checkbox" name="visibilityCheckBox"> Verify if the flash toggles visibility
+ <input type="button" id="visibilityButton" value="Test Visibility" onClick="testVisibility()"/><br/>
+
+ <input type="checkbox" name="resizeCheckBox"> Verify if the flash resizes when element is resized
+ <input type="button" id="resizeButton" value="Test Resize" onClick="testResize()"/><br/>
+
+ <input type="checkbox" name="moveCheckBox"> Verify if the flash moves when element is moved
+ <input type="button" id="moveButton" value="Test Move" onClick="testMove()"/><br/>
+
+ <input type="checkbox" name="animationCheckBox"> Verify css animations with flash
+ <input type="button" id="animationButton" value="Test Animation" onClick="testAnimation()"/><br/>
+
+ <input type="checkbox" name="printCheckBox"> Verify if printing displays flash on the print preview and printer output <br/>
+
+ <input type="checkbox" name="zoomCheckBox"> Verify if elements in flash are correctly painted and clickable after zooming <br/>
+
+ <input type="checkbox" name="screenshotBox"> Verify if taking a screenshot from QtTestBrowser displays flash <br/>
+
+ <input type="checkbox" name="paintSystemsCheckBox"> Verify if flash is displayed with graphicssystems - raster, opengl <br/>
+
+ <input type="checkbox" name="focusCheckBox"> Verify if shifting focus back and forth from flash to html works
+ <input value="Shift focus here"/></br/>
+
+ <input type="checkbox" name="testZIndex"> Test if html can display over flash
+ <input type="button" value="Toggle transparent div" onClick="toggleDivOverFlash()"<br/>
+
+ <br/>
+</body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/pointer-events.html b/Source/WebCore/manual-tests/pointer-events.html
new file mode 100644
index 0000000..b931176
--- /dev/null
+++ b/Source/WebCore/manual-tests/pointer-events.html
@@ -0,0 +1,203 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>Test for 'pointer-events' property in HTML</title>
+ <style type="text/css" media="screen">
+ #a {
+ pointer-events: auto;
+ background: #88f;
+ }
+
+ #a:hover {
+ background: green;
+ }
+
+ #b {
+ pointer-events: none;
+ background: #88f;
+ }
+
+ #b:hover {
+ background: red;
+ }
+
+ #c {
+ pointer-events: auto;
+ background: #88f;
+ }
+
+ #c span {
+ pointer-events: none;
+ background: #8ff;
+ }
+
+ #c:hover {
+ background: green;
+ }
+
+ #d {
+ pointer-events: none;
+ background: #88f;
+ }
+
+ #d span {
+ pointer-events: auto;
+ padding: 0 10px;
+ background: #8ff;
+ }
+
+ #d:hover {
+ background: gray;
+ }
+
+ #e {
+ padding: 10px;
+ pointer-events: none;
+ background: #88f;
+ }
+
+ #e div {
+ pointer-events: auto;
+ background: #8ff;
+ }
+
+ #e:hover {
+ background: gray;
+ }
+
+ #e div:hover {
+ background: green;
+ }
+
+ #f, #g, #h, #i, #k, #m {
+ padding: 10px;
+ background: #88f;
+ }
+
+ #f {
+ pointer-events: auto;
+ }
+
+ #f:hover {
+ background: green;
+ }
+
+ #g {
+ pointer-events: none;
+ }
+
+ #g:hover {
+ background: red;
+ }
+
+ #h {
+ pointer-events: auto;
+ }
+
+ #h:hover {
+ background: green;
+ }
+
+ #i {
+ pointer-events: none;
+ }
+
+ #i:hover {
+ background: red;
+ }
+
+ #j {
+ background: #88f;
+ pointer-events: none;
+ }
+
+ #j:hover {
+ background: gray;
+ }
+
+ #k {
+ pointer-events: auto;
+ }
+
+ #k:hover {
+ background: green;
+ }
+
+ #l {
+ background: #88f;
+ pointer-events: auto;
+ }
+
+ #l:hover {
+ background: green;
+ }
+
+ #m {
+ pointer-events: none;
+ }
+
+ #m:hover {
+ background: red;
+ }
+
+ </style>
+
+</head>
+<body>
+ <h1>Testing 'pointer-events' property in HTML</h1>
+
+ <p id="a">This whole paragraph SHOULD change background when hovered</p>
+
+ <p id="b">This whole paragraph SHOULD NOT change background when hovered</p>
+
+ <p id="c">This paragraph SHOULD change background when hovered anywhere including
+ <span>this inline text</span> even though the inline text ignores pointer events.</p>
+
+ <p id="d">This paragraph SHOULD NOT change when the pointer is over only it but
+ <span>this inline text</span> SHOULD change and cause the parent to change also.</p>
+
+ <div id="e">This paragraph SHOULD NOT change when the pointer is over only it (not the child)
+ <div>This child element SHOULD change and cause the parent to change also</div>
+ </div>
+
+ <p>
+ The following image SHOULD change when the pointer is over it.
+ </p>
+
+ <img id="f" src="../../LayoutTests/media/content/abe.png">
+
+ <p>
+ The following image SHOULD NOT change when the pointer is over it.
+ </p>
+
+ <img id="g" src="../../LayoutTests/media/content/abe.png">
+
+ <p>
+ The following image SHOULD change when the pointer is over it. It is inline
+ with this paragraph.
+ <img id="h" src="../../LayoutTests/media/content/abe.png">
+ </p>
+
+ <p>
+ The following image SHOULD NOT change when the pointer is over it. It is inline
+ with this paragraph.
+ <img id="i" src="../../LayoutTests/media/content/abe.png">
+ </p>
+
+ <p id="j">
+ This paragraph SHOULD NOT change when the pointer is over only it, but the child
+ image SHOULD react and cause the parent to change.
+ <img id="k" src="../../LayoutTests/media/content/abe.png">
+ </p>
+
+ <p id="l">
+ This paragraph SHOULD change when the pointer is over it, but the child
+ image SHOULD NOT react.
+ <img id="m" src="../../LayoutTests/media/content/abe.png">
+ </p>
+
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/post-multi-file-upload.html b/Source/WebCore/manual-tests/post-multi-file-upload.html
new file mode 100644
index 0000000..18f3039
--- /dev/null
+++ b/Source/WebCore/manual-tests/post-multi-file-upload.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <script type="text/javascript">
+ var submittedFiles = 0;
+
+ function log(message)
+ {
+ document.getElementById('console').appendChild(document.createTextNode(message + "\n"));
+ }
+
+ function verifyResults()
+ {
+ if (submittedFiles == 3) {
+ var frame = document.getElementById('fr');
+ frame.parentNode.removeChild(frame);
+ log("Test Passed");
+ } else
+ log("Test Failed");
+ }
+ </script>
+ </head>
+ <body onload="test()">
+ <p>
+ This tests that the multi-file upload control works correctly. This test and the resources/multiFileResources must be placed on a web server so the test can be run manually.<br>
+ Choose "testFile1.html" "testFile2.html" and "testFile3.html" and submit the form. <br>
+ You should see a "Test Passed" or a "Test Failed" message after submitting the form.<br>
+ </p>
+ <form method="post" enctype="multipart/form-data" action="resources/multiFileResources/post-echo-and-notify-done.cgi" id="myForm" target="targetFrame">
+ <input type="file" id="target" multiple name="multiFileInput"></input>
+ <input type="submit" value="Submit">
+ </form>
+ <iframe name="targetFrame" id="fr"></iframe>
+ <pre id='console'></pre>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/pre-tab-selection-rect.html b/Source/WebCore/manual-tests/pre-tab-selection-rect.html
new file mode 100644
index 0000000..d9a9801
--- /dev/null
+++ b/Source/WebCore/manual-tests/pre-tab-selection-rect.html
@@ -0,0 +1,66 @@
+<html>
+<head>
+<title>Highlighting preformatted text after tab</title>
+<style type="text/css">
+#t4 { font-size: 36px; }
+#t4:first-line { font-size:16px; }
+</style>
+<script type="text/javascript">
+function test1()
+{
+ var t = document.getElementById('t1').childNodes[1];
+ window.getSelection().setBaseAndExtent(t, 1, t, 13);
+}
+
+function test2()
+{
+ var t = document.getElementById('t2').childNodes[0];
+ window.getSelection().setBaseAndExtent(t, 5, t, 23);
+}
+
+function test3()
+{
+ var t = document.getElementById('t3').childNodes[0];
+ window.getSelection().setBaseAndExtent(t, 5, t, 23);
+}
+
+function test4()
+{
+ var t = document.getElementById('t4').childNodes[0];
+ window.getSelection().setBaseAndExtent(t, 11, t, 29);
+}
+</script>
+</head>
+<body>
+<p>
+This is a test for <i>http://bugs.webkit.org/show_bug.cgi?id=6043
+Incorrect selection highlighting in pre-formatted text with tabs</i>.
+</p>
+<hr>
+<p>
+Instructions:
+</p>
+<p>
+1. Click <a href="#" onclick="window.setTimeout(test1,1);">test 1</a>.
+The entire word &ldquo;highlighting&rdquo; below should be highlighted.
+</p>
+<pre id="t1"><span>Buggy</span> highlighting</pre>
+<p>
+2. Click <a href="#" onclick="window.setTimeout(test2,1);">test 2</a>.
+The words &ldquo;buggy highlighting&rdquo; below should be fully highlighted.
+</p>
+<pre id="t2" style="padding-left: 10px;">Very buggy highlighting</pre>
+<p>
+3. Click <a href="#" onclick="window.setTimeout(test3,1);">test 3</a>.
+The words &ldquo;buggy highlighting&rdquo; below should be fully highlighted.
+</p>
+<pre id="t3" style="margin-left: 10px;">Very buggy highlighting</pre>
+<p>
+4. Click <a href="#" onclick="window.setTimeout(test4,1);">test 4</a>.
+The words &ldquo;buggy highlighting&rdquo; below should be fully highlighted.
+</p>
+<p id="t4">
+Even more buggy highlighting.
+</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/preload-scanner-entities.html b/Source/WebCore/manual-tests/preload-scanner-entities.html
new file mode 100644
index 0000000..21446ae
--- /dev/null
+++ b/Source/WebCore/manual-tests/preload-scanner-entities.html
@@ -0,0 +1,7 @@
+<script src="does_not_exist_here_just_to_trigger_preload_scanner.js" type="text/javascript"></script>
+<link href="non_existent_stylesheet1&ab-" rel="stylesheet">
+<link href="non_existent_stylesheet2&#xY" rel="stylesheet">
+<link href="non_existent_stylesheet3&#XY" rel="stylesheet">
+<p><a href="rdar://problem/6904095">rdar://problem/6904095</a> Query parameters are sometimes incorrect in URL</p>
+<p>Check with the web inspector that the page tried to load 3 stylesheet resources (and not more).</p>
+
diff --git a/Source/WebCore/manual-tests/print-before-load.html b/Source/WebCore/manual-tests/print-before-load.html
new file mode 100644
index 0000000..edec30b
--- /dev/null
+++ b/Source/WebCore/manual-tests/print-before-load.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Print Test Page</title>
+<body>
+
+<script language="JavaScript" type="text/javascript">
+window.print();
+</script>
+
+This webpage should pop up a print dialog. If you print from that dialog, you
+should see this output on paper.
+
+</body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/print-onload-with-image.html b/Source/WebCore/manual-tests/print-onload-with-image.html
new file mode 100644
index 0000000..4d34a11
--- /dev/null
+++ b/Source/WebCore/manual-tests/print-onload-with-image.html
@@ -0,0 +1,13 @@
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
+<title>Print Test</title>
+</head>
+<body onload="window.print()">
+<img src="http://code.google.com/p/chromium/logo?cct=1287781185">
+<H1>Hello, world.</h1>
+<p>
+This webpage should pop up a print dialog.
+</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/print-with-height-transition-in-screen-stylesheet.html b/Source/WebCore/manual-tests/print-with-height-transition-in-screen-stylesheet.html
new file mode 100644
index 0000000..2186c18
--- /dev/null
+++ b/Source/WebCore/manual-tests/print-with-height-transition-in-screen-stylesheet.html
@@ -0,0 +1,26 @@
+<head>
+<style media="screen">
+.outer_slide {
+ overflow: hidden;
+ height: 0;
+ -webkit-transition: height 100s ease-in-out;
+}
+</style>
+</head>
+ <body>
+<div>To run this test, Print and then push the Preview button (on Mac OS X). The symptom of the bug is a layout with overlapping text or missing sections.
+If the test passes you should be able to see eight different lines below A, A1, A2, A3, B, B1, C, and C1. If it fails you might see as few as four lines.</div>
+<div><br></div>
+<div>A: When printing you should be able to see all three paragraphs below.</div>
+<div class='outer_slide'>
+ <div>A1: This is a long paragraph which helps us see the mess you can get with long ones.<br>
+ A2: This is a long paragraph which helps us see the mess you can get with long ones.<br>
+ A3: This is a long paragraph which helps us see the mess you can get with long ones.<br>
+</div></div>
+<div>B: When printing you should be able to see one line below.</div>
+<div class='outer_slide'><div>B1: This is a long paragraph which helps us see the mess you can get with long ones.</div></div>
+<div>C: When printing you should be able to see one line below</div>
+<div class='outer_slide'><div>C1: This is a long paragraph which helps us see the mess you can get with long ones.</div></div>
+</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/property-map-save-crash.html b/Source/WebCore/manual-tests/property-map-save-crash.html
new file mode 100644
index 0000000..c4dce1a
--- /dev/null
+++ b/Source/WebCore/manual-tests/property-map-save-crash.html
@@ -0,0 +1,49 @@
+<html>
+ <head>
+ <script>
+ function test()
+ {
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ window.crash = "crash";
+ delete window.crash;
+
+ if (window.navigationController)
+ navigationController.evalAfterBackForwardNavigation("continueTestAfterNavigation()");
+ }
+
+ function continueTestAfterNavigation()
+ {
+ print("PASS: You didn't crash");
+
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ }
+
+ function print(message) {
+ var paragraph = document.createElement("p");
+ paragraph.appendChild(document.createTextNode(message));
+ document.getElementById("console").appendChild(paragraph);
+ }
+ </script>
+ </head>
+
+ <body onload="test()">
+ <p>Bug: rdar://problem/4465598 REGRESSION (TOT): Crash occurs at http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*)</p>
+ <p>This cause for this bug was that the code to save the window object's property map tried to use
+ the deleted property sentinel key as a normal pointer.</p>
+ <p>To run this test in Safari:</p>
+ <ol>
+ <li><a href="resources/go-back.html">Click here to do a back/forward navigation.</a></li>
+ <li>You should not crash.</li>
+ </ol>
+ <p>When the automated version of this test passes, you'll see a PASS message below.
+ (The automated version is currently disabled because DumpRenderTree doesn't work
+ with the back/forward cache enabled.)</p>
+ <hr>
+ <div id="console"></div>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/qt/main.html b/Source/WebCore/manual-tests/qt/main.html
new file mode 100644
index 0000000..48c103a
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/main.html
@@ -0,0 +1,10 @@
+<html>
+<head>
+<div>
+Plugin test within an iframe:
+</div>
+<div style="float:right;">
+<IFRAME SRC="qtplugin.html" FRAMEBORDER="0" width="100%" height="100%" ></IFRAME>
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/qt/numpad-enter-key.html b/Source/WebCore/manual-tests/qt/numpad-enter-key.html
new file mode 100644
index 0000000..ea9b800
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/numpad-enter-key.html
@@ -0,0 +1,22 @@
+<html>
+<head>
+ <script type="text/javascript">
+ window.onload = function() {
+ document.getElementById('test').addEventListener('keypress', function(e) {
+ out = document.getElementById('out');
+ out.innerHTML = 'keyCode: ' + e.keyCode + ' (should be 13)';
+ if (e.keyCode == 13)
+ out.style.background = '#6f6';
+ else
+ out.style.background = '#f66';
+ }, false);
+ document.getElementById('test').focus()
+ };
+ </script>
+</head>
+<body>
+ <p>Press the numpad Enter key while the input box below is focused:</p>
+ <p><input type="text" id="test" /></p>
+ <p id="out"></p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/qt/plugin-iframe.html b/Source/WebCore/manual-tests/qt/plugin-iframe.html
new file mode 100644
index 0000000..ee838ba
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/plugin-iframe.html
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <style>
+ html, body {
+ background-color: blue;
+ color: white;
+ }
+ #spacer {
+ width: 100%;
+ height: 1000px;
+ background-color: yellow;
+ }
+ </style>
+ </script>
+ </head>
+ <body>
+ <p>
+ Scroll the view, ensure that plugin scrolls in sync with the view.
+ </p>
+
+ <iframe src="plugin-sibling-frame-include.html" width="200" height="200"
+ frameborder="0" scrolling="auto" name="myInlineFrame"></iframe>
+ <div id="spacer"><p>content</p></div>
+ </body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/qt/plugin-sibling-frame-include.html b/Source/WebCore/manual-tests/qt/plugin-sibling-frame-include.html
new file mode 100644
index 0000000..e59867c
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/plugin-sibling-frame-include.html
@@ -0,0 +1,17 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>ClickToFlash Test File</title>
+</head>
+
+<body bgcolor="#000">
+
+ <!-- <embed id="flashPlugin" src="http://www.youtube.com/v/loXfcsXRB-w&#038;hl=en&#038;fs=1" --!>
+ <embed src="../plugins/test.swf"
+ type="application/x-shockwave-flash">
+ </embed>
+
+</body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/qt/plugin-sibling-frame.html b/Source/WebCore/manual-tests/qt/plugin-sibling-frame.html
new file mode 100644
index 0000000..74e339a
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/plugin-sibling-frame.html
@@ -0,0 +1,6 @@
+<html>
+<head><title>Move the frame to hide the plugin fully</title></head>
+<frameset cols="25%,50%,25%">
+ <frame src="plugin-sibling-frame-include.html">
+</frameset>
+</html>
diff --git a/Source/WebCore/manual-tests/qt/qtplugin-scrolling.html b/Source/WebCore/manual-tests/qt/qtplugin-scrolling.html
new file mode 100644
index 0000000..8503832
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/qtplugin-scrolling.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+<style>
+ #spacer {
+ width: 100%;
+ height: 1000px;
+ background-color: yellow;
+ }
+</style>
+</head>
+<body>
+
+<p>
+ Scroll the page, ensure that the two labels move nicely along with the rest of the document.
+</p>
+
+<div>
+<object type="application/x-qt-plugin" classid="alien_QLabel" name="label1" height="30"></object>
+</div>
+
+<div>
+<object type="application/x-qt-plugin" classid="QLabel" name="label2" height="30"></object>
+</div>
+
+<div id="spacer"><p>&nbsp;</p></div>
+
+<script>
+document.label1.setText("Label one");
+document.label2.setText("Label two");
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/qt/qtplugin.html b/Source/WebCore/manual-tests/qt/qtplugin.html
new file mode 100644
index 0000000..631ce63
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/qtplugin.html
@@ -0,0 +1,27 @@
+<html>
+<body>
+Image:<br/>
+ <img src="qrc:/webkit/inspector/Images/largerResourcesButtonGlyph.png" width="80" height="80"/>
+ <br/>
+
+<!-- visible progressbar -->
+<div>
+QT progress bar:
+<object type="application/x-qt-plugin" classid="QProgressBar" name="progressbar1" height=30></object>
+</div>
+
+<!-- should not be visible -->
+<div style="visibility: hidden;">
+You should not see this:
+<object type="application/x-qt-plugin" classid="QProgressBar" name="progressbar2" height=30></object>
+</div>
+
+<script>
+function display(){
+ if (++document.progressbar1.value != 100)
+setTimeout("display()", 50)
+}
+display();
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/qt/unload-alert.html b/Source/WebCore/manual-tests/qt/unload-alert.html
new file mode 100644
index 0000000..3b02818
--- /dev/null
+++ b/Source/WebCore/manual-tests/qt/unload-alert.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+</head>
+<body onunload="alert('goodbye');">
+Reload me twice ensuring that this didn't result in a crash. Test added due to
+bug <a href="https://bugs.webkit.org/show_bug.cgi?id=26556">@25556</a>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/quit-inside-unload.html b/Source/WebCore/manual-tests/quit-inside-unload.html
new file mode 100644
index 0000000..23ae71d
--- /dev/null
+++ b/Source/WebCore/manual-tests/quit-inside-unload.html
@@ -0,0 +1,14 @@
+<script>
+ var showedAlert = false;
+ function handleUnload()
+ {
+ if (showedAlert)
+ return;
+
+ showedAlert = true;
+ alert("Now Quit Safari. Do not dismiss this alert first.");
+ }
+</script>
+<body onunload="handleUnload()">
+ Close this window
+</body>
diff --git a/Source/WebCore/manual-tests/redirect.html b/Source/WebCore/manual-tests/redirect.html
new file mode 100644
index 0000000..f02a707
--- /dev/null
+++ b/Source/WebCore/manual-tests/redirect.html
@@ -0,0 +1,2 @@
+<meta http-equiv="refresh" content="0;url=redirection-target.html">
+<p>See redirection-target.html for details of what this tests.</p>
diff --git a/Source/WebCore/manual-tests/redirectHistory/redir-1.html b/Source/WebCore/manual-tests/redirectHistory/redir-1.html
new file mode 100644
index 0000000..1cdab45
--- /dev/null
+++ b/Source/WebCore/manual-tests/redirectHistory/redir-1.html
@@ -0,0 +1,10 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="3;url=redir-2.html"/>
+<title>Redirect 1</title>
+</head>
+<body>
+<p>This test checks that a &quot;quick&quot; redirect does not create an extra entry in the back/forward list. See Radar 4351664.</p>
+<p>Wait a few seconds for the redirect to occur. If you return to this page after the redirect, then the test passed. If you end up at redir-2.html, then the test failed.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/redirectHistory/redir-2.html b/Source/WebCore/manual-tests/redirectHistory/redir-2.html
new file mode 100644
index 0000000..fe9e6ba
--- /dev/null
+++ b/Source/WebCore/manual-tests/redirectHistory/redir-2.html
@@ -0,0 +1,9 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0;url=redir-3.html"/>
+<title>Redirect 2</title>
+</head>
+<body>
+<p>Test failed</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/redirectHistory/redir-3.html b/Source/WebCore/manual-tests/redirectHistory/redir-3.html
new file mode 100644
index 0000000..a525851
--- /dev/null
+++ b/Source/WebCore/manual-tests/redirectHistory/redir-3.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<title>Redirect 3</title>
+<script>
+window.setTimeout("window.history.back()", 1000);
+</script>
+</head>
+<body>
+<p>Going back...</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/redirection-target.html b/Source/WebCore/manual-tests/redirection-target.html
new file mode 100644
index 0000000..365681a
--- /dev/null
+++ b/Source/WebCore/manual-tests/redirection-target.html
@@ -0,0 +1,6 @@
+<p>
+This test checks that redirection does not leave Safari thinking it's still loading.
+Check that the title bar does not say "Loading" any more.
+The bug was <a href="rdar://problem/4432562">4432562</a> in Radar and
+<a href="http://bugs.webkit.org/show_bug.cgi?id=7058">7058</a> in Bugzilla.
+</p>
diff --git a/Source/WebCore/manual-tests/redraw-page-cache-visited-links.html b/Source/WebCore/manual-tests/redraw-page-cache-visited-links.html
new file mode 100644
index 0000000..d13019b
--- /dev/null
+++ b/Source/WebCore/manual-tests/redraw-page-cache-visited-links.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+<script>
+// Uncomment to make this an automated test
+//if (window.layoutTestController) {
+// layoutTestController.waitUntilDone();
+// layoutTestController.keepWebHistory();
+//}
+function runTest() {
+// Uncomment to make this an automated test
+// // Uses window.history hack; see http://bugs.webkit.org/show_bug.cgi?id=7135
+// if (!window.history[99999]) {
+// var element = document.getElementById("mylink");
+// var event = document.createEvent("MouseEvent");
+// event.initEvent("click", true, true);
+// element.dispatchEvent(event);
+// }
+// else {
+// if (window.layoutTestController) {
+// layoutTestController.notifyDone();
+// }
+// }
+}
+</script>
+</head>
+<body onload="runTest();">
+<div><a href="http://bugs.webkit.org/show_bug.cgi?id=8079">Bug 8079 REGRESSION: Redraw from page cache does not show visited links</a></div>
+<ol>
+<li>The link in Step 2 should be rendered in an unvisited link color first.
+<li><a id="mylink" href="./resources/redraw-page-cache-visited-links-2.html">Click This Link Once</a><br><br>
+<li value="4">The test passes if the link in Step 2 is rendered in a visited link color after the click.
+</ol>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/remove-form-node-with-radio-buttons-crash.html b/Source/WebCore/manual-tests/remove-form-node-with-radio-buttons-crash.html
new file mode 100644
index 0000000..298da5a
--- /dev/null
+++ b/Source/WebCore/manual-tests/remove-form-node-with-radio-buttons-crash.html
@@ -0,0 +1,33 @@
+<html>
+<script type="text/javascript">
+
+function load1() {
+ var doc = document.getElementById("container");
+ doc.innerHTML = "<form name=\"gaga\"><input type=\"radio\" name=\"asdf\" id=\"chk\" value=\"A\"> Checkbox 1" +
+ "<input type=\"radio\" name=\"asdf\" value=\"B\"> Checkbox 2";
+ document.getElementById("chk").checked = true;
+}
+
+function load2() {
+ var doc = document.getElementById("container");
+ doc.innerHTML = "hello, world";
+}
+
+var ctr = 0;
+
+function runTest() {
+ if (ctr % 2 == 0) {
+ load1();
+ } else {
+ load2();
+ }
+ ctr++;
+ setTimeout("runTest()", 10);
+}
+</script>
+<body>
+<div>This is a test for http://bugs.webkit.org/show_bug.cgi?id=12938 - to test this, press the "Run Test" button and wait for a couple of minutes - the browser should not crash.</div>
+<input type="button" onclick="runTest()" value="Run Test">
+<div id="container"/>
+
+</body></html>
diff --git a/Source/WebCore/manual-tests/remove-input-file-onchange.html b/Source/WebCore/manual-tests/remove-input-file-onchange.html
new file mode 100644
index 0000000..80368e3
--- /dev/null
+++ b/Source/WebCore/manual-tests/remove-input-file-onchange.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<script>
+function removeDiv()
+{
+ var parent = document.getElementById("parent");
+ var child = document.getElementById("child");
+ parent.removeChild(child);
+}
+</script>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4621649">4621649</a> repro crash: Upload link causes crash on pages.google.com in Frame::nodeForWidget</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+<ol>
+<li> To test this bug, just choose any file
+</ol>
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Should see the file chooser disappear and the word "Success" will appear
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Safari will crash in WebCore::Frame::nodeForWidget.
+</p>
+
+<div id="parent">
+<div id="child">
+<form>
+<input id="theFile" type="file" onchange="removeDiv();">
+</form>
+</div>
+</div>
+
+
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/remove-on-drop-crash.html b/Source/WebCore/manual-tests/remove-on-drop-crash.html
new file mode 100644
index 0000000..c50adba
--- /dev/null
+++ b/Source/WebCore/manual-tests/remove-on-drop-crash.html
@@ -0,0 +1,10 @@
+<body>
+Load <a href="http://www.google.com/">Google</a> and drag the logo onto this page. The second time you drag it on, Safari will crash.
+<script>
+function deleteSelection() {
+ document.execCommand("delete");
+}
+document.designMode="on";
+document.body.addEventListener("DOMNodeInserted", deleteSelection, false);
+</script>
+</body>
diff --git a/Source/WebCore/manual-tests/remove-select-onchange.html b/Source/WebCore/manual-tests/remove-select-onchange.html
new file mode 100644
index 0000000..51004b5
--- /dev/null
+++ b/Source/WebCore/manual-tests/remove-select-onchange.html
@@ -0,0 +1,9 @@
+<p>This test shouldn't crash when you pick something from select, even though it removes itself.
+</p>
+<select id="foo" onchange='sel.parentNode.removeChild(sel)'>
+<option>Boom</option>
+<option>Shouldn't crash when you pick this.</option>
+</select>
+<script>
+var sel = document.getElementById("foo");
+</script> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/reset-initiatedDrag.html b/Source/WebCore/manual-tests/reset-initiatedDrag.html
new file mode 100644
index 0000000..a1c0770
--- /dev/null
+++ b/Source/WebCore/manual-tests/reset-initiatedDrag.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=9466">Bugzilla bug 9466</a> Assertion failure when dragging an image from the document into Safari's address bar</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b><br>
+1. Drag the apple image into this window&rsquo;s address bar.<br>
+2. Choose History &gt; Back to go back to this page.<br>
+3. Drag a URL from a TextEdit document into this window.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+In step 3, this window will accept the dragged URL.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+In step 1, Safari will quit unexpectedly due to an assertion failure. Alternatively,
+in step 3, this window will not accept the dragged URL.
+</p>
+
+<img src="resources/apple.jpg">
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/200x100.png b/Source/WebCore/manual-tests/resources/200x100.png
new file mode 100644
index 0000000..f7cf784
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/200x100.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/200x200.png b/Source/WebCore/manual-tests/resources/200x200.png
new file mode 100644
index 0000000..35414cd
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/200x200.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/3dolph.gif b/Source/WebCore/manual-tests/resources/3dolph.gif
new file mode 100644
index 0000000..2a1801f
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/3dolph.gif
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.class b/Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.class
new file mode 100644
index 0000000..0435db6
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.class
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.java b/Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.java
new file mode 100644
index 0000000..d145844
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/ArrayParameterTestApplet.java
@@ -0,0 +1,89 @@
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+
+
+public class ArrayParameterTestApplet
+ extends Applet
+{
+ public void init()
+ {
+ setLayout(new BorderLayout());
+ }
+
+
+ public void start()
+ {
+ }
+
+
+ public void stop()
+ {
+ }
+
+
+ public void destroy()
+ {
+ }
+
+
+ public void arrayFunction(String [] array) {
+ System.out.println("arrayFunction called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void booleanFunction(boolean[] array) {
+ System.out.println("booleanArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void byteFunction(byte[] array) {
+ System.out.println("byteArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void charFunction(char[] array) {
+ System.out.println("charArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void shortFunction(short[] array) {
+ System.out.println("shortArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void intFunction(int[] array) {
+ System.out.println("intArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void longFunction(long[] array) {
+ System.out.println("longArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void floatFunction(float[] array) {
+ System.out.println("floatArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void doubleFunction(double[] array) {
+ System.out.println("doubleArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+
+ public void objectFunction(Applet[] array) {
+ System.out.println("objectArray called");
+ for (int i = 0; i < array.length; i++)
+ System.out.println(array[i]);
+ }
+}
diff --git a/Source/WebCore/manual-tests/resources/CheckerApplet.class b/Source/WebCore/manual-tests/resources/CheckerApplet.class
new file mode 100644
index 0000000..684aa81
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/CheckerApplet.class
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/CheckerApplet.java b/Source/WebCore/manual-tests/resources/CheckerApplet.java
new file mode 100644
index 0000000..895e33c
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/CheckerApplet.java
@@ -0,0 +1,21 @@
+import java.applet.Applet;
+import java.awt.Color;
+import java.awt.Component;
+
+public class CheckerApplet extends Applet
+{
+
+ public boolean checkVersion()
+ {
+ return true;
+ }
+
+ public void start()
+ {
+ setBackground(new Color(255, 255, 255));
+ }
+
+ public CheckerApplet()
+ {
+ }
+}
diff --git a/Source/WebCore/manual-tests/resources/Default-port-frame-contents.html b/Source/WebCore/manual-tests/resources/Default-port-frame-contents.html
new file mode 100644
index 0000000..3565b28
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/Default-port-frame-contents.html
@@ -0,0 +1,4 @@
+My URL is: <script>document.write(document.URL);</script>
+<script>
+ window.testData = "Sam is SOOOOOO hot!";
+</script> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/DrawMessage.class b/Source/WebCore/manual-tests/resources/DrawMessage.class
new file mode 100644
index 0000000..6de7afc
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/DrawMessage.class
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/StringTypeTest.class b/Source/WebCore/manual-tests/resources/StringTypeTest.class
new file mode 100644
index 0000000..3a81287
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/StringTypeTest.class
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/StringTypeTest.java b/Source/WebCore/manual-tests/resources/StringTypeTest.java
new file mode 100644
index 0000000..9b8dd78
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/StringTypeTest.java
@@ -0,0 +1,7 @@
+import java.applet.*;
+
+public class StringTypeTest extends Applet {
+ public String getString() {
+ return new String("hello");
+ }
+} \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/TestApplet.class b/Source/WebCore/manual-tests/resources/TestApplet.class
new file mode 100644
index 0000000..05fabdd
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/TestApplet.class
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/TestApplet.java b/Source/WebCore/manual-tests/resources/TestApplet.java
new file mode 100644
index 0000000..e4758a3
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/TestApplet.java
@@ -0,0 +1,16 @@
+import java.applet.Applet;
+
+public class TestApplet extends Applet {
+ public static int MAGIC_NUMBER = 1;
+ public int field;
+
+ public void init()
+ {
+ field = MAGIC_NUMBER;
+ }
+
+ public int method()
+ {
+ return MAGIC_NUMBER;
+ }
+} \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/alert-and-go-back.html b/Source/WebCore/manual-tests/resources/alert-and-go-back.html
new file mode 100644
index 0000000..55a5b50
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/alert-and-go-back.html
@@ -0,0 +1,4 @@
+<script>
+history.back();
+alert("Wait a moment and then dismiss this alert. If there is no crash, the test succeeded.");
+</script>
diff --git a/Source/WebCore/manual-tests/resources/animated-10x.gif b/Source/WebCore/manual-tests/resources/animated-10x.gif
new file mode 100644
index 0000000..56bdb0e
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/animated-10x.gif
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/animated-2x.gif b/Source/WebCore/manual-tests/resources/animated-2x.gif
new file mode 100644
index 0000000..71080bd
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/animated-2x.gif
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/animated-infinite.gif b/Source/WebCore/manual-tests/resources/animated-infinite.gif
new file mode 100644
index 0000000..8bca4a8
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/animated-infinite.gif
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/apple.jpg b/Source/WebCore/manual-tests/resources/apple.jpg
new file mode 100644
index 0000000..bce4c38
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/apple.jpg
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/before-go-back.html b/Source/WebCore/manual-tests/resources/before-go-back.html
new file mode 100644
index 0000000..10d8dbe
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/before-go-back.html
@@ -0,0 +1,17 @@
+<html>
+<body>
+<a href="will-go-back.html">
+Click this link</a>
+<br>
+<br>
+<u>Manual test :</u>
+Just click on the link : if the webkit doesn't crash, the test has succeed.
+<br>
+<u>Details:</u>
+This test checks if you can go back to a _blank previously tab-opened page.
+<br>
+When you click on the above link, one page is loaded and tries to go back.
+<br>
+If the webkit doesn't meet an assertion failure : this test is successfull.
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/big-page.html b/Source/WebCore/manual-tests/resources/big-page.html
new file mode 100644
index 0000000..987ea75
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/big-page.html
@@ -0,0 +1,2 @@
+<p>This page is large enough to need to be scrolled in a 200x200 frame.</p>
+<div style="width: 400px; height: 400px; background-color: blue"></div>
diff --git a/Source/WebCore/manual-tests/resources/chrome-bidi-text-window.html b/Source/WebCore/manual-tests/resources/chrome-bidi-text-window.html
new file mode 100644
index 0000000..a2333b7
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/chrome-bidi-text-window.html
@@ -0,0 +1,61 @@
+<head>
+ <meta name="content-type" content="text/html; charset=UTF-8">
+ <style>
+ body { margin-top: 0; }
+ select { display: block; font-size: 13px; }
+ div#reference { font: 13px 'Lucida Grande'; text-align: center; height: 24px; }
+ </style>
+ <script>
+ function setTitle(text)
+ {
+ document.title = text;
+ document.getElementById("reference").innerHTML = text;
+ }
+ </script>
+</head>
+<body>
+<div id="reference"></div>
+<p>
+ This tests drawing bidirectional text in Windows Safari chrome.
+</p>
+<p>
+ Select each item from the list and verify that the window title is
+ rendered exactly like the selected item.
+ Pay attention to the ordering of
+ the characters, the direction of parentheses, diacritics and combining marks,
+ and shaping of Arabic letters. You can ignore small differences in the overall width
+ of the text.
+ For your convenience, the
+ text to match will be displayed at the top of the window.
+</p>
+<select onchange="setTitle(item(selectedIndex).innerText)" size="9">
+ <option>
+ First שניה (03) רביעית fifth
+ </option>
+ <option>
+ &#x202b;First שניה (03) רביעית fifth&#x202c;
+ </option>
+ <option>
+ &#x202d;First שניה (03) רביעית fifth&#x202c;
+ </option>
+ <option>
+ &#x202e;First שניה (03) רביעית fifth&#x202c;
+ </option>
+ <option>
+ משהו ×¢× × Ö´×§Ö¼×•Ö¼×“
+ </option>
+ <option>
+ اللغة العربية
+ </option>
+ <option>
+ Et volia&#x0300: ATSUI!
+ </option>
+ <option>
+ Directional &#x202e;overrides&#x202c; are confusing.
+ </option>
+ <option>
+ She said &ldquo;&#x202b;יש TNT במזוודה!&#x202c;&rdquo; and ran off
+ </option>
+</select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/containsAnimatedGif.html b/Source/WebCore/manual-tests/resources/containsAnimatedGif.html
new file mode 100644
index 0000000..77b2cbf
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/containsAnimatedGif.html
@@ -0,0 +1,3 @@
+<html>
+<img src="http://127.0.0.1:8000/misc/resources/animated-gif-with-offsets.gif" />
+</html>
diff --git a/Source/WebCore/manual-tests/resources/cur-hotspot.cur b/Source/WebCore/manual-tests/resources/cur-hotspot.cur
new file mode 100644
index 0000000..8107e47
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/cur-hotspot.cur
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/cursor-empty-url.css b/Source/WebCore/manual-tests/resources/cursor-empty-url.css
new file mode 100644
index 0000000..0479af1
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/cursor-empty-url.css
@@ -0,0 +1 @@
+#target { cursor: url(''), auto; }
diff --git a/Source/WebCore/manual-tests/resources/drag-image.png b/Source/WebCore/manual-tests/resources/drag-image.png
new file mode 100644
index 0000000..a229616
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/drag-image.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/drop-in-empty-doc.xhtml b/Source/WebCore/manual-tests/resources/drop-in-empty-doc.xhtml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/drop-in-empty-doc.xhtml
diff --git a/Source/WebCore/manual-tests/resources/empty-file.js b/Source/WebCore/manual-tests/resources/empty-file.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/empty-file.js
diff --git a/Source/WebCore/manual-tests/resources/frame1.html b/Source/WebCore/manual-tests/resources/frame1.html
new file mode 100644
index 0000000..50f3b98
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/frame1.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>frame1</title>
+</head>
+<body>
+Frame 1
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/frame2.html b/Source/WebCore/manual-tests/resources/frame2.html
new file mode 100644
index 0000000..d74db38
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/frame2.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>frame2</title>
+</head>
+<body>
+Frame 2
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/hash-ref-test.html b/Source/WebCore/manual-tests/resources/hash-ref-test.html
new file mode 100644
index 0000000..ed45778
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/hash-ref-test.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+<title>Test Case for Bug 13067: Manually adding #hash to URL reloads entire page instead of jumping to #hash location in cached page</title>
+<style>
+body {
+ min-height: 10000px;
+ margin-top: 0px;
+ padding-top: 0px;
+}
+div {
+ min-height: 100px;
+ border: 1px solid black;
+}
+</style>
+</head>
+<body>
+top
+<div id="div1">div1</div>
+<div id="div2">div2</div>
+<div id="div3">div3</div>
+<div id="div4">div4</div>
+<div id="div5">div5</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/helpCursor.tiff b/Source/WebCore/manual-tests/resources/helpCursor.tiff
new file mode 100644
index 0000000..20b56b9
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/helpCursor.tiff
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/hover-subframe-1.html b/Source/WebCore/manual-tests/resources/hover-subframe-1.html
new file mode 100644
index 0000000..181956b
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/hover-subframe-1.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<style>
+body { margin: 0px; }
+.outer {
+ margin: -100px;
+ width: 400px;
+ height: 500px;
+ background-color: yellow;
+}
+.outer:hover {
+ background-color: red;
+}
+.inner {
+ visibility: hidden;
+ width: 100%;
+ height: 50%;
+ background-color: cyan;
+}
+</style>
+</head>
+
+<body>
+<div class="outer"
+ onmouseover="firstChild.style.visibility='visible'"
+ onmouseout="firstChild.style.visibility='hidden'"><div class="inner"></div></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/hover-subframe-2.html b/Source/WebCore/manual-tests/resources/hover-subframe-2.html
new file mode 100644
index 0000000..ca4ca40
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/hover-subframe-2.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<style>
+body { margin: 0px; }
+.outer {
+ margin: -100px;
+ width: 400px;
+ height: 500px;
+ background-color: green;
+}
+.outer:hover {
+ background-color: red;
+}
+.inner {
+ visibility: hidden;
+ width: 100%;
+ height: 50%;
+ background-color: cyan;
+}
+</style>
+</head>
+
+<body>
+<div class="outer"
+ onmouseover="firstChild.style.visibility='visible'"
+ onmouseout="firstChild.style.visibility='hidden'"><div class="inner"></div></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/large-size-image-crash.gif b/Source/WebCore/manual-tests/resources/large-size-image-crash.gif
new file mode 100644
index 0000000..6da80af
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/large-size-image-crash.gif
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/liveconnect-security-exception-popup.html b/Source/WebCore/manual-tests/resources/liveconnect-security-exception-popup.html
new file mode 100644
index 0000000..cea621b
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/liveconnect-security-exception-popup.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+<!--
+Sorry for the hackery in this test. Currently, we have no elegant way to
+catch Java errors and print out an intelligent response.
+-->
+
+<title>popup window</title>
+<script>
+function print(message) {
+ var paragraph = document.createElement("p");
+ paragraph.appendChild(document.createTextNode(message));
+ document.getElementById("console").appendChild(paragraph);
+}
+
+function test() {
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ }
+
+ print(
+ "applet.field returned " +
+ document.getElementById('applet').field
+ );
+
+ document.getElementById('applet').field += 1;
+ print(
+ "incremented applet.field by 1"
+ );
+
+ print(
+ "applet.field returned " +
+ document.getElementById('applet').field
+ );
+
+ print(
+ "applet.method() returned " +
+ document.getElementById('applet').method()
+ );
+}
+</script>
+</head>
+<body onload="test();">
+<applet id='applet' code="TestApplet.class" codebase="."></applet>
+<div id='console'/>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/load-deferrer-script-element.js b/Source/WebCore/manual-tests/resources/load-deferrer-script-element.js
new file mode 100644
index 0000000..fdecdb4
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/load-deferrer-script-element.js
@@ -0,0 +1,5 @@
+if (jsLoaded) {
+ log("Button was clicked.");
+ // Use a big timeout value to ensure that error messages do not show up.
+ setTimeout(function() { if (runningModal) log("Error: This line should not show up!"); }, 3000);
+}
diff --git a/Source/WebCore/manual-tests/resources/lorem-text.html b/Source/WebCore/manual-tests/resources/lorem-text.html
new file mode 100644
index 0000000..12a42a6
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/lorem-text.html
@@ -0,0 +1,34 @@
+<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8"></HEAD><BODY><P>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
+ nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
+ sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
+ rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
+ ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing
+ elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna
+ aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
+ dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus
+ est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
+ sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
+ dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
+ et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
+ takimata sanctus est Lorem ipsum dolor sit amet.
+ </P>
+ <P> Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
+ molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
+ eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
+ zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
+ dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
+ euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+ </P>
+ <P> Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
+ suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem
+ vel eum iriure dolor in hendrerit in vulputate velit esse molestie
+ consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
+ accumsan et iusto odio dignissim qui blandit praesent luptatum zzril
+ delenit augue duis dolore te feugait nulla facilisi.
+ </P>
+ <P> Nam liber tempor cum soluta nobis eleifend option congue nihil
+ imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum
+ dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
+ euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut
+ wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper
+ suscipit lobortis nisl ut aliquip ex ea commodo consequat.</P></BODY></HTML> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/mouseevent-on-closeddoc.html b/Source/WebCore/manual-tests/resources/mouseevent-on-closeddoc.html
new file mode 100644
index 0000000..569616a
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/mouseevent-on-closeddoc.html
@@ -0,0 +1 @@
+<body onload="document.open();document.close();document.open();"></body>
diff --git a/Source/WebCore/manual-tests/resources/multiFileResources/post-echo-and-notify-done.cgi b/Source/WebCore/manual-tests/resources/multiFileResources/post-echo-and-notify-done.cgi
new file mode 100755
index 0000000..2c523dc
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/multiFileResources/post-echo-and-notify-done.cgi
@@ -0,0 +1,12 @@
+#!/usr/bin/perl -w
+
+print "Content-type: text/html\n\n";
+
+if ($ENV{'REQUEST_METHOD'} eq "POST") {
+ read(STDIN, $request, $ENV{'CONTENT_LENGTH'})
+ || die "Could not get query\n";
+ print "<pre>$request</pre>";
+ print "<script>if (window.layoutTestController) layoutTestController.notifyDone();</script>";
+} else {
+ print "Wrong method: " . $ENV{'REQUEST_METHOD'} . "\n";
+}
diff --git a/Source/WebCore/manual-tests/resources/multiFileResources/testFile1.html b/Source/WebCore/manual-tests/resources/multiFileResources/testFile1.html
new file mode 100644
index 0000000..4313554
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/multiFileResources/testFile1.html
@@ -0,0 +1,4 @@
+<script>
+parent.log('test file 1 submitted');
+parent.submittedFiles++;
+</script> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/multiFileResources/testFile2.html b/Source/WebCore/manual-tests/resources/multiFileResources/testFile2.html
new file mode 100644
index 0000000..90167f7
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/multiFileResources/testFile2.html
@@ -0,0 +1,4 @@
+<script>
+parent.log('test file 2 submitted');
+parent.submittedFiles++;
+</script> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/multiFileResources/testFile3.html b/Source/WebCore/manual-tests/resources/multiFileResources/testFile3.html
new file mode 100644
index 0000000..f89ddf3
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/multiFileResources/testFile3.html
@@ -0,0 +1,5 @@
+<script>
+parent.log('test file 3 submitted');
+parent.submittedFiles++;
+parent.verifyResults();
+</script> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/named-window-blank-target-step2.html b/Source/WebCore/manual-tests/resources/named-window-blank-target-step2.html
new file mode 100644
index 0000000..0275603
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/named-window-blank-target-step2.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=7747">Bugzilla bug 7747</a> REGRESSION: Background tab/window auto-refresh in GMail will take focus.</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST (continued):</b> <br>
+STEP 3: Click <a target="foo" href="named-window-blank-target-step3.html">this link</a>.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+If this window is frontmost after STEP 4, then the test FAILED.
+</p>
+
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/named-window-blank-target-step3.html b/Source/WebCore/manual-tests/resources/named-window-blank-target-step3.html
new file mode 100644
index 0000000..c510522
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/named-window-blank-target-step3.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=7747">Bugzilla bug 7747</a> REGRESSION: Background tab/window auto-refresh in GMail will take focus.</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+STEP 4: Click <a href="named-window-blank-target-step4.html">this link</a>.
+</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/named-window-blank-target-step4.html b/Source/WebCore/manual-tests/resources/named-window-blank-target-step4.html
new file mode 100644
index 0000000..ee07450
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/named-window-blank-target-step4.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=7747">Bugzilla bug 7747</a> REGRESSION: Background tab/window auto-refresh in GMail will take focus.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+If this window is frontmost after STEP 4, the test PASSED.
+</p>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/nested-plug-ins-inner-frame.html b/Source/WebCore/manual-tests/resources/nested-plug-ins-inner-frame.html
new file mode 100644
index 0000000..193bbe9
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/nested-plug-ins-inner-frame.html
@@ -0,0 +1 @@
+<embed id="plugin" width='100' height='100' src='spinbox.swf' wmode='window'>
diff --git a/Source/WebCore/manual-tests/resources/nested-plug-ins-outer-frame.html b/Source/WebCore/manual-tests/resources/nested-plug-ins-outer-frame.html
new file mode 100644
index 0000000..c447d16
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/nested-plug-ins-outer-frame.html
@@ -0,0 +1,3 @@
+<embed id="plugin" width='100' height='100' src='spinbox.swf' wmode='window'>
+<br>
+<iframe style="height: 200px; width: 200px;" id='inner' src='nested-plug-ins-inner-frame.html'></iframe>
diff --git a/Source/WebCore/manual-tests/resources/nestedframesets.html b/Source/WebCore/manual-tests/resources/nestedframesets.html
new file mode 100644
index 0000000..3202fc0
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/nestedframesets.html
@@ -0,0 +1,4 @@
+<frameset cols="300,300" rows="*">
+ <frame src="testframeset.html" >
+ <frame src="lorem-text.html">
+</frameset> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/non-animated.gif b/Source/WebCore/manual-tests/resources/non-animated.gif
new file mode 100644
index 0000000..b6a8540
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/non-animated.gif
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/open-after-close-popup.html b/Source/WebCore/manual-tests/resources/open-after-close-popup.html
new file mode 100644
index 0000000..4f443d0
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/open-after-close-popup.html
@@ -0,0 +1,5 @@
+<html>
+ <body>
+ PASS: window.open succeeded after window.close using same name.
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/open-close-tokenizer-crash.html b/Source/WebCore/manual-tests/resources/open-close-tokenizer-crash.html
new file mode 100644
index 0000000..b45110a
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/open-close-tokenizer-crash.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<script Language="javaScript">
+self.close();
+</script>
+<script language="javascript" src="empty-file.js"></script>
+</head>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/orange.mov b/Source/WebCore/manual-tests/resources/orange.mov
new file mode 100644
index 0000000..a17e81b
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/orange.mov
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/plain-text-paste.dmg b/Source/WebCore/manual-tests/resources/plain-text-paste.dmg
new file mode 100644
index 0000000..f22188d
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/plain-text-paste.dmg
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/plugin-in-iframe-scroll-iframe.html b/Source/WebCore/manual-tests/resources/plugin-in-iframe-scroll-iframe.html
new file mode 100644
index 0000000..b2593b0
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/plugin-in-iframe-scroll-iframe.html
@@ -0,0 +1,6 @@
+<object type="video/quicktime" style="background-color: red; width: 298px; height: 298px; border:solid 1px">
+ <param name="src" value="orange.mov">
+ <param name="controller" value="false">
+ <param name="autoplay" value="false">
+ <param name="scale" value="tofit">
+</object>
diff --git a/Source/WebCore/manual-tests/resources/popup200x100.html b/Source/WebCore/manual-tests/resources/popup200x100.html
new file mode 100644
index 0000000..7e649c0
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/popup200x100.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>Popup 200x100</title>
+</head>
+<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
+<img src="200x100.png" width="200" height="100">
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/popup200x200.html b/Source/WebCore/manual-tests/resources/popup200x200.html
new file mode 100644
index 0000000..c569c0c
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/popup200x200.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>Popup 100x100</title>
+</head>
+<body bgcolor="#ffffff" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
+<img src="200x200.png" width="200" height="200">
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/print-subframe.html b/Source/WebCore/manual-tests/resources/print-subframe.html
new file mode 100755
index 0000000..272b684
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/print-subframe.html
@@ -0,0 +1 @@
+<p>This text in the subframe should be printed.</p>
diff --git a/Source/WebCore/manual-tests/resources/redraw-page-cache-visited-links-2.html b/Source/WebCore/manual-tests/resources/redraw-page-cache-visited-links-2.html
new file mode 100644
index 0000000..c6568dc
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/redraw-page-cache-visited-links-2.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+<script>
+function runTest() {
+// Uncomment to make this an automated test
+// // Uses window.history hack; see http://bugs.webkit.org/show_bug.cgi?id=7135
+// window.history[99999] = 1;
+// window.history.back();
+}
+</script>
+</head>
+<body onload="runTest();">
+<div><a href="http://bugs.webkit.org/show_bug.cgi?id=8079">Bug 8079 REGRESSION: Redraw from page cache does not show visited links</a></div>
+<div><br><br></div>
+<ol>
+<li value="3">Click the "Back" button on the browser.
+</ol>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/simple_image.png b/Source/WebCore/manual-tests/resources/simple_image.png
new file mode 100644
index 0000000..4685399
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/simple_image.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/spinbox.swf b/Source/WebCore/manual-tests/resources/spinbox.swf
new file mode 100644
index 0000000..220d00a
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/spinbox.swf
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/testframe-link_text.html b/Source/WebCore/manual-tests/resources/testframe-link_text.html
new file mode 100644
index 0000000..24c862d
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/testframe-link_text.html
@@ -0,0 +1,5 @@
+<p title="Can you see this title?" style="margin-left: -10px; margin-top: -15px;"><a href="http://www.google.com">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur dui nunc, tristique a, varius commodo, pellentesque in, augue. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur vehicula ante et nisl. Sed vitae sapien. Quisque turpis. Nullam libero urna, semper quis, tincidunt a, aliquam eget, nulla. Proin sollicitudin, purus ut aliquet imperdiet, eros tortor vehicula ante, id rutrum erat sapien ut sem. Mauris urna velit, scelerisque vitae, aliquam non, venenatis vitae, nibh. In nunc massa, commodo in, imperdiet vitae, tempor ut, neque. Suspendisse pharetra, mauris in scelerisque iaculis, tellus magna tempus elit, eget ultricies libero magna eget tortor. Suspendisse nibh quam, commodo sit amet, bibendum dapibus, sollicitudin eu, nisi. Vestibulum ipsum. Sed eget odio at ante iaculis fermentum. Quisque sed velit. Cras adipiscing, felis sed sodales dictum, felis neque dictum ante, ac dignissim leo nibh id erat. Sed consectetuer, ligula quis faucibus tincidunt, mauris lorem tempor justo, et ultricies nisi enim sit amet eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam dictum posuere augue. Sed fringilla. Nunc nunc.
+
+Suspendisse fringilla dui quis libero. Vestibulum ipsum erat, dictum eu, sodales et, pharetra nec, nibh. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec ac turpis eget dolor facilisis commodo. Nunc augue. Quisque in mauris ac nunc mollis dictum. In hac habitasse platea dictumst. Cras sed nisl at purus mattis suscipit. Suspendisse potenti. Maecenas vel dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Sed pede nisl, tristique ac, convallis vitae, mattis et, ante. Maecenas tortor. Suspendisse pulvinar ullamcorper pede. Praesent ac lacus. Integer sapien massa, tempus at, interdum ut, fermentum vitae, mi. Nullam pulvinar eros id purus. Duis velit quam, dictum ac, gravida ut, luctus id, dui. Nam id neque.
+
+Aliquam vitae tortor sed massa aliquam pellentesque. Aliquam erat volutpat. Donec sem. Duis lacus. Mauris magna velit, feugiat vel, interdum sit amet, viverra vitae, leo. Fusce lectus arcu, lacinia tempor, sodales vitae, mollis nec, turpis. Donec et elit consequat ligula egestas aliquam. Aliquam a turpis. Phasellus quis magna. Pellentesque vehicula, ligula ac tristique sodales, odio arcu mollis lorem, a vestibulum quam ipsum ut orci. In accumsan malesuada nibh. Quisque accumsan, augue non egestas egestas, nibh arcu varius nunc, at ornare ipsum libero et eros.</a></p> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/testframeset.html b/Source/WebCore/manual-tests/resources/testframeset.html
new file mode 100644
index 0000000..4d907e4
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/testframeset.html
@@ -0,0 +1,4 @@
+<frameset rows="244,516" cols="*">
+ <frame src="testframe-link_text.html" >
+ <frame src="http://www.google.com">
+</frameset> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/resources/textarea-form-back-on-submit.html b/Source/WebCore/manual-tests/resources/textarea-form-back-on-submit.html
new file mode 100644
index 0000000..2348e2d
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/textarea-form-back-on-submit.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+<title>Form with a textarea that goes back on submit</title>
+</head>
+<body>
+<form id="form" method="get" action="data:text/html,<body onload='history.back()'></body>">
+ <p>
+ <textarea name="text" rows="3" cols="10" id="textarea">123</textarea><br />
+ <br />
+ <input type="submit" />
+ <input type="reset" />
+ </p>
+</form>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/touch-poster.png b/Source/WebCore/manual-tests/resources/touch-poster.png
new file mode 100644
index 0000000..781c85a
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/touch-poster.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/video-tab.html b/Source/WebCore/manual-tests/resources/video-tab.html
new file mode 100644
index 0000000..fec915f
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/video-tab.html
@@ -0,0 +1 @@
+<video src="http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov" controls autoplay>
diff --git a/Source/WebCore/manual-tests/resources/webkit-background.png b/Source/WebCore/manual-tests/resources/webkit-background.png
new file mode 100644
index 0000000..6213bf5
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/webkit-background.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/resources/will-go-back.html b/Source/WebCore/manual-tests/resources/will-go-back.html
new file mode 100644
index 0000000..5d09ba3
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/will-go-back.html
@@ -0,0 +1,11 @@
+<html>
+<script>
+function goBack() {
+ history.back();
+}
+</script>
+
+<body onload="if (!window.layoutTestController) goBack();">
+If you can go back using the history : test has succeed.
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/window-close-during-parsing-popup1.html b/Source/WebCore/manual-tests/resources/window-close-during-parsing-popup1.html
new file mode 100644
index 0000000..249cea8
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/window-close-during-parsing-popup1.html
@@ -0,0 +1,11 @@
+<html>
+<body onload="alert('FAIL: onload fired')" onunload="alert('FAIL: onunload fired')">
+<script>
+window.close();
+alert('PASS: same script tag after close');
+</script>
+<script>
+alert('FAIL: different script tag after close');
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/window-close-during-parsing-popup2.html b/Source/WebCore/manual-tests/resources/window-close-during-parsing-popup2.html
new file mode 100644
index 0000000..9d0e682
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/window-close-during-parsing-popup2.html
@@ -0,0 +1,7 @@
+<html>
+<body onload="window.print()">
+<script>
+window.close()
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/resources/write-after-open-popup.html b/Source/WebCore/manual-tests/resources/write-after-open-popup.html
new file mode 100644
index 0000000..ca73200
--- /dev/null
+++ b/Source/WebCore/manual-tests/resources/write-after-open-popup.html
@@ -0,0 +1,5 @@
+<html>
+ <body>
+ FAIL: document.write should clear this text.
+ </body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/right-click-crash.html b/Source/WebCore/manual-tests/right-click-crash.html
new file mode 100644
index 0000000..75e2ac2
--- /dev/null
+++ b/Source/WebCore/manual-tests/right-click-crash.html
@@ -0,0 +1,6 @@
+<html><head><script>
+document.onmousedown = function () { alert("Dismiss this and quickly right click again."); };
+</script></head><body>This page is intended to test crashes caused by repeated right clicks.
+To try to reproduce the bug, right click and then dismiss the dialog by hitting Return.
+Do it over and over again in quick succession. The test passes if you don't see a crash.
+See <a href="https://bugs.webkit.org/show_bug.cgi?id=24049">WebKit bug 24049</a> for details.</body></html>
diff --git a/Source/WebCore/manual-tests/screen-availLeft.html b/Source/WebCore/manual-tests/screen-availLeft.html
new file mode 100644
index 0000000..e8d9f39
--- /dev/null
+++ b/Source/WebCore/manual-tests/screen-availLeft.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script type="text/javascript">
+ function log(s)
+ {
+ var output = document.getElementById('output');
+ output.innerHTML += s + "<br>";
+ }
+
+ function doTest()
+ {
+ window.setInterval(function() {
+
+ var screen = window.screen;
+ log('screen availLeft: ' + screen.availLeft + ' availTop: ' + screen.availTop);
+
+ }, 1000);
+ }
+ window.addEventListener('load', doTest, false);
+ </script>
+</head>
+<body>
+ <p>On a two-monitor system, configure the menu bar to be on the right screen. Then drag this window between screens. When on the left screen, screen.availLeft should be negative.</p>
+ <div id="output"></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/scrollIntoView-horizontal.html b/Source/WebCore/manual-tests/scrollIntoView-horizontal.html
new file mode 100644
index 0000000..1cb909c
--- /dev/null
+++ b/Source/WebCore/manual-tests/scrollIntoView-horizontal.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID</b> <a href="rdar://problem/3471901">3471901</a> support scrollIntoView method for DOM elements (3474)</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Following the numbered steps on each button, click each button to scroll the next button into view.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Next button scrolls into view as specified.</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Next button does not scroll into view, or the button is scrolled to the wrong positon (top, bottom).
+</p>
+
+
+<input id="topleft" type="button" value="STEP 1: click to horizontally scroll STEP 2 into view" onclick="document.getElementById('topright').scrollIntoView(false);">
+
+<input id="topright" type="button" value="STEP 2: click to scroll STEP 3 to BOTTOM of view" style="position: absolute; left: 1200px;" onclick="document.getElementById('bottomleft').scrollIntoView(false);">
+
+<div style="height: 500px; width: 1200px; border: 1px solid;">here is a big empty div</div>
+
+<input id="bottomleft" type="button" value="STEP 3: click to scroll STEP 4 to TOP of view" style="position: absolute; top: 1200px;" onclick="document.getElementById('bottomright').scrollIntoView(true);">
+
+<input id="bottomright" type="button" value="STEP 4: click to scroll STEP 1 to TOP of view (then you're done)" style="position: absolute; top: 1200px; left: 1200px;" onclick="document.getElementById('topleft').scrollIntoView();">
+
+<div style="height: 500px; width: 1200px; border: 1px solid; position: absolute; top: 1300px;">here is a big empty div</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/scrollIntoView-vertical.html b/Source/WebCore/manual-tests/scrollIntoView-vertical.html
new file mode 100644
index 0000000..0d8525a
--- /dev/null
+++ b/Source/WebCore/manual-tests/scrollIntoView-vertical.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID</b> <a href="rdar://problem/3471901">3471901</a> support scrollIntoView method for DOM elements (3474)</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Following the numbered steps, click each button to scroll the specified colored box into view.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+A colored box should scroll into view after clicking each button. The text on the button specifies the expected position (top, bottom) of the box scrolled into view.</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Colored box does not scroll into view, or the box is scrolled to the wrong positon (top, bottom).
+</p>
+
+<div id="purplebox" style="background-color:purple; width: 300px; height: 100px;">
+ <input type="button" value="STEP 1: click to scroll yellow box to BOTTOM of view" onclick="document.getElementById('yellowbox').scrollIntoView(false);">
+ <input type="button" value="STEP 4: click to scroll orange box to TOP of view" onclick="document.getElementById('orangebox').scrollIntoView(true);">
+</div>
+
+<div style="height: 500px; width: 500px; border: 1px solid;">here is a big empty div</div>
+
+<div id="greenbox" style="background-color:green; width: 300px; height: 100px;">
+ <input type="button" value="STEP 3: click to scroll purple box to TOP of view" onclick="document.getElementById('purplebox').scrollIntoView();">
+</div>
+
+<div style="height: 500px; width: 500px; border: 1px solid;">here is a big empty div</div>
+
+<div id="yellowbox" style="background-color:yellow; width: 300px; height: 100px;">
+ <input type="button" value="STEP 2: click to scroll green box to TOP of view" onclick="document.getElementById('greenbox').scrollIntoView(true);">
+</div>
+
+<div style="height: 500px; width: 500px; border: 1px solid;">here is a big empty div</div>
+
+<div id="orangebox" style="background-color:orange; width: 300px; height: 100px;">
+ Test Complete
+</div>
+
+<div style="height: 500px; width: 500px; border: 1px solid;">here is a big empty div</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/scrollbar-hittest.html b/Source/WebCore/manual-tests/scrollbar-hittest.html
new file mode 100644
index 0000000..5ddef70
--- /dev/null
+++ b/Source/WebCore/manual-tests/scrollbar-hittest.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=5829">http://bugs.webkit.org/show_bug.cgi?id=5829</a> REGRESSION: cursor tracking and hit testing in scrollable block don't take borders into account</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+1. Scroll down by clicking in the empty space below the scroll thumb. <br>
+2. Scroll up by clicking in the empty space above the scroll thumb.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Scroll thumb will move back up to the top.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Scroll thumb will NOT move back up to the top.
+</p>
+
+ <div style="overflow: auto; height:300px; width:50px; border-bottom: solid red 50px; border-top: solid green 20px;">
+ <div style="height:400px;"></div>
+ </div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/scrollbar-hittest2.html b/Source/WebCore/manual-tests/scrollbar-hittest2.html
new file mode 100644
index 0000000..b44a762
--- /dev/null
+++ b/Source/WebCore/manual-tests/scrollbar-hittest2.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=6149">http://bugs.webkit.org/show_bug.cgi?id=6149</a> REGRESSION (WebCore-417.5): horizontal scrollbar in overflow with top border doesn't receive mouse events</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>TO TEST:</b> <br>
+Scroll right by clicking in the empty space to the right of the scroll thumb.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Scroll thumb will move to the right.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Scroll thumb will NOT move at all.
+<div id="target" style="width: 400px; overflow: auto; border-top: 20px solid grey; border-bottom: 10px solid blue;">
+ <div style="width: 600px; height: 20px; background: green;"></div>
+</div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/scrollbar-hover-active.html b/Source/WebCore/manual-tests/scrollbar-hover-active.html
new file mode 100644
index 0000000..e7646ca
--- /dev/null
+++ b/Source/WebCore/manual-tests/scrollbar-hover-active.html
@@ -0,0 +1,76 @@
+<head>
+<style>
+div::-webkit-scrollbar {
+ width:17px;
+ height:17px;
+}
+
+div::-webkit-scrollbar-button {
+ display: block;
+ width: 17px;
+ height: 17px;
+}
+
+div::-webkit-scrollbar-button:-webkit-decrement:-webkit-start {
+ background-color:lightblue;
+ border:2px solid black;
+}
+
+div::-webkit-scrollbar-button:-webkit-increment:-webkit-start {
+ background-color:lightgreen;
+ border:2px solid black;
+}
+
+div::-webkit-scrollbar-button:-webkit-decrement:-webkit-end {
+ background-color:orange;
+ border:2px solid black;
+}
+
+div::-webkit-scrollbar-button:-webkit-increment:-webkit-end {
+ background-color:brown;
+ border:2px solid black;
+}
+
+div::-webkit-scrollbar-button:hover {
+ background-color:black !important;
+}
+
+div::-webkit-scrollbar-thumb {
+ min-width:20px;
+ min-height:20px;
+ background-color: navy;
+ border:2px solid #cccccc;
+}
+
+div::-webkit-scrollbar-track {
+ background-color: pink;
+}
+
+div::-webkit-scrollbar-thumb:hover {
+ background-color: green;
+}
+
+div::-webkit-scrollbar-thumb:active {
+ border:3px dotted white;
+}
+
+div::-webkit-scrollbar-track:hover {
+ background-color: maroon;
+}
+
+</style>
+</head>
+<body>
+<div style="width:200px; height:200px; overflow-y:scroll; overflow-x:hidden">
+Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>
+<span style="white-space:nowrap">Hello world this is a long string and will not wrap.</span>
+Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>Hello<br>
+Hello<br>Hello<br>Hello<br>
+</div>
diff --git a/Source/WebCore/manual-tests/scrolling-nestedframesets.html b/Source/WebCore/manual-tests/scrolling-nestedframesets.html
new file mode 100644
index 0000000..d5f0509
--- /dev/null
+++ b/Source/WebCore/manual-tests/scrolling-nestedframesets.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4361048">4361048</a> Glendale Regression: Seed: scrolling with scrollwheel, trackpad doesn't work for nested framesets at gmail.com</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+<ol>
+ <li>Place your mouse cursor over the leftmost frame below.</li>
+ <li>Try to scroll the contents of the frame up and down my using your mouse's scrollwheel.</li>
+ <li>Repeat for the other two frames.</li>
+</ol>
+
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The contents of the frame each frame should scroll.</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The contents of each frame do NOT scroll.
+</p>
+
+<iframe width="800" height="500" src="resources/nestedframesets.html">
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/secure-keyboard-enabled-after-submit.html b/Source/WebCore/manual-tests/secure-keyboard-enabled-after-submit.html
new file mode 100644
index 0000000..c0cd5f9
--- /dev/null
+++ b/Source/WebCore/manual-tests/secure-keyboard-enabled-after-submit.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=13471">Bugzilla bug 13471</a> REGRESSION (r21045): Secure keyboard entry mode remains in effect after leaving a password field by submitting</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+1) Use System Preferences > International > Input Menu to enable a non-Roman
+input source, e.g. Arabic.<br>
+2) Click in the password field below.<br>
+3) Check that non-Roman input sources are disabled in the Input menu (the flag
+on the right side of the menu bar).<br>
+4) Press Return to submit the form.<br>
+5) Click in the text field.<br>
+6) Check that non-Roman input sources are enabled and selectable in the Input
+menu.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Non-Roman input sources will be disabled in step 3 but will be enabled again in step 6.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Non-Roman input sources will be disabled in step 6.
+</p>
+
+<form method="post" action="data:text/html,Can you enter non-Roman characters in this field now? %3cinput%3e">
+ Focus this password field and press Return: <input type="password">
+</form>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select-delete-item.html b/Source/WebCore/manual-tests/select-delete-item.html
new file mode 100644
index 0000000..43ca0c3
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-delete-item.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+ <title>RenderMenuList::itemStyle Select Element Crash</title>
+ <script>
+ function removeItem() {
+ var select = document.getElementById("dropDown");
+ select.removeChild(document.getElementsByTagName("option")[2]);
+ }
+ </script>
+</head>
+<body>
+ <select id="dropDown" onfocus="setTimeout('removeItem();', 2000);">
+ <option>Option 1</option>
+ <option>Option 2</option>
+ <option>Option 3</option>
+ </select>
+ <p>This is a test for bug <a href="http://webkit.org/b/34182">34182</a> Crash in WebKit!WebCore::RenderMenuList::itemStyle.
+ Once the select gets focus, in 2 seconds it will delete an item. This test passes
+ if you have the select open when it deletes an item, and doesn't crash.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select-element-type-select.html b/Source/WebCore/manual-tests/select-element-type-select.html
new file mode 100644
index 0000000..0a414f8
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-element-type-select.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+
+ <title>select test</title>
+</head>
+
+<body>
+Typing c should select c for you here:<br/>
+<select>
+<option value="1">aaaaa</option>
+<option value="2">bbbbb</option>
+<option value="3">ccccc</option>
+<option value="4">ddddd</option>
+<option value="5">eeeee</option>
+<option value="6">fffff</option>
+<option value="7">ggggg</option>
+</select>
+<br/><br/>
+And should here too:<br/>
+<select multiple size="3">
+<option value="1">aaaaa</option>
+<option value="2">bbbbb</option>
+<option value="3">cccc</option>
+<option value="4">ddddd</option>
+<option value="5">ßcccc</option>
+<option value="6">eeeee</option>
+<option value="7">fffff</option>
+<option value="8">zgggg</option>
+</select>
+</body>
+
+</html>
diff --git a/Source/WebCore/manual-tests/select-narrow-width.html b/Source/WebCore/manual-tests/select-narrow-width.html
new file mode 100644
index 0000000..60d2711
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-narrow-width.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+Select narrow width manual test.
+</head>
+
+<body>
+See bug:<a href="https://bugs.webkit.org/show_bug.cgi?id=25904">25904</a>.
+<p>
+This test ensures that items in a select control can be selected. There
+was a bug in Mac Chromium where select controls did not initialize their
+widths properly, and while a click on the control would display the popup,
+subsequent clicks on menu items were disregarded.
+<p>
+The bug was most easily reproduced with select controls containing many
+(more than 20) items that had narrow widths.
+<br>
+
+<select id="selectId">
+ <option>a</option>
+ <option>b</option>
+ <option>c</option>
+ <option>d</option>
+ <option>e</option>
+ <option>f</option>
+ <option>g</option>
+ <option>h</option>
+ <option>i</option>
+ <option>j</option>
+ <option>k</option>
+ <option>l</option>
+ <option>m</option>
+ <option>n</option>
+ <option>o</option>
+ <option>p</option>
+ <option>q</option>
+ <option>r</option>
+ <option>s</option>
+ <option>t</option>
+ <option>u</option>
+ <option>v</option>
+ <option>w</option>
+ <option>x</option>
+ <option>y</option>
+ <option>z</option>
+</select>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select-onchange-after-js.html b/Source/WebCore/manual-tests/select-onchange-after-js.html
new file mode 100644
index 0000000..4cdea0a
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-onchange-after-js.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<body>
+ <p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=11402">bug 11402</a> and
+ <a href="http://bugs.webkit.org/show_bug.cgi?id=12701">bug 12701</a>:
+ An onChange event should fire when the first item is not the default, and
+ after changing the value via JavaScript.</p>
+ <p>After following the steps below, both selects should display "SUCCESS".</p>
+
+ <form action="" method="post" name="areaform" id="areaform">
+ <select name="selectitem" onChange="onChange1(this)">
+ <option value="1">Please change this to another value</option>
+ <option value="2">(to this one)</option>
+ </select>
+ </form>
+ <form action="" method="post" name="areaform2" id="areaform2">
+ <select name="selectitem2" onChange="onChange2(this)">
+ <option value="1">(to this one)</option>
+ <option value="2" selected>Please change this to another value</option>
+ </select>
+ </form>
+
+ <script>
+ function onChange1(sel) {
+ if (sel.secondTry) {
+ sel.options[1].text='SUCCESS';
+ } else {
+ sel.options[0].text='Please change this to another value once again';
+ sel.value = '1';
+ sel.secondTry = 1;
+ }
+ }
+
+ function onChange2(sel) {
+ if (sel.secondTry) {
+ sel.options[0].text='SUCCESS';
+ } else {
+ sel.options[1].text='Please change this to another value once again';
+ document.forms.areaform2.selectitem2.options[1].selected = true;
+ sel.secondTry = 1;
+ }
+ }
+ </script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select-option-in-onload.html b/Source/WebCore/manual-tests/select-option-in-onload.html
new file mode 100644
index 0000000..3a4d8a6
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-option-in-onload.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
+<html>
+ <head>
+ <title>Programmatically selected popup item not shown</title>
+ <script type="text/javascript">
+ function testMyPopup() {
+ var myPopup = document.getElementById('testPopup');
+ for (var i = 0; i < myPopup.options.length; i++) {
+ if (myPopup.options[i].value == "2")
+ myPopup.options[i].selected = true;
+ }
+ }
+ </script>
+ </head>
+ <!--body-->
+ <body onload="testMyPopup();">
+ <p>The popup below has the item "FAIL" selected by default in the html, but a javascript function
+ triggered from the body's onload changed it to "PASS" (assuming you saw an alert telling you so).</p>
+ <p>Problem: In old versions of WebKit the change was not visible until you click on the popup.</p>
+ <form action="get">
+ <select id="testPopup">
+ <option value="0"></option>
+ <option value="1">One</option>
+ <option value="2">PASS</option>
+ <option value="3" selected="selected">FAIL</option>
+ </select>
+ </form>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/select-popup-on-spacebar.html b/Source/WebCore/manual-tests/select-popup-on-spacebar.html
new file mode 100644
index 0000000..7503eca
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-popup-on-spacebar.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+</head>
+<body onload="document.getElementById('selectId').focus()">
+<p><b>BUG ID:<a href="https://bugs.webkit.org/show_bug.cgi?id=18363">18363</a>.</p>
+<p id="description">
+This test ensures that pressing spacebar on Mac, Gtk and Chromium ports or pressing
+return in Gtk and Chromium ports will popup the select control when focused.
+</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+Press <em>spacebar</em> or the <em>return</em> key (Gtk only).
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Select pops up the menu list</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Select does not popup a menu list - nothing happens.</p>
+
+
+<select id="selectId">
+ <option>Select</option>
+ <option>Item 1</option>
+</select>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select-scroll.html b/Source/WebCore/manual-tests/select-scroll.html
new file mode 100644
index 0000000..95b8a5a
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-scroll.html
@@ -0,0 +1,34 @@
+<p>
+When you click the following &lt;select&gt;, you should see a scrollbar,
+and should be able to scroll down to see "Z" as the last option.
+See <a href="https://bugs.webkit.org/show_bug.cgi?id=49306">Bug 49306</a> for detail.
+
+<p>
+<select>
+ <option>A</option>
+ <option>B</option>
+ <option>C</option>
+ <option>D</option>
+ <option>E</option>
+ <option>F</option>
+ <option>G</option>
+ <option>H</option>
+ <option>I</option>
+ <option>J</option>
+ <option>K</option>
+ <option>L</option>
+ <option>M</option>
+ <option>N</option>
+ <option>O</option>
+ <option>P</option>
+ <option>Q</option>
+ <option>R</option>
+ <option>S</option>
+ <option>T</option>
+ <option>U</option>
+ <option>V</option>
+ <option>W</option>
+ <option>X</option>
+ <option>Y</option>
+ <option>Z</option>
+</select>
diff --git a/Source/WebCore/manual-tests/select-webkit-appearance-off-narrow-select.html b/Source/WebCore/manual-tests/select-webkit-appearance-off-narrow-select.html
new file mode 100644
index 0000000..34e4681
--- /dev/null
+++ b/Source/WebCore/manual-tests/select-webkit-appearance-off-narrow-select.html
@@ -0,0 +1,49 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <title>Padding on select with webkit-appearance: off</title>
+ <style type="text/css">
+ #webkit-appearance-none {
+ -webkit-appearance: none;
+ border: 1px solid black;
+ width: 15px;
+ padding-left: 5px;
+ padding-right: 5px;
+ }
+
+ #narrow-with-border {
+ border: 1px solid black;
+ width: 40px;
+ }
+ </style>
+</head>
+
+<body>
+ <p>This is a manual test for <a href="https://bugs.webkit.org/show_bug.cgi?id=33235">Padding in popup
+ menu gets lost with styled select in Windows</a></p>
+ <p>To open the selects, click inside the select boxes below.</p>
+
+ <p>The options in this selects should have padding on both the left and the right, the edges of
+ the text should not be pressed against the edges of the opened select.</p>
+ <select id="webkit-appearance-none">
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ <hr />
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ </select>
+
+ <p>The options in this select should not have too much padding on the right</p>
+ <select id="narrow-with-border">
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ <hr />
+ <option href="#">Do Action ABCDEFG</option>
+ <option href="#">Do Action ABCDEFG</option>
+ </select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select_alignment.html b/Source/WebCore/manual-tests/select_alignment.html
new file mode 100644
index 0000000..7c1bc0e
--- /dev/null
+++ b/Source/WebCore/manual-tests/select_alignment.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+<title>Test drop-down item's alignment in <select>/<option></title>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+<p>
+select drop-down items' alignment should be determined by the directionality of
+&lt;select&gt; tag.
+<p>
+The drop-down items in the following &lt;select&gt; should be left-aligned.
+<br>
+<select>
+<option>abc def</option>
+<option>שנב גקכ</option>
+<option dir="rtl">abc שנב def</option>
+<option dir="ltr">שנב abc גקכ</option>
+<option dir="rtl">hi!</option>
+<option dir="ltr">hi!</option>
+</select>
+<br>
+The drop-down items in the second &lt;select&gt; should be right-aligned.
+<p>
+<select dir="rtl">
+<option>abc def</option>
+<option>שנב גקכ</option>
+<option dir="rtl">abc שנב def</option>
+<option dir="ltr">שנב abc גקכ</option>
+<option dir="rtl">hi!</option>
+<option dir="ltr">hi!</option>
+</select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select_dropdown_box_alignment.html b/Source/WebCore/manual-tests/select_dropdown_box_alignment.html
new file mode 100644
index 0000000..07035b7
--- /dev/null
+++ b/Source/WebCore/manual-tests/select_dropdown_box_alignment.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+<title>Test <select> drop-down box's alignment</title>
+<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
+</head>
+<body>
+<p>
+For RTL, select drop-down box's should be right aligned with the &lt;select&gt;
+element and expands to left instead of right.
+<p>
+The drop-down box in the following &lt;select&gt; should be left-aligned and expand to right.
+<br>
+<select style="width:100px">
+<option>Arabic</option>
+<option>Hebrew</option>
+<option>English (United States)</option>
+<option>Chinese (Simplified Chiense)</option>
+</select>
+<br>
+The drop-down box in the second &lt;select&gt; should be right-aligned and expand to left.
+<p>
+<select dir="rtl" style="width:100px">
+<option>Arabic</option>
+<option>Hebrew</option>
+<option>English (United States)</option>
+<option>Chinese (Simplified Chiense)</option>
+</select>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/select_hr.html b/Source/WebCore/manual-tests/select_hr.html
new file mode 100644
index 0000000..957a995
--- /dev/null
+++ b/Source/WebCore/manual-tests/select_hr.html
@@ -0,0 +1,234 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<script>
+ function getSelectInfo(myselect, mydiv) {
+ var s = document.getElementById(myselect);
+ var selectLength = s.length;
+ var optionCollectionLength = s.options.length;
+ var selectedInd = s.selectedIndex;
+ var opt = s.options[selectedInd];
+ var optText = "";
+
+ if (opt) {
+ optText = opt.innerHTML;
+ }
+
+ document.getElementById(mydiv).innerHTML = "Select length: " + selectLength + "<br>Option collection length: " + optionCollectionLength + "<br>Selected index: " + selectedInd + "<br>Selected option: " + optText;
+ }
+
+ function getAllInfo(x) {
+ for (i = 1; i < x; i++) {
+ var s = "s" + i;
+ var d = "d" + i;
+
+ getSelectInfo(s, d);
+ }
+ }
+</script>
+
+
+</head>
+<body onload="getAllInfo(12)">
+<p><b>BUG ID:</b> <a href="rdar://problem/4229189">4229189</a> add a way to get a separator into a select element</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Please describe the steps required to test this bug here.
+</p>
+
+
+These tests make sure that adding an hr element in a select works properly.
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>This should be a disabled popup menu, since the hr is not selectable.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b> </p>
+<select id = "s1">
+<hr>
+</select>
+<div id="d1"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: separator, option, separator
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s2">
+<hr>
+<option>opt 1</option>
+<hr>
+</select>
+<div id="d2"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: option, separator, option
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s3">
+<option>opt 1</option>
+<hr>
+<option>opt 2</option>
+</select>
+<div id="d3"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: option, four separators, two options, separator, option.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s4">
+<option>opt 1</option>
+<hr>
+<hr>
+<hr>
+<hr>
+<option>opt 2</option>
+<option>opt 3</option>
+<hr>
+<option>opt 4</option>
+</select>
+<div id="d4"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: group label, option, separator (incl. in group).
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s5">
+<optgroup label="Group 1">
+<option>opt 1</option>
+<hr>
+</optgroup>
+</select>
+<div id="d5"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: separator, group label, option.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s6">
+<hr>
+<optgroup label="Group 1">
+<option>opt 1</option>
+</optgroup>
+</select>
+<div id="d6"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: group label, option, separator, option, separator, option, two separators, (end of group), one option.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s7">
+<optgroup label="Group 1">
+<option>opt 1</option>
+<hr>
+<option>opt 2</option>
+<hr>
+<option>opt 3</option>
+<hr>
+<hr>
+</optgroup>
+<option>opt 4</option>
+</select>
+<div id="d7"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a popup menu with the following items: group label, one option two separators, (end of group), separator, group label, separator, two options, separator, (end of group), option.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s8">
+<optgroup label="Group 1">
+<option>opt 1</option>
+<hr>
+<hr>
+</optgroup>
+<hr>
+<optgroup label="Group 2">
+<hr>
+<option>opt 2</option>
+<option>opt 3</option>
+<hr>
+</optgroup>
+<option>opt 4</option>
+</select>
+<div id="d8"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+A disabled popup menu - since the optgroup and the hr are not selectable.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+</p>
+<select id = "s9">
+<optgroup label="Group 1">
+<hr>
+</optgroup>
+</select>
+<div id="d9"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a list box with the following items: 4 options.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+You should not see any separators in the list box.</p>
+<br><select id = "s10" multiple>
+<option value="test">opt 1</option>
+<hr>
+<hr>
+<hr>
+<hr>
+<option>opt 2</option>
+<option>opt 3</option>
+<hr>
+<option>opt 4</option>
+</select>
+<div id="d10"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see a list box with the following items: one option, group label, 3 options.
+</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+You should not see any separators in the list box.</p>
+<select id = "s11" multiple>
+<option value="test">opt 1</option>
+<hr>
+<hr>
+<optgroup label="Group 1">
+<hr>
+<hr>
+<option>opt 2</option>
+<option>opt 3</option>
+<hr>
+<option>opt 4</option>
+</optgroup>
+</select>
+<div id="d11"></div>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+For each of these list boxes, when you change the selection in JavaScript to index 1, the second option should get highlighted</p>
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+"opt 2" does not get highlighted after clicking the button.</p>
+
+<select id="s12" multiple>
+<option id="o3">opt 1</option>
+<hr>
+<option id="o4">opt 2</option>
+</select>
+<input type="button" value="Change selection to 'opt 2'" onclick="document.getElementById('s12').selectedIndex = 1;"></input>
+
+<br><select id="s13" multiple>
+<option id="o5">opt 1</option>
+<hr>
+<optgroup label="group">
+<option id="o6">opt 2</option>
+</optgroup>
+</select>
+<input type="button" value="Change selection to 'opt 2'" onclick="document.getElementById('s13').selectedIndex = 1;"></input>
+
+<body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/selection-drag-crash.html b/Source/WebCore/manual-tests/selection-drag-crash.html
new file mode 100644
index 0000000..42fd740
--- /dev/null
+++ b/Source/WebCore/manual-tests/selection-drag-crash.html
@@ -0,0 +1,14 @@
+<html>
+<head>
+<script>
+function selectText() {
+ window.getSelection().selectAllChildren(document.body);
+}
+</script>
+</head>
+<body onload="selectText()">
+<p>
+Drag the selected text. It shouldn't crash, though it used to on Chromium Mac since createDragImageForSelection() didn't properly use the return value from dissolveDragImageToFraction(), which resulted in a race condition for the drag image's refcount. This issue can't be tested in an automated manner, due to the fact that the race condition is hard to trigger deterministically and that test_shell/DRT simply don't use the (potentially invalid) image parameter.
+</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/show-hide-object.html b/Source/WebCore/manual-tests/show-hide-object.html
new file mode 100644
index 0000000..88bfbc8
--- /dev/null
+++ b/Source/WebCore/manual-tests/show-hide-object.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/3572507">3572507</a> Flash in div with display:none style will not redraw when style changed to display:block (3479)</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+1. Verify that there is a Flash animation playing below.<br>
+2. Click "Hide Flash".<br>
+3. Click "Show Flash".<br>
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The Flash movie hides when "Hide Flash" is clicked, and shows again when "Show Flash" is clicked.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The Flash movie hides when "Hide Flash" is clicked, but does not show again when "Show Flash" is clicked. Clicking on "Hide Flash" and then "Show Flash" again will show the movie.
+</p>
+
+<script language="JavaScript">
+
+ // 2 html tabs for multiple flash/java
+ var selected = "tab1";
+
+ function tabClick(whichTab) {
+ selected = whichTab;
+
+ if (whichTab == "tab1") {
+ document.getElementById('tab1').style.display = "block";
+ document.getElementById('tab2').style.display = "none";
+ }
+ else if (whichTab == "tab2") {
+ document.getElementById('tab2').style.display = "block";
+ document.getElementById('tab1').style.display = "none";
+ }
+ }
+</script>
+
+<div>
+
+ <input type=button value="Hide Flash" onClick="tabClick('tab2')"><input type=button value="Show Flash" onClick="tabClick('tab1')">
+
+
+ <div id="tab2" style="display: none">
+ Flash hidden.
+ </div>
+
+ <div id="tab1">
+ <object id="scopeFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="200" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0">
+ <param name="movie" value="resources/spinbox.swf">
+ <param name="quality" value="high">
+ <comment>
+ <embed src="resources/spinbox.swf" width="300" height="200" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
+ </embed>
+ </comment>
+ </object>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/show-modal-dialog-test.html b/Source/WebCore/manual-tests/show-modal-dialog-test.html
new file mode 100644
index 0000000..ec39ee4
--- /dev/null
+++ b/Source/WebCore/manual-tests/show-modal-dialog-test.html
@@ -0,0 +1,15 @@
+<script>
+function showModal() {
+ document.form.fromModal.value =
+ showModalDialog("modal-dialog.html",
+ document.form.toModal.value,
+ "dialogHeight:280px,dialogWidth:400px");
+}
+</script>
+<form name="form">
+<p>Type text here to be sent to the modal window and press the button:
+<input name="toModal" value="from main window">
+<input type="button" value="Show Modal" onClick="showModal()"></p>
+<hy>
+<p>Text will appear here from the modal window: <input name="fromModal">
+</form>
diff --git a/Source/WebCore/manual-tests/showModalDialog-returnValue.html b/Source/WebCore/manual-tests/showModalDialog-returnValue.html
new file mode 100644
index 0000000..fbc3ee3
--- /dev/null
+++ b/Source/WebCore/manual-tests/showModalDialog-returnValue.html
@@ -0,0 +1,13 @@
+This test makes sure we don't crash when storing the return value from showModalDialog. Popup blocking needs to be disabled for this test to run.<br>
+<script>
+if (showModalDialog("data:text/html,<script>returnValue={value:'PASS'}; close()</"+"script>").value == "PASS")
+ document.write("<span style='color:green'>Test passed.<br>");
+else
+ document.write("<span style='color:red'>Test failed due to incorrect result.<br>");
+value = showModalDialog("data:text/html,<script>close()</"+"script>");
+if (!value)
+ document.write("<span style='color:green'>Test passed.<br>");
+else
+ document.write("<span style='color:red'>Test failed due to incorrect result.<br>");
+
+</script> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/simple-image-compositing.html b/Source/WebCore/manual-tests/simple-image-compositing.html
new file mode 100644
index 0000000..e44ffed
--- /dev/null
+++ b/Source/WebCore/manual-tests/simple-image-compositing.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Checking for simple image layer optimisation</title>
+ <style type="text/css" media="screen">
+ img {
+ float: left;
+ width: 150px;
+ height: 150px;
+ }
+ p {
+ clear: both;
+ margin: 1em 2em;
+ height: 180px;
+ }
+ img {
+ -webkit-transform: rotate3d(0, 0, 1, 0);
+ }
+ </style>
+</head>
+<body>
+
+ <h1>Image optimisation in layers</h1>
+
+ <p style="height: auto">
+ In order to run this test you should enable the debugging options that indicate
+ what type of compositing layer is being used.
+ </p>
+
+<pre>
+defaults write com.apple.Safari WebCoreLayerRepaintCounter -bool yes
+defaults write com.apple.Safari WebCoreLayerBorders -bool yes
+</pre>
+
+ <p style="height: auto">
+ Directly composited image layers will have a yellow border and no repaint counter.
+ </p>
+
+ <p>
+ <img src="resources/simple_image.png">
+ Basic image - no style - can be directly composited
+ </p>
+
+ <p>
+ <img src="resources/simple_image.png" style="border: 5px solid blue;">
+ 5px blue border - can NOT be directly composited
+ </p>
+
+ <p>
+ <img src="resources/simple_image.png" style="margin: 10px 20px;">
+ margin - can NOT be directly composited
+ </p>
+
+ <p>
+ <img src="resources/simple_image.png" style="background-color: grey;">
+ solid background - can be directly composited
+ </p>
+
+ <p>
+ <img src="resources/simple_image.png" style="background: orange url(resources/simple_image.png) -50px -50px;">
+ background image - can NOT be directly composited
+ </p>
+
+ <p>
+ <img src="resources/simple_image.png" style="-webkit-transform: rotate3d(0, 0, 1, 10deg);">
+ rotated but otherwise no style - can be directly composited
+ </p>
+
+
+
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/slider-thumb-tracking.html b/Source/WebCore/manual-tests/slider-thumb-tracking.html
new file mode 100644
index 0000000..5a852c8
--- /dev/null
+++ b/Source/WebCore/manual-tests/slider-thumb-tracking.html
@@ -0,0 +1,28 @@
+<html>
+<head>
+ <title></title>
+ <script type="text/javascript">
+ function test()
+ {
+ var slider = document.getElementById("slider");
+ var x = slider.offsetWidth * 3 / 4;
+ var y = slider.offsetHeight / 2;
+
+ var event = document.createEvent("MouseEvent");
+ event.initMouseEvent("mousedown", true, true, document.defaultView, 1, 0, 0, x, y, false, false, false, false, 0, document);
+ slider.dispatchEvent(event);
+ }
+ </script>
+</head>
+<body onload="test()">
+ <p>
+ Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=11621">http://bugs.webkit.org/show_bug.cgi?id=11621</a>
+ REGRESSION (Native slider): slider thumb not updated when the mouse is dragged/released out of range</i>.
+ </p>
+ <p>
+ The slider thumbs should be at the same horizontal position.
+ </p>
+ <input type="range" id="slider" value="30">
+ <br>
+ <input type="range" value="70">
+</body>
diff --git a/Source/WebCore/manual-tests/spatial-navigation/frameset.html b/Source/WebCore/manual-tests/spatial-navigation/frameset.html
new file mode 100644
index 0000000..fe82e4a
--- /dev/null
+++ b/Source/WebCore/manual-tests/spatial-navigation/frameset.html
@@ -0,0 +1,7 @@
+<html>
+ <frameset border=1 rows="10%,10%,*">
+ <frame src="links.html"/>
+ <frame src="links.html"/>
+ <frame src="spatial-navigation-test-cases.html"/>
+ </frameset><br><br>
+</html>
diff --git a/Source/WebCore/manual-tests/spatial-navigation/links.html b/Source/WebCore/manual-tests/spatial-navigation/links.html
new file mode 100644
index 0000000..18cfd62
--- /dev/null
+++ b/Source/WebCore/manual-tests/spatial-navigation/links.html
@@ -0,0 +1,8 @@
+<html>
+ <body>
+ <p>
+ <a href="a">x</a>
+ <a href="a">y</a>
+ <a href="a">z</a>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/spatial-navigation/spatial-navigation-test-cases.html b/Source/WebCore/manual-tests/spatial-navigation/spatial-navigation-test-cases.html
new file mode 100644
index 0000000..bf00c23
--- /dev/null
+++ b/Source/WebCore/manual-tests/spatial-navigation/spatial-navigation-test-cases.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+ <title>Spatial Navigation Test Cases</title>
+ </head>
+ <body>
+
+ <div style="margin-left: 40px; text-align: center;">
+ <h1 style="text-align: left;">Spatial Navigation Fun</h1>
+ <h2 style="text-align: left;">3x3 Centered Table Test</h2>
+ </div>
+
+ <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ <td style="vertical-align: top; text-align: center;"><a href="a">test</a></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div style="margin-left: 40px; text-align: left;"><br>
+
+ <div style="text-align: left;">
+ <h2>Vertical Sine Test</h2><br>
+ </div>
+
+ <div style="text-align: left;">
+ <a href="a">test<br></a>
+ </div>
+
+ <div style="margin-left: 40px;">
+ <a href="a">test<br></a>
+ </div>
+
+ <div style="margin-left: 80px;">
+ <a href="a">test<br></a>
+ </div>
+
+ <div style="margin-left: 40px;">
+ <a href="a">test<br></a>
+ </div>
+
+ <a href="a">test<br></a>
+
+ <div style="margin-left: 40px;">
+ <a href="a">test<br></a>
+ </div>
+
+ <div style="margin-left: 80px;">
+ <a href="a">test<br></a>
+ </div>
+
+ <div style="margin-left: 40px;">
+ <a href="a">test<br></a>
+ </div>
+
+ <a href="a">test<br></a>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <a href="a">test<br></a>
+
+ <h2>Increasing sentence length</h2>
+ <a href="a">H</a><br>
+ <a href="p">Ho<br></a>
+ <a href="p">How<br></a>
+ <a href="p">How <br></a>
+ <a href="p">How N</a><br>
+ <a href="p">How No</a><br>
+ <a href="p">How Now</a><br>
+ <a href="p">How Now </a><br>
+ <a href="p">How Now B</a><br>
+ <a href="p">How Now Br</a><br>
+ <a href="p">How Now Bro</a><br>
+ <a href="p">How Now Brow</a><br>
+ <a href="p">How Now Brown</a><br>
+ <a href="p">How Now Brown </a><br>
+ <a href="p">How Now Brown C</a><br>
+ <a href="p">How Now Brown Co</a><br>
+ <a href="p">How Now Brown Cow</a><br>
+ <br>
+
+ <h2>Split sentence<br></h2><br>
+ <a href="p">H</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<a href="p">ow Now Brown Cow</a><br>
+ <a href="p">Ho</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <a href="p">w Now Brown Cow</a><br>
+ <a href="p">How</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="p">Now Brown Cow</a><br>
+ <a href="p">How N</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; <a href="p">ow Brown Cow</a><br>
+ <a href="p">How No</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">w Brown Cow</a><br>
+ <a href="p">How Now </a>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">Brown Cow</a><br>
+ <a href="p">How Now B</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">rown Cow</a><br>
+ <a href="p">How Now Br</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">own Cow</a><br>
+ <a href="p">How Now Bro</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">wn Cow</a><br>
+ <a href="p">How Now Brow</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="p">n Cow</a><br>
+ <a href="p">How Now Brown</a> &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; <a href="p">Cow</a><br>
+ <a href="p">How Now Brown C</a> &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">ow</a><br>
+ <a href="p">How Now Brown Co</a> &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <a href="p">w</a><br>
+ <a href="p">How Now Brown Cow</a><br><br>
+
+ <h2>Line Wrap Test</h2><br>
+
+ <table style="text-align: left; width: 393px; height: 72px;" border="1" cellpadding="2" cellspacing="2">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">
+ <span class="huge">
+ <a href="a">Which of the following constanst do you like the most, one is g, one is pi, and the other is e. </a><br>
+ </span>
+ </td>
+
+ <td style="vertical-align: top;">
+ <a href="a">3.14</a><br>
+ <a href="a">2.71</a><br>
+ <a href="a">6.67</a><br>
+ </td>
+ </tr>
+ </tbody>
+ </table><br>
+
+ <h2>Javascript Focus/Blur Test</h2>
+ When going to any link from the following link, you should see a dialog.<br><br>
+ <a href="a" onblur='alert("onBlurt")'>Test</a><br><br>
+
+ <h2>IFrames</h2><br>
+ <iframe src="links.html"></iframe><br><br><br>
+
+ <h2>DIVs</h2><br>
+ <div id=v>
+ <a href="a">a</a>
+ <div id="Div1">
+ <a href="a">b</a>
+ </div>
+ <a href="a">c</a>
+ </div><br><br>
+ <a href="last">last</a>
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/stale-currentEvent.html b/Source/WebCore/manual-tests/stale-currentEvent.html
new file mode 100644
index 0000000..e9dfcfc
--- /dev/null
+++ b/Source/WebCore/manual-tests/stale-currentEvent.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+ <script type="text/javascript">
+ var inner_win;
+
+ function open_inner()
+ {
+ var src = 'data:text/html,<title>Pop up</title><input type="button" value="Close" onclick="opener.closeChild()">';
+ var tp = document.getElementById("theparent");
+ inner_win = window.open(src, 'inner', 'width=200, height=200, left=' + (screenLeft + tp.offsetLeft) + ', top=' + (screenTop + outerHeight - innerHeight + tp.offsetTop));
+ }
+
+ function removeHoverNode()
+ {
+ var tp = document.getElementById("theparent");
+ tp.parentNode.removeChild(tp);
+ setTimeout(reportSuccess, 500);
+ }
+
+ function reportSuccess()
+ {
+ document.body.appendChild(document.createTextNode("SUCCESS"));
+ }
+
+ function closeChild()
+ {
+ inner_win.close();
+ document.body.offsetTop;
+ setTimeout(removeHoverNode, 100);
+ }
+ </script>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/5095977">5095997</a> (<a href="http://bugs.webkit.org/show_bug.cgi?id=13218">13218</a>) Reproducible crash after call to window.close()</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b><br>
+ 1. Click the Open button below. A pop up window will open.<br>
+ 2. In the pop up window, click the Close button, being careful not to
+ move the mouse during and shortly after clicking.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+ The black square will be replaced by the word &ldquo;SUCCESS&rdquo; and Safari will not crash.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+ Safari will crash (the word &ldquo;SUCCESS&rdquo; may appear before the crash).
+</p>
+ <div id='theparent'>
+ <input type="button" value="Open" onclick="open_inner()">
+ <div style="background: black; width: 200px; height:200px">
+ </div>
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/stale-scrollbar-client-crash.html b/Source/WebCore/manual-tests/stale-scrollbar-client-crash.html
new file mode 100644
index 0000000..037b21c
--- /dev/null
+++ b/Source/WebCore/manual-tests/stale-scrollbar-client-crash.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/5523503">rdar://problem/5523503</a> Safari crashes clicking scroll bar in FaceBook 'Trips'</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Drag the scroll thumb in each of the vertical scrollbars below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Each scrollbar will disappear when clicked, along with the box containing it, but the browser will not crash as you continue to drag.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The scrollbar will disappear and Safari will crash as you continue dragging.
+</p>
+
+<div style="height: 120px;">
+ <div id="overflow" style="overflow: auto; height: 100px; width: 100px; background-color: lightblue;">
+ <div style="height: 200px;"></div>
+ </div>
+</div>
+<div>
+ <select multiple="true" id="listbox" style="height: 100px; width: 100px;">
+ <option>One</option>
+ <option>Two</option>
+ <option>Three</option>
+ <option>Four</option>
+ <option>Five</option>
+ <option>Six</option>
+ <option>Seven</option>
+ <option>Eight</option>
+ <option>Nine</option>
+ <option>Ten</option>
+ </select>
+</div>
+<script>
+ var overflow = document.getElementById("overflow");
+ var listbox = document.getElementById("listbox");
+
+ function mousedown(event)
+ {
+ if (event.target.id)
+ setTimeout(event.target.id + '.style.display = "none"', 0);
+ }
+
+ overflow.addEventListener("mousedown", mousedown, false);
+ listbox.addEventListener("mousedown", mousedown, false);
+</script>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/style-keypress-events.html b/Source/WebCore/manual-tests/style-keypress-events.html
new file mode 100644
index 0000000..b0d2770
--- /dev/null
+++ b/Source/WebCore/manual-tests/style-keypress-events.html
@@ -0,0 +1,38 @@
+<body onload="setup()">
+<p>cmd+b and cmd+i should generate a keydown event in contentEditable fields. Also, calling
+preventDefault() in the keydown event should cancel the text styling.</p>
+
+<div contentEditable id="test" style="border: 1px solid; padding: 4px;">
+This is some sample text.<br><br><br><br>
+</div>
+<div>
+<input type="checkbox" id="disable"><label for="disable">preventDefault() in keydown</label>
+</div>
+<div id="log"></div>
+
+<script>
+function setup()
+{
+ var test = document.getElementById("test");
+ test.addEventListener("keydown", keydown, false);
+
+ var selection = window.getSelection();
+ selection.setPosition(test, 0);
+ selection.modify("extend", "forward", "sentence");
+ test.focus();
+}
+
+function log(msg)
+{
+ var log = document.getElementById("log");
+ log.innerHTML += "<br>" + msg;
+}
+
+function keydown(event)
+{
+ log("keydown");
+ if (document.getElementById("disable").checked)
+ event.preventDefault();
+}
+</script>
+</body>
diff --git a/Source/WebCore/manual-tests/submit-form-with-target-twice.html b/Source/WebCore/manual-tests/submit-form-with-target-twice.html
new file mode 100644
index 0000000..9b10410
--- /dev/null
+++ b/Source/WebCore/manual-tests/submit-form-with-target-twice.html
@@ -0,0 +1,15 @@
+<html>
+<script>
+function runTest() {
+ var form = document.getElementById('f');
+
+ form.submit();
+ form.submit();
+}
+</script>
+<form id="f" target="foo"><input></form>
+<p>This tests that calling form.submit() twice in a row from JavaScript, on a form with a custom target and with at least one text field does not cause an assertion in a debug build of Safari.
+</p>
+<p>To test this, click the button below. A new window should open up and Safari should not assert.</p>
+<button onclick="runTest()">Click Here</button>
+</html>
diff --git a/Source/WebCore/manual-tests/subview-click-assertion.html b/Source/WebCore/manual-tests/subview-click-assertion.html
new file mode 100644
index 0000000..121ee2f
--- /dev/null
+++ b/Source/WebCore/manual-tests/subview-click-assertion.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=9984">Bugzilla bug 9984</a> ASSERTION FAILURE: _private->mouseDownEvent != nil (WebKit/WebView/WebHTMLView.m:4863 -[WebHTMLView(WebInternal) _delegateDragSourceActionMask])</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Open this test in a new Safari window. In the new window, click once on the text &ldquo;Click me&rdquo;. Do not click
+anywhere else in the window before clicking the text.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The text will be deselected.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+An assertion failure will occur.
+</p>
+
+<iframe id="frame"></iframe>
+<script>
+ var win = window['frame'];
+ var doc = win.document;
+ doc.write("<p id='target'>Click me</p>");
+ var target = doc.getElementById('target');
+ win.getSelection().setBaseAndExtent(target, 0, target, 1);
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/svg-animated-gifs.svg b/Source/WebCore/manual-tests/svg-animated-gifs.svg
new file mode 100644
index 0000000..c661d41
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-animated-gifs.svg
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+ <text x="0" y="15">There should be only one animated image here, rotated, and not clipped:</text>
+ <g transform="rotate(45,100,250)" >
+ <rect fill="yellow" stroke="#000000" stroke-width="2" x="60" y="60" width="170" height="170" />
+ <foreignObject x="70" y="70" width="150" height="150" >
+ <xhtml:img src="resources/3dolph.gif" width="150" height="150" />
+ </foreignObject>
+ </g>
+ <text x="0" y="400">The animated image below should look like the one above:</text>
+ <g transform="translate(0, 400) rotate(45,100,250)" >
+ <rect fill="yellow" stroke="#000000" stroke-width="2" x="60" y="60" width="170" height="170" />
+ <image xlink:href="resources/3dolph.gif" x="60" y="60" width="170" height="170" />
+ </g>
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-animation-parseValues.svg b/Source/WebCore/manual-tests/svg-animation-parseValues.svg
new file mode 100644
index 0000000..391916c
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-animation-parseValues.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="tiny" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360">
+ <text text-anchor="middle" x="240" y="15" font-size="16">Test for WebKit bug 12565</text>
+ <text text-anchor="middle" x="240" y="35" font-size="16">(parsing of animateTransform values).</text>
+ <text text-anchor="middle" x="240" y="55" font-size="16">You should see a green square and no red.</text>
+ <g transform="translate(60,90)">
+ <rect fill="red" x="-19" y="-19" width="38" height="38"/>
+ <g fill="green">
+ <animateTransform attributeName="transform" type="rotate" values="450;450;" dur="1s"/>
+ <rect x="-20" y="-20" width="40" height="40"/>
+ </g>
+ </g>
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-crash-hovering-use.svg b/Source/WebCore/manual-tests/svg-crash-hovering-use.svg
new file mode 100644
index 0000000..029b23b
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-crash-hovering-use.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg id="svg" viewBox="0 0 100 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+ <rect id="rect" width="60" height="10"/>
+</defs>
+
+<text x="30" y="30" transform="scale(0.2 0.2)">Hover over the rectangle - it should not crash</text>
+<use id="use" x="20" y="10" xlink:href="#rect" />
+
+<script>
+<![CDATA[
+ var svg = document.getElementById("svg");
+ var use = document.getElementById("use");
+
+ function addUseElement() {
+ svg.appendChild(use, true);
+ setTimeout(removeUseElement, 50);
+ }
+
+ function removeUseElement() {
+ use.parentElement.removeChild(use);
+ setTimeout(addUseElement, 50);
+ }
+
+ document.addEventListener("DOMNodeInserted", function() {}, true);
+ removeUseElement();
+]]>
+</script>
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-cursor-changes.svg b/Source/WebCore/manual-tests/svg-cursor-changes.svg
new file mode 100644
index 0000000..ba7b546
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-cursor-changes.svg
@@ -0,0 +1,29 @@
+<svg width="100%" height="100%" viewBox="0 0 300 600" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<cursor id="mycursor" x="10" y="10" xlink:href="resources/webkit-background.png"/>
+
+<!-- Clicking this circle should result in an instant update of the cursor location of this and the next circle (tested using DOM) -->
+<circle onclick="document.getElementById('mycursor').setAttribute('x', '100');" cx="80" cy="150" r="70" fill="green" cursor="url(#mycursor)"/>
+
+<!-- Clicking this circle should result in an instant update of the cursor location of this and the previous circle (tested using SVG DOM) -->
+<circle onclick="document.getElementById('mycursor').x.baseVal.value = 100;" cx="230" cy="150" r="70" fill="green" cursor="url(#mycursor)"/>
+
+<cursor id="mycursor2" x="10" y="10" xlink:href="resources/webkit-background.png"/>
+<cursor id="mycursor3" x="10" y="10" xlink:href="resources/webkit-background.png"/>
+
+<!-- Clicking this circle should result in an instant update of the cursor location (tested using DOM) -->
+<circle onclick="document.getElementById('mycursor2').setAttribute('x', '100');" cx="80" cy="310" r="70" fill="green" cursor="url(#mycursor2)"/>
+
+<!-- Clicking this circle should result in an instant update of the cursor location (tested using SVG DOM) -->
+<circle onclick="document.getElementById('mycursor3').x.baseVal.value = 100;" cx="230" cy="310" r="70" fill="green" cursor="url(#mycursor3)"/>
+
+<cursor id="mycursor4" x="10" y="10" xlink:href="resources/apple.jpg"/>
+
+<!-- Clicking this circle should result in an instant update of the cursor image (tested using DOM) -->
+<circle onclick="document.getElementById('mycursor4').setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', 'resources/webkit-background.png');" cx="80" cy="470" r="70" fill="green" cursor="url(#mycursor4)"/>
+
+<cursor id="mycursor5" x="10" y="10" xlink:href="resources/apple.jpg"/>
+
+<!-- Clicking this circle should result in an instant update of the cursor image (tested using SVG DOM) -->
+<circle onclick="document.getElementById('mycursor5').href.baseVal = 'resources/webkit-background.png';" cx="230" cy="470" r="70" fill="green" cursor="url(#mycursor5)"/>
+
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-deep-clone-to-new-doc.html b/Source/WebCore/manual-tests/svg-deep-clone-to-new-doc.html
new file mode 100644
index 0000000..faf0ef5
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-deep-clone-to-new-doc.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" />
+
+ <!-- To run this test: Open this page, close the window, and (hopefully) don't crash.-->
+
+ <script>
+ function gc()
+ {
+ if (window.GCController)
+ GCController.collect();
+ else
+ for (var i = 0; i < 10000; ++i) // Allocate a sufficient number of objects to force a GC.
+ ({});
+ }
+ window.onload = init;
+
+ function init() {
+ var iframe = document.getElementById("iframe");
+ var thesvgdiv = document.getElementById('thediv');
+ var theclone = thesvgdiv.cloneNode(true);
+ iframe.contentDocument.body.appendChild(theclone);
+ setTimeout(function() {
+ iframe.style.display = 'none';
+ iframe.parentNode.removeChild(iframe);
+ gc();
+ window.close();
+ }, 500);
+ }
+ </script>
+</head>
+
+<body>
+ <div>
+ <div id="thediv">
+ <svg id="thesvg" width="12cm" height="3.6cm" viewBox="0 0 1000 300">
+ <defs>
+ <lineargradient id="orange_red" x2="0" y2="1" >
+ <stop stop-color="yellow" />
+ <stop offset="1" stop-color="red" />
+ </lineargradient>
+ </defs>
+ <path id="MyPath" d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100" fill="none" stroke="red" />
+ <text font-family="Verdana" font-size="72.5" fill="url(#orange_red)" >
+ <textpath xlink:href="#MyPath"> Look mom, SVG in HTML! </textpath>
+ </text>
+ (If you had an HTML5 compliant browser, the previous text would be colored and on a path.)
+ </svg>
+ </div>
+ <div>
+ <iframe id="iframe" width="50%" height="50%"></iframe>
+ </div>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/svg-filter-animation.svg b/Source/WebCore/manual-tests/svg-filter-animation.svg
new file mode 100644
index 0000000..5b7c9cc
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-filter-animation.svg
@@ -0,0 +1,120 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+
+<!--
+ Copyright (C) 2010 University of Szeged
+ Copyright (C) 2010 Zoltan Herczeg
+ Copyright (C) 2010 Gabor Loki
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UNIVERSITY OF SZEGED OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<rect x="0%" y="0%" width="100%" height="100%" fill="black" />
+
+<defs>
+<filter id="filt" filterUnits="objectBoundingBox" x="0" y="0" width="100%" height="100%">
+ <feTurbulence id="turb" baseFrequency="0.03" numOctaves="4" seed="67" result="turb"/>
+ <feGaussianBlur in="SourceGraphic" primitiveUnits="objectBoundingBox" id="blur" stdDeviation="1" result="blur"/>
+ <feComposite in="turb" in2="blur" operator="arithmetic" k2="0.3" k3="1" result="comp"/>
+ <feDiffuseLighting in="comp" primitiveUnits="objectBoundingBox" id="diff" diffuseConstant="1" lighting-color="white" surfaceScale="10" result="light" >
+ <feSpotLight id="light" x="0" y="300" z="200" pointsAtX="-200" pointsAtY="100" pointsAtZ="0" limitingConeAngle="90" specularExponent="20" />
+ </feDiffuseLighting>
+ <feSpecularLighting in="comp" primitiveUnits="objectBoundingBox" id="diff" diffuseConstant="1" lighting-color="#A66102" surfaceScale="10" result="ambient" >
+ <feDistantLight id="light" azimuth="0" elevation="90" />
+ </feSpecularLighting>
+ <feComposite in="light" in2="ambient" operator="arithmetic" k2="1.2" k3=".8"/>
+</filter>
+</defs>
+
+<g filter="url(#filt)" fill="white" stroke="black" onclick="start()">
+ <rect x="0" y="0" width="400" height="5" />
+ <rect x="0" y="0" width="5" height="200" />
+ <rect x="0" y="195" width="400" height="5" />
+ <rect x="395" y="0" width="5" height="200" />
+ <text font-size="150" font-weight="bold" x="40" y="150">SVG</text>
+</g>
+
+<text id="fps" x="150" y="240" font-size="20" fill="white" stroke="white">afps:</text>
+<text x="30" y="265" font-size="20" font-weight="bold" fill="white" stroke="white">click on the image to start the animation</text>
+
+<script>
+<![CDATA[
+var light_x = document.getElementById('light').x;
+var light_y = document.getElementById('light').y;
+var light_pointsAtX = document.getElementById('light').pointsAtX;
+var light_pointsAtY = document.getElementById('light').pointsAtY;
+var fps = document.getElementById('fps');
+
+var round = Math.round
+
+var startDate = 0;
+var frameCounter = 0;
+var phase = 0;
+function anim() {
+ switch(phase) {
+ case 0:
+ light_pointsAtX.baseVal += 10;
+ if (light_pointsAtX.baseVal >= 380)
+ ++phase;
+ break;
+ case 1:
+ light_x.baseVal += 10;
+ light_pointsAtX.baseVal -= 10;
+ if (light_x.baseVal >= 450) {
+ ++phase;
+ waitCounter = 0;
+ }
+ break;
+ case 2:
+ light_y.baseVal -= 5;
+ if (light_y.baseVal <= -100)
+ ++phase;
+ break;
+ case 3:
+ light_pointsAtX.baseVal += 10;
+ if (light_pointsAtX.baseVal >= 450) {
+ light_x.baseVal = 0;
+ light_pointsAtX.baseVal = -200;
+ light_y.baseVal = 300;
+ light_pointsAtY.baseVal = 100;
+ phase = 0;
+ }
+ break;
+ }
+
+ frameCounter++;
+ fps.textContent = "afps: " +(round(frameCounter * 100000 / (new Date() - startDate)) / 100);
+}
+
+function start() {
+ if (!startDate) {
+ startDate = new Date();
+ setInterval(anim,1);
+ }
+}
+
+//]]>
+</script>
+
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-link-hover-use.svg b/Source/WebCore/manual-tests/svg-link-hover-use.svg
new file mode 100644
index 0000000..c39974d
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-link-hover-use.svg
@@ -0,0 +1,9 @@
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>
+ <defs>
+ <rect id='rect' width='100' height="100" fill='blue' />
+ </defs>
+ <a xlink:href="http://www.webkit.org" >
+ <use xlink:href="rect" onmouseover="alert('foo')" />
+ </a>
+ <text y='120' x='10'>The above blue square is a link, the cursor should be a hand above it.</text>
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-links.svg b/Source/WebCore/manual-tests/svg-links.svg
new file mode 100644
index 0000000..5d0ff0d
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-links.svg
@@ -0,0 +1,12 @@
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>
+ <a xlink:href='http://www.apple.com' xlink:title='SUCCESS you got a tooltip'>
+ <rect width='100' height='100' />
+ </a>
+ <text x='10' y='120'>
+ Try the following with the link above:
+ <tspan x='10' dy='20'>1. Hover and notice the status text change</tspan>
+ <tspan x='10' dy='20'>2. Hover and notice the cursor change to a hand</tspan>
+ <tspan x='10' dy='20'>3. Hover and notice a tooltip appear</tspan>
+ <tspan x='10' dy='20'>4. Drag the link and notice a bubble appear with the correct URL</tspan>
+ </text>
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-node-count-vs-scroll.xhtml b/Source/WebCore/manual-tests/svg-node-count-vs-scroll.xhtml
new file mode 100644
index 0000000..1890a53
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-node-count-vs-scroll.xhtml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xml:lang="en">
+ <head>
+ <title>SVG Scrolling Performance depends on #node is Safari?</title>
+
+ <script type="text/javascript">
+ <![CDATA[
+
+ var SVG_NS = 'http://www.w3.org/2000/svg';
+
+ function init() {
+ var nodeCount = parseInt(prompt('# <rect> to generate? ', 50000));
+
+ var svgRoot = document.createElementNS(SVG_NS, 'svg');
+
+ for (var i = 0; i < nodeCount; i++) {
+ var node = document.createElementNS(SVG_NS, 'rect');
+ node.setAttribute('x', i);
+ node.setAttribute('y', i);
+ node.setAttribute('width', 1);
+ node.setAttribute('height', i);
+ node.setAttribute('fill', 'red');
+
+ svgRoot.appendChild(node);
+ }
+
+ svgRoot.style.width = nodeCount + 'px';
+ svgRoot.style.height = nodeCount + 'px';
+ document.body.appendChild(svgRoot);
+ }
+
+ ]]>
+ </script>
+ </head>
+
+ <body onload="init()">
+ <h1>SVG Scrolling Performance depends on #node is Safari?</h1>
+ </body>
+</html>
+
diff --git a/Source/WebCore/manual-tests/svg-repaint-foreignObject.svg b/Source/WebCore/manual-tests/svg-repaint-foreignObject.svg
new file mode 100644
index 0000000..5c5cad9
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-repaint-foreignObject.svg
@@ -0,0 +1,81 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+<script>
+<![CDATA[
+var stateIndex = 0;
+var currentTarget = 0;
+
+function stateA()
+{
+ document.getElementById("A").textContent = '|A|';
+ document.getElementById("B").textContent = 'B';
+
+ currentTarget = 0;
+ startAnimation();
+}
+
+function stateB()
+{
+ document.getElementById("A").textContent = 'A';
+ document.getElementById("B").textContent = '|B|';
+ currentTarget = 1;
+ startAnimation();
+}
+
+var intervalId = null;
+
+function startAnimation() {
+ if (intervalId == null) {
+ intervalId = setInterval(animationStep, 20);
+ }
+}
+
+function animationStep() {
+ if (Math.abs(stateIndex - currentTarget) < .001) {
+ clearInterval(intervalId);
+ intervalId = null;
+ return;
+ }
+
+ if (stateIndex < currentTarget) {
+ stateIndex += 1 / 128;
+ } else {
+ stateIndex -= 1 / 128;
+ }
+
+ var elt = document.getElementById("targetGroup");
+
+ var transform = "translate(" + (100 * stateIndex) + "," + (100 * stateIndex) + ") rotate(" + (405 * stateIndex) + ",100,250) scale(" + (1 + stateIndex) + ")" ;
+ var opacity = 1 - .75 * stateIndex;
+
+ elt.setAttribute("opacity", opacity);
+ elt.setAttribute("transform", transform);
+}
+
+
+]]>
+</script>
+
+ <text id="A" x="0" y="32" fill="red" font-size="32" onclick="stateA()">|A|</text>
+ <text id="B" x="60" y="32" fill="blue" font-size="32" onclick="stateB()">B</text>
+ <text x="0" y="642" fill="black" font-size="32">Click B and then A above.</text>
+ <text x="0" y="674" fill="black" font-size="32">The animation should have no trails or clipping.</text>
+
+ <circle fill="pink" cx="300" cy="300" stroke="lightblue" stroke-width="40" r="300" />
+
+ <g>
+ <rect fill="yellow" stroke="#000000" stroke-width="2" x="60" y="60" width="170" height="170" />
+
+ <foreignObject id="targetGroup" x="60" y="60" width="170" height="170" >
+ <xhtml:xhtml>
+ <xhtml:img src="http://www.citilink.com/~grizzly/anigifs/3dolph.gif" width="170" height="170" /><br />
+ </xhtml:xhtml>
+ </foreignObject>
+ </g>
+
+
+</svg>
+
+
diff --git a/Source/WebCore/manual-tests/svg-repaint-group.svg b/Source/WebCore/manual-tests/svg-repaint-group.svg
new file mode 100644
index 0000000..7f0972e
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-repaint-group.svg
@@ -0,0 +1,81 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+<script>
+<![CDATA[
+var stateIndex = 0;
+var currentTarget = 0;
+
+function stateA()
+{
+ document.getElementById("A").textContent = '|A|';
+ document.getElementById("B").textContent = 'B';
+
+ currentTarget = 0;
+ startAnimation();
+}
+
+function stateB()
+{
+ document.getElementById("A").textContent = 'A';
+ document.getElementById("B").textContent = '|B|';
+ currentTarget = 1;
+ startAnimation();
+}
+
+var intervalId = null;
+
+function startAnimation() {
+ if (intervalId == null) {
+ intervalId = setInterval(animationStep, 20);
+ }
+}
+
+function animationStep() {
+ if (Math.abs(stateIndex - currentTarget) < .001) {
+ clearInterval(intervalId);
+ intervalId = null;
+ return;
+ }
+
+ if (stateIndex < currentTarget) {
+ stateIndex += 1 / 128;
+ } else {
+ stateIndex -= 1 / 128;
+ }
+
+ var elt = document.getElementById("targetGroup");
+
+ var transform = "translate(" + (100 * stateIndex) + "," + (100 * stateIndex) + ") rotate(" + (405 * stateIndex) + ",100,250) scale(" + (1 + stateIndex) + ")" ;
+ var opacity = 1 - .75 * stateIndex;
+
+ elt.setAttribute("opacity", opacity);
+ elt.setAttribute("transform", transform);
+}
+
+
+]]>
+</script>
+
+ <text id="A" x="0" y="32" fill="red" font-size="32" onclick="stateA()">|A|</text>
+ <text id="B" x="60" y="32" fill="blue" font-size="32" onclick="stateB()">B</text>
+ <text x="0" y="642" fill="black" font-size="32">Click B and then A above.</text>
+ <text x="0" y="674" fill="black" font-size="32">The animation should have no trails or clipping.</text>
+
+ <circle fill="pink" cx="300" cy="300" stroke="lightblue" stroke-width="40" r="300" />
+
+ <g id="targetGroup">
+ <rect fill="yellow" stroke="#000000" stroke-width="2" x="60" y="60" width="170" height="170" />
+
+ <foreignObject x="60" y="60" width="170" height="170" >
+ <xhtml:xhtml>
+ <xhtml:img src="http://www.citilink.com/~grizzly/anigifs/3dolph.gif" width="170" height="170" /><br />
+ </xhtml:xhtml>
+ </foreignObject>
+ </g>
+
+
+</svg>
+
+
diff --git a/Source/WebCore/manual-tests/svg-repaint-image.svg b/Source/WebCore/manual-tests/svg-repaint-image.svg
new file mode 100644
index 0000000..018a6a0
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-repaint-image.svg
@@ -0,0 +1,77 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+<script>
+<![CDATA[
+var stateIndex = 0;
+var currentTarget = 0;
+
+function stateA()
+{
+ document.getElementById("A").textContent = '|A|';
+ document.getElementById("B").textContent = 'B';
+
+ currentTarget = 0;
+ startAnimation();
+}
+
+function stateB()
+{
+ document.getElementById("A").textContent = 'A';
+ document.getElementById("B").textContent = '|B|';
+ currentTarget = 1;
+ startAnimation();
+}
+
+var intervalId = null;
+
+function startAnimation() {
+ if (intervalId == null) {
+ intervalId = setInterval(animationStep, 20);
+ }
+}
+
+function animationStep() {
+ if (Math.abs(stateIndex - currentTarget) < .001) {
+ clearInterval(intervalId);
+ intervalId = null;
+ return;
+ }
+
+ if (stateIndex < currentTarget) {
+ stateIndex += 1 / 128;
+ } else {
+ stateIndex -= 1 / 128;
+ }
+
+ var elt = document.getElementById("targetGroup");
+
+ var transform = "translate(" + (100 * stateIndex) + "," + (100 * stateIndex) + ") rotate(" + (405 * stateIndex) + ",100,250) scale(" + (1 + stateIndex) + ")" ;
+ var opacity = 1 - .75 * stateIndex;
+
+ elt.setAttribute("opacity", opacity);
+ elt.setAttribute("transform", transform);
+}
+
+
+]]>
+</script>
+
+ <text id="A" x="0" y="32" fill="red" font-size="32" onclick="stateA()">|A|</text>
+ <text id="B" x="60" y="32" fill="blue" font-size="32" onclick="stateB()">B</text>
+ <text x="0" y="642" fill="black" font-size="32">Click B and then A above.</text>
+ <text x="0" y="674" fill="black" font-size="32">The animation should have no trails or clipping.</text>
+
+ <circle fill="pink" cx="300" cy="300" stroke="lightblue" stroke-width="40" r="300" />
+
+ <g>
+ <rect fill="yellow" stroke="#000000" stroke-width="2" x="60" y="60" width="170" height="170" />
+
+ <image id="targetGroup" x="60" y="60" width="170" height="170" xlink:href="resources/3dolph.gif" />
+ </g>
+
+
+</svg>
+
+
diff --git a/Source/WebCore/manual-tests/svg-repaint-path.svg b/Source/WebCore/manual-tests/svg-repaint-path.svg
new file mode 100644
index 0000000..144e8ae
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-repaint-path.svg
@@ -0,0 +1,77 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+<script>
+<![CDATA[
+var stateIndex = 0;
+var currentTarget = 0;
+
+function stateA()
+{
+ document.getElementById("A").textContent = '|A|';
+ document.getElementById("B").textContent = 'B';
+
+ currentTarget = 0;
+ startAnimation();
+}
+
+function stateB()
+{
+ document.getElementById("A").textContent = 'A';
+ document.getElementById("B").textContent = '|B|';
+ currentTarget = 1;
+ startAnimation();
+}
+
+var intervalId = null;
+
+function startAnimation() {
+ if (intervalId == null) {
+ intervalId = setInterval(animationStep, 20);
+ }
+}
+
+function animationStep() {
+ if (Math.abs(stateIndex - currentTarget) < .001) {
+ clearInterval(intervalId);
+ intervalId = null;
+ return;
+ }
+
+ if (stateIndex < currentTarget) {
+ stateIndex += 1 / 128;
+ } else {
+ stateIndex -= 1 / 128;
+ }
+
+ var elt = document.getElementById("targetGroup");
+
+ var transform = "translate(" + (100 * stateIndex) + "," + (100 * stateIndex) + ") rotate(" + (405 * stateIndex) + ",100,250) scale(" + (1 + stateIndex) + ")" ;
+ var opacity = 1 - .75 * stateIndex;
+
+ elt.setAttribute("opacity", opacity);
+ elt.setAttribute("transform", transform);
+}
+
+
+]]>
+</script>
+
+ <text id="A" x="0" y="32" fill="red" font-size="32" onclick="stateA()">|A|</text>
+ <text id="B" x="60" y="32" fill="blue" font-size="32" onclick="stateB()">B</text>
+ <text x="0" y="642" fill="black" font-size="32">Click B and then A above.</text>
+ <text x="0" y="674" fill="black" font-size="32">The animation should have no trails or clipping.</text>
+
+ <circle fill="pink" cx="300" cy="300" stroke="lightblue" stroke-width="40" r="300" />
+
+ <g>
+ <rect id="targetGroup" fill="yellow" stroke="#000000" stroke-width="2" x="60" y="60" width="170" height="170" />
+
+ <image x="60" y="60" width="170" height="170" xlink:href="resources/3dolph.gif" />
+ </g>
+
+
+</svg>
+
+
diff --git a/Source/WebCore/manual-tests/svg-text-selection.svg b/Source/WebCore/manual-tests/svg-text-selection.svg
new file mode 100644
index 0000000..4c34d24
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-text-selection.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ <text x="0" y="100" fill="black" font-size="32">Selection will be constrained to this line.</text>
+ <text x="0" y="200" fill="black" font-size="32">You should be able
+ <tspan x="0" y="235">to select multiline here</tspan>
+ <tspan x="0" y="270">See bug 12334</tspan>
+ </text>
+</svg>
diff --git a/Source/WebCore/manual-tests/svg-tooltip.svg b/Source/WebCore/manual-tests/svg-tooltip.svg
new file mode 100644
index 0000000..84fe1d7
--- /dev/null
+++ b/Source/WebCore/manual-tests/svg-tooltip.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>This string should not show up as a tooltip</title>
+ <desc>
+ This test verifies that tooltips are properly rendered for SVG content in a variety of
+ scenarios. Hovering over every shape should result in a tooltip of "PASS".
+ </desc>
+ <defs>
+ <ellipse id="e1" cx="100" cy="200" rx="50" ry="30" fill="blue">
+ <title>PASS</title>
+ </ellipse>
+ <ellipse id="e2" cx="250" cy="200" rx="50" ry="30" fill="blue">
+ <title>FAIL</title>
+ </ellipse>
+ <symbol id="e3">
+ <ellipse cx="100" cy="300" rx="50" ry="30" fill="blue">
+ <title>PASS</title>
+ </ellipse>
+ </symbol>
+ <symbol id="e4">
+ <title>FAIL</title>
+ <ellipse cx="250" cy="300" rx="50" ry="30" fill="blue">
+ </ellipse>
+ </symbol>
+ </defs>
+
+ <text y="15" x="0">When hovered, all shapes should show a "PASS" tooltip. Anything else is a failure.</text>
+
+ <ellipse cx="100" cy="100" rx="50" ry="30" fill="blue">
+ <title>PASS</title>
+ </ellipse>
+
+ <g>
+ <title>PASS</title>
+ <ellipse cx="250" cy="100" rx="50" ry="30" fill="blue"/>
+ </g>
+
+ <a xlink:title="PASS" xlink:href="#">
+ <title>FAIL</title>
+ <ellipse id="e4" cx="400" cy="100" rx="50" ry="30" fill="blue"/>
+ </a>
+
+ <use xlink:href="#e1"/>
+
+ <use xlink:href="#e2">
+ <title>PASS</title>
+ </use>
+
+ <g>
+ <title>FAIL</title>
+ <ellipse id="e8" cx="400" cy="200" rx="50" ry="30" fill="blue">
+ <title>PASS</title>
+ </ellipse>
+ </g>
+
+ <use xlink:href="#e3"/>
+ <use xlink:href="#e4">
+ <title>PASS</title>
+ </use>
+
+
+</svg>
diff --git a/Source/WebCore/manual-tests/system-color-change.html b/Source/WebCore/manual-tests/system-color-change.html
new file mode 100644
index 0000000..d06f242
--- /dev/null
+++ b/Source/WebCore/manual-tests/system-color-change.html
@@ -0,0 +1,7 @@
+<body bgcolor="highlight">
+Change the system highlight color.
+
+On Mac OS X, go into System Preferences and change the Highlight color in the Appearance preference panel.
+
+If the background of this page changes color immediately, the test passed.
+</body>
diff --git a/Source/WebCore/manual-tests/tabbing-input-google.html b/Source/WebCore/manual-tests/tabbing-input-google.html
new file mode 100644
index 0000000..6770c11
--- /dev/null
+++ b/Source/WebCore/manual-tests/tabbing-input-google.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8181">8181</a> REGRESSION: After tabbing in page's field, attempting to tab from Google toolbar search to page fails on first try</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b> <br>
+1) Place the cursor in the Google search field.<br>
+2) Hit tab until focus cycles through the text fields in the page, and comes back to the Google field.<br>
+3) Hit tab once.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The first text field in the page should have focus.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The first text field in the page does not have focus.
+</p>
+<input type="text" value="1"><input type="text" value="2"><input type="text" value="3">
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/target-test.html b/Source/WebCore/manual-tests/target-test.html
new file mode 100644
index 0000000..86f6000
--- /dev/null
+++ b/Source/WebCore/manual-tests/target-test.html
@@ -0,0 +1 @@
+<a href="targeted.html" target="test">Click this link.</a>
diff --git a/Source/WebCore/manual-tests/target_new-1.html b/Source/WebCore/manual-tests/target_new-1.html
new file mode 100644
index 0000000..66e16c4
--- /dev/null
+++ b/Source/WebCore/manual-tests/target_new-1.html
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en"><head>
+<body>
+<p>Reference the opener, its properties and functions via the links below.</p>
+<ol>
+
+<li>Clicking <a href="#" onclick="alert(window.opener)">here</a> should alert "[object Window]"</li>
+<li>Clicking <a href="#" onclick="alert(window.opener.aVar)">here</a> should alert "some value"</li>
+<li>Clicking <a href="#" onclick="window.opener.externallyCalled()">here</a> should alert "hello from opener"</li>
+</ol>
+</body></html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/target_new.html b/Source/WebCore/manual-tests/target_new.html
new file mode 100644
index 0000000..d7d75b4
--- /dev/null
+++ b/Source/WebCore/manual-tests/target_new.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<script type="text/javascript" language="javascript" charset="utf-8">
+ var aVar = "some value";
+ function externallyCalled() {
+ alert("hello from opener");
+ }
+</script>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="rdar://problem/4172380">4172380</a> [GENENTECH] window.opener not available when child opened via target="_new"</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click link below, then click links in the window that opens.</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Links in the new window that opens will alert "[object Window]", "some value", and "hello from opener".
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+First link in the new window that opens will alert "null", and the other two links will not work at all.
+</p>
+
+<a href="target_new-1.html" target="_new">Click this link to begin test</a>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/targeted.html b/Source/WebCore/manual-tests/targeted.html
new file mode 100644
index 0000000..16cb18d
--- /dev/null
+++ b/Source/WebCore/manual-tests/targeted.html
@@ -0,0 +1 @@
+This should open in a new window.
diff --git a/Source/WebCore/manual-tests/template.html b/Source/WebCore/manual-tests/template.html
new file mode 100644
index 0000000..e858392
--- /dev/null
+++ b/Source/WebCore/manual-tests/template.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="Bug URL Here">Bug ID Number Here</a> Bug Title Here</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Please describe the steps required to test this bug here.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+Expected results if the test PASSES here. Please describe the results the tester would see if the bug in question is FIXED.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+Expected results if the test FAILS here. Please describe the results the tester would see if the bug in question is NOT FIXED. In many cases, this is just a description of the original bug.
+</p>
+
+Your test code goes here.
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/test-iframes-loading-the-same-resource.html b/Source/WebCore/manual-tests/test-iframes-loading-the-same-resource.html
new file mode 100644
index 0000000..462db02
--- /dev/null
+++ b/Source/WebCore/manual-tests/test-iframes-loading-the-same-resource.html
@@ -0,0 +1,19 @@
+<html>
+<head>
+<script>
+ setTimeout('document.getElementById("frame2").src = "resources/test-frame.html";', 100);
+ loadCount = 0
+ function frame2Loaded() {
+ if (loadCount < 40) {
+ setTimeout('document.getElementById("frame2").src = "resources/test-frame.html?'+loadCount+'";', 100);
+ loadCount++;
+ }
+ }
+</script>
+</head>
+<body>
+ To perform this test attempt to drag one of the apple images in the left frame while the right frame is doing loads. This test is not entirely deterministic so it should be attempted a number of times. <br />
+<iframe id="frame1" src="resources/test-frame.html"></iframe>
+<iframe id="frame2" onload="frame2Loaded();"></iframe>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/text-field-autoscroll.html b/Source/WebCore/manual-tests/text-field-autoscroll.html
new file mode 100644
index 0000000..c7848ec
--- /dev/null
+++ b/Source/WebCore/manual-tests/text-field-autoscroll.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8496">Bugzilla #8496</a> REGRESSION: Dragging to select text around a text field causes the text field to scroll</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Start dragging in the text above the text field. Stop where it says "HERE".</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The text field should not autoscroll its text during this drag.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+If the text field scrolls, the test has failed.
+</p>
+Start dragging here....<br>
+<input id="tf" value="12345678910 abcdefghijkl 0000000000"><br>
+End dragging ............................HERE........watch the text field scroll.
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/textarea-after-stylesheet-link.html b/Source/WebCore/manual-tests/textarea-after-stylesheet-link.html
new file mode 100644
index 0000000..1b88626
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-after-stylesheet-link.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+<script>
+if (window.layoutTestController) {
+ window.layoutTestController.dumpAsText();
+}
+</script>
+<link rel="stylesheet" />
+</head>
+<body>
+<p>Tests: whether &lt;link rel="stylesheet"/&gt; disturbs the display of text in textareas</p>
+<p>Related bug: <a href = "http://bugs.webkit.org/show_bug.cgi?id=3751">3751: REGRESSION: affects Blogger, GMail & Wikipedia: empty textarea's which should have content</a></p>
+<p>Success: You will see "passed" inside the texarea below</p>
+<hr>
+<textarea>passed</textarea>
+</form>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/textarea-caret-position-after-auto-spell-correct.html b/Source/WebCore/manual-tests/textarea-caret-position-after-auto-spell-correct.html
new file mode 100644
index 0000000..ab650ac
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-caret-position-after-auto-spell-correct.html
@@ -0,0 +1,14 @@
+<html>
+<body>
+<p>Tests bug <a href="https://bugs.webkit.org/show_bug.cgi?id=26200">26200</a> where the caret position jumps off to an incorrect position after auto-correcting a misspelled word.</p>
+<p>Open this file in Google Chromium (version 3.0 +), in Windows, and enable the --auto-spell-correct flag. Insert the word 'teh' between any two words in the paragraph below.</p>
+<p>SUCCESS: After hitting space, 'teh' is auto-corrected to 'the', and the caret stays on in the place it is supposed to be in after typing the word and hitting space.</p>
+<textarea rows="6" cols="35">
+This is an english statement.
+This is an english statement.
+This is an english statement.
+This is an english statement.
+This is an english statement.
+</textarea>
+</body>
+<html>
diff --git a/Source/WebCore/manual-tests/textarea-focus.html b/Source/WebCore/manual-tests/textarea-focus.html
new file mode 100644
index 0000000..53afe9e
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-focus.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+<style type="text/css">
+ textarea { background: red; }
+ textarea:focus { background: green; }
+</style>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=8324">Bugzilla bug 8324</a> REGRESSION: textarea :focus not applied immediately</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+Click in the red text area below.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The text area&rsquo;s background will change from red to green.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The text area will not change to green. Only switching to another window and back to this window
+will change it to green.
+</p>
+
+<textarea rows="8" cols="40"></textarea>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/textarea-iframe-navigation.html b/Source/WebCore/manual-tests/textarea-iframe-navigation.html
new file mode 100644
index 0000000..98d0748
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-iframe-navigation.html
@@ -0,0 +1,17 @@
+<html>
+<head>
+</head>
+<body>
+<p>Textarea inside iframe -- Navigation</p>
+ <ol>
+ <li>In the Debug menu, click "Go to about:blank soon"</li>
+ <li>Select a few lines in the textarea, keeping the mouse cursor down inside the area</li>
+ <li>Wait for the navigation to happen</li>
+ <li>Release the mouse</li>
+ </ol>
+<p>You should not crash.</p>
+<hr>
+<iframe style="border: 2px solid black" width="100%" src="textarea-iframe-navigation2.html">
+</iframe>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/textarea-iframe-navigation2.html b/Source/WebCore/manual-tests/textarea-iframe-navigation2.html
new file mode 100644
index 0000000..74b4964
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-iframe-navigation2.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+</head>
+
+<body>
+<textarea rows="3">
+a
+b
+c
+</textarea>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/textarea-onpaste.html b/Source/WebCore/manual-tests/textarea-onpaste.html
new file mode 100644
index 0000000..04d98b1
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-onpaste.html
@@ -0,0 +1,9 @@
+<html>
+ <head>
+ </head>
+ <body>
+ <textarea onpaste="document.getElementById('result').innerHTML='SUCCESS'">Paste here</textarea>
+ This tests that onpaste handlers are called. To test this, paste some text in the textarea below. The result below should change from FAILURE to SUCCESS.
+ <div id="result">FAILURE</div>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/textarea-reset-default-value.html b/Source/WebCore/manual-tests/textarea-reset-default-value.html
new file mode 100644
index 0000000..1c747b6
--- /dev/null
+++ b/Source/WebCore/manual-tests/textarea-reset-default-value.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+<title>Test for https://bugs.webkit.org/show_bug.cgi?id=31539</title>
+
+<!-- Manual test for https://bugs.webkit.org/show_bug.cgi?id=31539.
+ Ensure that the value and defaultValue on a textarea is restored correctly when
+ we restore form state (e.g. by hitting back after submitting a form). -->
+
+</head>
+<body>
+<h2>Manual test for https://bugs.webkit.org/show_bug.cgi?id=31539.</h2>
+<p>To run this test:</p>
+<ul>
+ <li>Change the text in the &lt;textarea&gt; below.</li>
+ <li>Submit the form. The form should navigate back immediately.</li>
+ <li>Note that the value in the text area matches what you entered before submitting the form, this is correct.</li>
+ <li>Now click the reset button for the form.
+ <li>The text in the &lt;textarea&gt; should now match '123', the default text for the &lt;textarea&gt;.</li>
+</ul>
+
+<iframe src="resources/textarea-form-back-on-submit.html" width="800" height="200" id="frame"></iframe>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/textfield-onblur.html b/Source/WebCore/manual-tests/textfield-onblur.html
new file mode 100644
index 0000000..8f9d7ec
--- /dev/null
+++ b/Source/WebCore/manual-tests/textfield-onblur.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+ <script>
+ function init () {
+ document.getElementById("test").focus();
+ }
+
+ function foo () {
+ document.open();
+ document.write('Test has passed.');
+ document.close();
+ }
+ </script>
+</head>
+<body onload="init();">
+<p><b>BUG ID:</b> <a href="rdar://problem/4181058">4181058</a> 8C45: Safari repro crash with document.write (WebCore::Node::dispatchEvent)</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+<ul>
+<li> Press the Tab key. This will remove focus from the text field, and should call document.write without crashing.
+</ul>
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+You should see text that says "Test has passed".
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+If the test fails, the browser will crash.
+</p>
+
+<input type="text" id="test" onblur="foo();" />
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/timeout-test.html b/Source/WebCore/manual-tests/timeout-test.html
new file mode 100644
index 0000000..2da94a2
--- /dev/null
+++ b/Source/WebCore/manual-tests/timeout-test.html
@@ -0,0 +1,13 @@
+<html>
+<head>
+<title>10m10s Timeout Test</title>
+</head>
+<body>
+To run this test, both timeout-test.html and timeout-test.php must be served over http.<br>
+And you must be patient.<br>
+Clicking on this button will post a form that takes over 10 minutes for the server to respond. The connection should not time out!<br>
+<form action="timeout-test.php" method="post">
+<input type="submit" value="Run Test">
+</form>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/timeout-test.php b/Source/WebCore/manual-tests/timeout-test.php
new file mode 100644
index 0000000..3c546fe
--- /dev/null
+++ b/Source/WebCore/manual-tests/timeout-test.php
@@ -0,0 +1,3 @@
+<?php
+sleep(610)
+?>This content took 10m10s to deliver. Congratulations, you didn't time out!
diff --git a/Source/WebCore/manual-tests/title-internal-whitespace.html b/Source/WebCore/manual-tests/title-internal-whitespace.html
new file mode 100644
index 0000000..b2cb89e
--- /dev/null
+++ b/Source/WebCore/manual-tests/title-internal-whitespace.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+ <title>
+ Lorem
+ Ipsum
+ Dolor
+ </title>
+</head>
+<body>
+ Title should render as "Lorem Ipsum Dolor" not "Lorem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ipsum&nbsp;&nbsp;&nbsp;&nbsp;Dolor".
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/transition-accelerated.html b/Source/WebCore/manual-tests/transition-accelerated.html
new file mode 100644
index 0000000..a898c29
--- /dev/null
+++ b/Source/WebCore/manual-tests/transition-accelerated.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ .box {
+ position: relative;
+ height: 100px;
+ width: 100px;
+ margin: 10px;
+ background-color: blue;
+ }
+
+ .slow {
+ -webkit-animation: slow 2s infinite linear alternate;
+ }
+
+ .fast {
+ -webkit-animation: fast 2s infinite linear alternate;
+ }
+
+ @-webkit-keyframes slow {
+ from {
+ left: 0px;
+ }
+ to {
+ left: 400px;
+ }
+ }
+
+ @-webkit-keyframes fast {
+ from {
+ -webkit-transform: translateX(0);
+ }
+ to {
+ -webkit-transform: translateX(400px);
+ }
+ }
+ </style>
+</head>
+<body>
+ <p>The lower box should animate more smoothly than the upper one (on Mac).</p>
+ <div class="box slow"></div>
+ <div class="box fast"></div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/transition-delay.html b/Source/WebCore/manual-tests/transition-delay.html
new file mode 100644
index 0000000..006c798
--- /dev/null
+++ b/Source/WebCore/manual-tests/transition-delay.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Transition Delay</title>
+ <style>
+ #container {
+ position: absolute;
+ width: 500px;
+ height: 340px;
+ border: 1px solid black;
+ }
+
+ .box {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ background-color: #66F;
+ z-index: 0;
+ }
+
+ #container.slide > .box {
+ -webkit-transform: translateX(380px);
+ -webkit-transition-property: -webkit-transform;
+ -webkit-transition-duration: 2s;
+ }
+
+ #box1 {
+ -webkit-transition-delay: 200ms;
+ }
+
+ #box2 {
+ -webkit-transition-delay: 2s;
+ }
+
+ #box3 {
+ -webkit-transition-delay: 4s;
+ }
+ </style>
+
+</head>
+<body>
+<p>Click to animate</p>
+<div id="container" onclick="this.className = 'slide'">
+ <div class="box" id="box1">
+ Delay: 200ms
+ </div>
+ <div class="box" id="box2">
+ Delay: 2s
+ </div>
+ <div class="box" id="box3">
+ Delay: 4s
+ </div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/transition-events.html b/Source/WebCore/manual-tests/transition-events.html
new file mode 100644
index 0000000..36cf940
--- /dev/null
+++ b/Source/WebCore/manual-tests/transition-events.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Transition Events</title>
+ <style type="text/css" media="screen">
+ #box1 {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ background-color: blue;
+ z-index: 0;
+ -webkit-transition-property: left;
+ -webkit-transition-duration: 2s;
+ left: 0px;
+ }
+
+ #box2 {
+ position: relative;
+ width: 100px;
+ height: 100px;
+ margin: 10px;
+ background-color: red;
+ z-index: 0;
+ -webkit-transition-property: left;
+ -webkit-transition-duration: 2s;
+ left: 0px;
+ }
+
+ #log {
+ position: absolute;
+ width: 90%;
+ height: 200px;
+ overflow: scroll;
+ border: 1px solid black;
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+
+ var switch1 = true;
+ var switch2 = false;
+
+ document.addEventListener('webkitTransitionEnd', function(e) {
+ var id = "1";
+ if (switch1) {
+ id = "2";
+ }
+ var offset = 200;
+ if (switch2) {
+ offset = 0;
+ }
+ var box = document.getElementById("box" + id);
+ box.style.left = "" + offset + "px";
+ switch1 = !switch1;
+ if (!switch1) switch2 = !switch2;
+ logTransition(event);
+ }, false);
+
+ function doClick(obj)
+ {
+ var box1 = document.getElementById("box1");
+ box1.style.left = "200px";
+ }
+
+ function logTransition(event)
+ {
+ var log = document.getElementById('log');
+ log.innerHTML = log.innerHTML + '<br>Property: ' + event.propertyName + ' Time: ' + event.elapsedTime;
+ }
+ </script>
+</head>
+<body>
+ <h2>Transition Events</h2>
+ <p>Click to start transitions. Once started, transition end events should keep
+ things moving forever.</p>
+ <div id="container" onclick="doClick(this)">
+ <div id="box1">
+ </div>
+ <div id="box2">
+ </div>
+ </div>
+
+ <div id="log">
+
+ </div>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/transition-left.html b/Source/WebCore/manual-tests/transition-left.html
new file mode 100644
index 0000000..492e306
--- /dev/null
+++ b/Source/WebCore/manual-tests/transition-left.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+
+<html lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <title>Transition of left property</title>
+ <style>
+ div {
+ position: relative;
+ left: 100px;
+ height: 200px;
+ width: 300px;
+ background-color: #9bb;
+ -webkit-transition-property: left;
+ -webkit-transition-duration: 1s;
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+
+ var flag = true;
+
+ function init() {
+ document.getElementById("target").addEventListener("click", function(evt) {
+ if (flag)
+ evt.target.style.left = "300px";
+ else
+ evt.target.style.left = "100px";
+ flag = !flag;
+ }, false);
+ }
+
+ window.addEventListener("load", init, false);
+ </script>
+</head>
+<body>
+ <h1>Transition of 'left' property</h1>
+
+ <p>The element below should move 200 pixels left or right when clicked</p>
+
+ <div id="target">
+ This element should transition.
+ </div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/transition-timing-functions.html b/Source/WebCore/manual-tests/transition-timing-functions.html
new file mode 100644
index 0000000..ed1e4d1
--- /dev/null
+++ b/Source/WebCore/manual-tests/transition-timing-functions.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>Timing Functions for Transitions</title>
+ <style type="text/css" media="screen">
+
+ body {
+ margin: 10px;
+ padding: 0;
+ }
+
+ .container div {
+ position: relative;
+ width: 250px;
+ height: 50px;
+ background: #99c;
+ -webkit-transition-property: left;
+ -webkit-transition-duration: 5s;
+ margin-bottom: 10px;
+ }
+
+ .container:hover .default,
+ .container:hover .ease,
+ .container:hover .linear,
+ .container:hover .ease-in,
+ .container:hover .ease-out,
+ .container:hover .ease-in-out,
+ .container:hover .cubic,
+ .container:hover .error {
+ left: 400px;
+ }
+
+ .container .ease {
+ -webkit-transition-timing-function: ease;
+ }
+
+ .container .linear {
+ -webkit-transition-timing-function: linear;
+ }
+
+ .container .ease-in {
+ -webkit-transition-timing-function: ease-in;
+ }
+
+ .container .ease-out {
+ -webkit-transition-timing-function: ease-out;
+ }
+
+ .container .ease-in-out {
+ -webkit-transition-timing-function: ease-in-out;
+ }
+
+ .container .cubic {
+ -webkit-transition-timing-function: cubic-bezier(.42, .0, .58, 1.0)
+ }
+
+ .container .error {
+ -webkit-transition-timing-function: bananas;
+ }
+
+ #endmarker {
+ position: absolute;
+ width: 10px;
+ left: 400px;
+ top: 100px;
+ height: 500px;
+ background-color: red;
+ }
+
+
+ </style>
+ </head>
+ <body>
+ <div id="endmarker">
+ </div>
+
+ <h1>Timing functions for transitions</h1>
+ <p>On hover, the elements below should transition using the
+ described timing functions</p>
+
+ <div class="container">
+
+ <div class="default">
+ Default (no timing function specified, should be the same as Ease)
+ </div>
+
+ <div class="ease">
+ Ease (the default ease function)
+ </div>
+
+ <div class="linear">
+ Linear
+ </div>
+
+ <div class="ease-in">
+ Ease In
+ </div>
+
+ <div class="ease-out">
+ Ease Out
+ </div>
+
+ <div class="ease-in-out">
+ Ease In Out
+ </div>
+
+ <div class="cubic">
+ Cubic bezier specified the same as Ease In Out
+ </div>
+
+ <div class="error">
+ Bogus definition, should become default of Ease
+ </div>
+
+ </div>
+
+
+
+ </body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/transitions.html b/Source/WebCore/manual-tests/transitions.html
new file mode 100644
index 0000000..33a9cff
--- /dev/null
+++ b/Source/WebCore/manual-tests/transitions.html
@@ -0,0 +1,54 @@
+<style>
+ div {
+ width: 50px;
+ height: 50px;
+ background-color: yellow;
+ }
+
+ div.green {
+ width: 100px;
+ background-color: green;
+ -webkit-transition-property: background-color;
+ -webkit-transition-duration: 5s;
+ }
+
+ div.square {
+ width: 100px;
+ height: 100px;
+ -webkit-transition-property: height;
+ -webkit-transition-duration: 2s;
+ }
+</style>
+<p id="instructions">
+ When you click the Change button, the shape will
+ <span id="description"></span>.
+ <button style="display: block;" onclick="transition()">Change</button>
+</p>
+<div id="target"></div>
+<script>
+ var state = 0;
+ var transitions = [
+ {className:"green", description:"instantly change into a rectangle and fade from yellow to green over 5 seconds"},
+ {className:"", description:"instantly change into a small yellow square"},
+ {className:"square", description:"instantly change into a yellow rectangle and then animate into a big yellow square over 2 seconds"},
+ {className:"green", description:"instantly change into a yellow rectangle and then animate to a green rectangle over 5 seconds"},
+ {className:"", description:"instantly change into a small yellow square"},
+ {className:"green", description:"instantly change into a yellow rectangle and fade from yellow to green over 5 seconds"},
+ {className:"square", description:"instantly change to a yellow rectangle and then animate into a large yellow square over 2 seconds"},
+ {className:"", description:"instantly change into a small yellow square"}
+ ];
+
+ document.getElementById("description").innerText = transitions[0].description;
+
+ function transition()
+ {
+ var target = document.getElementById("target");
+ target.className = transitions[state].className;
+ state++;
+ if (state < transitions.length)
+ document.getElementById("description").innerText = transitions[state].description;
+ else {
+ document.getElementById("instructions").innerText = "Done.";
+ }
+ }
+</script>
diff --git a/Source/WebCore/manual-tests/transitions2.html b/Source/WebCore/manual-tests/transitions2.html
new file mode 100644
index 0000000..6515a79
--- /dev/null
+++ b/Source/WebCore/manual-tests/transitions2.html
@@ -0,0 +1,52 @@
+<style>
+ div {
+ width: 50px;
+ height: 50px;
+ background-color: green;
+ }
+
+ div.square {
+ width: 100px;
+ height: 100px;
+ -webkit-transition-property: height;
+ -webkit-transition-duration: 2s;
+ }
+
+ div.rectangle {
+ width: 100px;
+ height: 200px;
+ -webkit-transition-property: width, height;
+ -webkit-transition-duration: 5s;
+ }
+</style>
+<p id="instructions">
+ When you click the Change button, the shape will
+ <span id="description"></span>.
+ <button style="display: block;" onclick="transition()">Change</button>
+</p>
+<div id="target"></div>
+<script>
+ var state = 0;
+ var transitions = [
+ {className:"rectangle", description:"animate to a large rectangle over 5 seconds."},
+ {className:"square", description:"animate to a square over 2 seconds. Try clicking before the first animation finishes and make sure the width doesn't do an ugly jump."},
+ {className:"", description:"instantly change to a small square"},
+ {className:"square", description:"instantly change into a small rectangle and then animate into a large square over 2 seconds"},
+ {className:"rectangle", description:"animate to a large rectangle over 5 seconds"},
+ {className:"", description:"instantly change to a small square"}
+ ];
+
+ document.getElementById("description").innerText = transitions[0].description;
+
+ function transition()
+ {
+ var target = document.getElementById("target");
+ target.className = transitions[state].className;
+ state++;
+ if (state < transitions.length)
+ document.getElementById("description").innerText = transitions[state].description;
+ else {
+ document.getElementById("instructions").innerText = "Done.";
+ }
+ }
+</script>
diff --git a/Source/WebCore/manual-tests/update-empty-popup.html b/Source/WebCore/manual-tests/update-empty-popup.html
new file mode 100644
index 0000000..03462f2
--- /dev/null
+++ b/Source/WebCore/manual-tests/update-empty-popup.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugs.webkit.org/show_bug.cgi?id=13379">Bugzilla bug 13379</a> REGRESSION: Cannot add an option to a selected popup</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b>
+1. Click on the empty popup button.<br>
+2. Click on the Test button.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b>
+The popup button will change to display the word SUCCESS.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>
+The popup button will become wider but will not display any text. Clicking the popup
+once will not bring up the menu.
+</p>
+
+<select id="select"></select>
+<br>
+<input type="button" onclick='document.getElementById("select").add(new Option("SUCCESS"))' value="Test">
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/user-drag-with-decorations.html b/Source/WebCore/manual-tests/user-drag-with-decorations.html
new file mode 100644
index 0000000..1878d11
--- /dev/null
+++ b/Source/WebCore/manual-tests/user-drag-with-decorations.html
@@ -0,0 +1,7 @@
+This tests that we don't include overflow decorations from our ancestor nodes in the drag image for -webkit-user-drag: element. To perform this test drag the green square below. The drag image should not contain any parts of the scrollbar graphics visible on the page.
+
+<div style="height:100px; width:100px;overflow:scroll;">
+ <div style="-webkit-user-drag:element;position:absolute; background: rgba(0,128,0,0.5); height:100px; width:100px;">
+ Drag me!
+ </div>
+</div> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/video-in-non-frontmost-tab.html b/Source/WebCore/manual-tests/video-in-non-frontmost-tab.html
new file mode 100644
index 0000000..d1fe4a8
--- /dev/null
+++ b/Source/WebCore/manual-tests/video-in-non-frontmost-tab.html
@@ -0,0 +1,4 @@
+This tests that video does not play if it's not in the frontmost tab.
+Command-Click <a href="resources/video-tab.html">this link</a> to open it in a non-frontmost tab.
+If you hear music before switching tabs, then the test failed.
+If not, click on the tab and the video should then play.
diff --git a/Source/WebCore/manual-tests/video-player.html b/Source/WebCore/manual-tests/video-player.html
new file mode 100644
index 0000000..74f0a38
--- /dev/null
+++ b/Source/WebCore/manual-tests/video-player.html
@@ -0,0 +1,103 @@
+<style>
+#videoelem { width: 100%; height: 100%; position: absolute; }
+#videocontainer { position: relative; width: 400px; height:230px;-webkit-user-select:none; -webkit-transition-duration:0.2s}
+.videobutton {
+ line-height: 40pt;
+ border: 3px solid white;
+ -webkit-border-radius: 20px;
+ opacity: 0.5;
+ position: absolute;
+ font-size: 40pt;
+ color: white;
+ background-color: gray;
+ cursor: pointer;
+ text-align: center;
+ z-index: 1;
+}
+.videozoombutton { bottom:10px;right:10px;width:1.1em;height:1.1em;font-size:15pt; line-height: 15pt; border:2px solid white; -webkit-border-radius: 8px;}
+.videoloading { top: 0; bottom: 0; margin:auto; left:0; right:0; width: 7em; height: 1.2em; cursor:default;}
+.videofadeout { -webkit-transition: 1.5s; opacity:0; }
+#videocontainer:hover .videofadeout { opacity: 0.5; }
+.videoplay { top: 0; bottom: 0; margin:auto; left:0; right:0; width: 1.2em; height: 1.2em;}
+</style>
+<script>
+var videoElem;
+var playButton;
+var showProgress = true;
+var videoLargeSize = false;
+function startedPlaying() {
+ showProgress = false;
+ playButton.innerHTML = "||"
+ playButton.className = "videobutton videoplay videofadeout";
+}
+function stoppedPlaying() {
+ playButton.innerHTML = ">"
+ playButton.className = "videobutton videoplay";
+}
+function updateProgress(ev) {
+ if (!showProgress)
+ return;
+ playButton.innerHTML = "Loading...";
+ playButton.className = "videobutton videoloading";
+}
+function initVideo() {
+ videoElem = document.getElementById("videoelem");
+ playButton = document.getElementById("videoplaybutton");
+ videoZoomButton = document.getElementById("videozoombutton");
+ if (!videoElem.play) {
+ playButton.style.display = "none";
+ videoZoomButton.style.display = "none";
+ return;
+ }
+ videoElem.addEventListener("play", startedPlaying);
+ videoElem.addEventListener("pause", stoppedPlaying);
+ videoElem.addEventListener("ended", function () {
+ if (!videoElem.paused)
+ videoElem.pause();
+ stoppedPlaying();
+ });
+ videoElem.addEventListener("progress", updateProgress);
+ videoElem.addEventListener("begin", updateProgress);
+ videoElem.addEventListener("canplaythrough", function () {
+ videoElem.play();
+ });
+ videoElem.addEventListener("error", function() {
+ playButton.innerHTML = "Load failed";
+ });
+ videoElem.addEventListener("dataunavailable", function () {
+ if (!showProgress) {
+ showProgress = true;
+ playButton.innerHTML = "Loading...";
+ playButton.className = "videobutton videoloading";
+ }
+ });
+ videoZoomButton.addEventListener("click", function () {
+ var container = document.getElementById("videocontainer");
+ videoLargeSize = !videoLargeSize;
+ if (videoLargeSize) {
+ container.style.width = "640px";
+ container.style.height = "360px";
+ videoZoomButton.innerHTML = "-";
+ } else {
+ container.style.width = "400px";
+ container.style.height = "225px";
+ videoZoomButton.innerHTML = "+";
+ }
+ });
+ playButton.addEventListener("click", function () {
+ if (videoElem.paused) {
+ if (!videoElem.src)
+ videoElem.src = "http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov";
+ videoElem.play();
+ } else
+ videoElem.pause();
+ } );
+}
+</script>
+<div id=videocontainer>
+<video id=videoelem poster="resources/touch-poster.png">
+<b style="font-size:15pt">This is fallback content. If you had video support you would see some here!</b></video>
+<div class="videobutton videoplay" id=videoplaybutton>&gt;</div>
+<div id=videozoombutton class="videobutton videozoombutton videofadeout">+</div>
+</div>
+<script>initVideo();</script>
diff --git a/Source/WebCore/manual-tests/video-rtsp.html b/Source/WebCore/manual-tests/video-rtsp.html
new file mode 100644
index 0000000..4fff987
--- /dev/null
+++ b/Source/WebCore/manual-tests/video-rtsp.html
@@ -0,0 +1,11 @@
+<html>
+<head>
+<title>RTSP playback test</title>
+</head>
+<body>
+<video with=640 height=352 autoplay controls src="rtsp://a2047.v1411b.c1411.g.vq.akamaistream.net/5/2047/1411/2_h264_650/1a1a1ae454c430950065de4cbb2f94c226950c7ae655b61a48a91475e243acda3dac194879adde0f/wwdc_2006_2_650.mov"></video>
+<p>Test that QuickTime file with RTSP URL loads.<p>
+<script>start()</script>
+<pre id="console"></pre>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/video-waiting-seeking.html b/Source/WebCore/manual-tests/video-waiting-seeking.html
new file mode 100644
index 0000000..508df1d
--- /dev/null
+++ b/Source/WebCore/manual-tests/video-waiting-seeking.html
@@ -0,0 +1,81 @@
+<html>
+ <head>
+ <script src="../../LayoutTests/media/video-test.js"></script>
+ <script>
+
+ var seekedCount = 0;
+ var counter = 0;
+
+ function trySeek(seekTo)
+ {
+ if (isInTimeRanges(video.seekable, seekTo)) {
+ if (isInTimeRanges(video.buffered, seekTo)) {
+ consoleWrite("Warining: Seeking into buffered region. May not generate waiting or seeking events.");
+ }
+ run("video.currentTime = " + seekTo);
+ } else {
+ failTest("Cannot seek to " + seekTo + ". Does engine support seeking into unbuffered region?");
+ }
+ }
+
+ function seeked()
+ {
+ ++seekedCount;
+ consoleWrite("");
+ }
+
+ function scheduleSeek() {
+ setTimeout(someTimeLater, 200);
+ }
+
+ function someTimeLater()
+ {
+ consoleWrite("Running scheduled seek");
+ testExpected("seekedCount", counter);
+ testExpected("video.currentTime", counter, ">=");
+
+ if (counter == 3)
+ {
+ consoleWrite("");
+ return;
+ endTest();
+ }
+
+ ++counter;
+
+ scheduleSeek();
+ trySeek(counter);
+ consoleWrite("");
+ }
+
+ function start()
+ {
+ findMediaElement();
+
+ waitForEvent('waiting');
+ waitForEvent('seeking');
+ waitForEvent('seeked', seeked);
+ waitForEvent('play', someTimeLater);
+
+ consoleWrite("Start Load");
+ video.src = "http://127.0.0.1:8000/media/video-throttled-load.cgi?name=../../../media/content/test.mp4&throttle=25";
+ video.load();
+ video.play();
+ }
+ </script>
+ </head>
+ <body onload="start()">
+ <video controls></video>
+
+ <p>Attempt to seek out of the buffered range. If supported, this
+ should cause a waiting and seeking event to be fired for each seek.
+ This test makes assumptions on the size of the input file, the bitrate
+ of delivery, and the duration of the file.
+ </p>
+ <p>
+ Source is assumed to be about 188k with a uniform bitrate, &gt; 4
+ seconds in length, and served at 25kb/s. This should make seeking one
+ second ahead every 200ms always leave the buffered region.
+ </p>
+ </body>
+</html>
diff --git a/Source/WebCore/manual-tests/visited-link-new-window.html b/Source/WebCore/manual-tests/visited-link-new-window.html
new file mode 100644
index 0000000..5e10a34
--- /dev/null
+++ b/Source/WebCore/manual-tests/visited-link-new-window.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Visited link coloring test</test>
+<style>
+:visited {
+ color: limegreen;
+}
+</style>
+</head>
+<body>
+<h1>Visited link coloring test</h1>
+<p>Make sure the link below is not colored as visited (delete the item
+for visited-link.html from your history and restart if
+necessary). Then cmd-click it. The link should turn lime green.</p>
+<a href="resources/visited-link.html">Am I a visited link?</a>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/webarchive-test.html b/Source/WebCore/manual-tests/webarchive-test.html
new file mode 100644
index 0000000..ab64422
--- /dev/null
+++ b/Source/WebCore/manual-tests/webarchive-test.html
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>webarchive test</title>
+</head>
+<body>
+<p>This test verifies that webarchive files larger than 4KB can be loaded. This functionality had previously regressed due to <a href="https://bugs.webkit.org/show_bug.cgi?id=36196">https://bugs.webkit.org/show_bug.cgi?id=36196</a>. If you see a snapshot of <a href="http://webkit.org">webkit.org</a> in the iframe below, the test passed.</p>
+<iframe src="WebKitSite.webarchive" width="800" height="600"></iframe>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/whitespace-pre-affinity.html b/Source/WebCore/manual-tests/whitespace-pre-affinity.html
new file mode 100644
index 0000000..eac9040
--- /dev/null
+++ b/Source/WebCore/manual-tests/whitespace-pre-affinity.html
@@ -0,0 +1,16 @@
+<html>
+<body>
+<p>This test checks for a regression against http://bugs.webkit.org/show_bug.cgi?id=3739.</p>
+NOTES:<ol>
+<li>this MUST be checked in a build because the symptom is an assert</li>
+<li>double-click a few times on the blanks lines below</li>
+<li>if you hit the isEqualIgnoringAffinity() assert, the bug is back</li>
+</ol>
+<hr>
+<pre>One
+
+Two
+
+Three</pre>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/win/contextmenu-key.html b/Source/WebCore/manual-tests/win/contextmenu-key.html
new file mode 100644
index 0000000..7d6f734
--- /dev/null
+++ b/Source/WebCore/manual-tests/win/contextmenu-key.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+
+#outer {
+ overflow: auto;
+ width: 200px;
+ height: 200px;
+}
+
+#inner {
+ position: relative;
+ height: 400px;
+}
+
+#inner:focus {
+ background-color: lightblue;
+}
+
+#inner:active {
+ background-color: blue;
+}
+
+#h, #h2 {
+ background: rgba(255, 255, 255, 0);
+}
+
+#h {
+ position: absolute;
+ height: 200px;
+ width: 200px;
+}
+
+#h2 {
+ position: absolute;
+ top: 200px;
+ height: 200px;
+ width: 100%;
+}
+
+#h:hover,
+#h2:hover {
+ background: pink;
+}
+
+#h:active,
+#h2:active {
+ background: red;
+}
+
+pre {
+ position: absolute;
+ left: 250px;
+ top: 80px;
+}
+
+</style>
+</head>
+<body>
+
+<p>Manual test for <a href="https://bugs.webkit.org/show_bug.cgi?id=38129">bug 38129</a></p>
+
+<p>Click the div below and press the context menu key on your keyboard (Shift+F10 also works)</p>
+
+<div id=outer>
+ <div id=inner tabindex=0>
+ <div id=h2></div>
+ </div>
+</div>
+
+<div id=h></div>
+
+<pre></pre>
+
+<script>
+
+function cs(el)
+{
+ if (window.getComputedStyle)
+ return window.getComputedStyle(el, '');
+ return el.currentStyle;
+}
+
+document.addEventListener('contextmenu', function(e)
+{
+ var inner = document.querySelector('#inner');
+ var outer = document.querySelector('#outer');
+ var h = document.querySelector('#h');
+ var h2 = document.querySelector('#h2');
+ var result = [];
+
+ result.push(e.target, document.querySelector('#inner'));
+ result.push(cs(inner, '').backgroundColor, 'rgb(0, 0, 255)');
+ result.push(cs(h, '').backgroundColor, 'rgba(255, 255, 255, 0)');
+ result.push(cs(h2, '').backgroundColor, 'rgba(255, 255, 255, 0)');
+
+ var s = '';
+ for (var i = 0; i < result.length; i += 2) {
+ s += result[i] + ' == ' + result[i + 1] + ' - ' +
+ (result[i] == result[i + 1] ? 'PASS' : 'FAIL') + '<br>';
+ }
+
+ document.querySelector('pre').innerHTML = s;
+
+ return true;
+}, false);
+
+</script>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/win/contextmenu-key2.html b/Source/WebCore/manual-tests/win/contextmenu-key2.html
new file mode 100644
index 0000000..2833e58
--- /dev/null
+++ b/Source/WebCore/manual-tests/win/contextmenu-key2.html
@@ -0,0 +1,13 @@
+<div oncontextmenu="contextmenu(event)">
+Select some text in the contenteditable below and press the context menu key
+(or shift+F10). The browser should not crash.
+<div contenteditable id="a">
+<p>|content editable|</p>
+</div>
+After content editable.
+</div>
+<script>
+function contextmenu(event) {
+ document.getElementById("a").style.visibility = "hidden";
+}
+</script>
diff --git a/Source/WebCore/manual-tests/win/milliondollar.html b/Source/WebCore/manual-tests/win/milliondollar.html
new file mode 100644
index 0000000..e1d51ff
--- /dev/null
+++ b/Source/WebCore/manual-tests/win/milliondollar.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Million dollar test</title>
+<style type="text/css" media="screen">
+ body {
+ padding: 0px; margin: 0px; font-size: 12px; font-family:"Lucida Grande", Verdana, Arial, sans-serif;
+ background:#303030;
+ }
+ .ie {text-align: left; width:1000px;position:relative;visibility:hidden;z-index:1;}
+ .grid {height: 1000px; width:1000px; position:relative;z-index:153;xoverflow:hidden;}
+ .row {background:url(100grid_inv.png) #000;height: 100px; text-align: left; position:relative;width:1000px;z-index:10;}
+ #lq {width:1000px;position:relative;z-index:0;text-align:left;}
+ .bz {-webkit-perspective: 1500;-webkit-perspective-origin: 50% 325px;}
+ .fc {-webkit-transform-style: preserve-3d;-webkit-transform: rotateY(0deg) ;opacity: 1.0;}
+ @-webkit-keyframes spin_3d {
+ 0% { -webkit-transform: rotateY(0) rotateZ(0); }
+ 33% { -webkit-transform: rotateY(-20deg) rotateZ(-20deg); }
+ 65% { -webkit-transform: rotateY(20deg) rotateZ(20deg); }
+ 100% { -webkit-transform: rotateY(0deg) rotateZ(0deg); }
+ }
+ .plane > a {display:block;height:100%;width:100%;}
+ .plane {
+ position: absolute;
+ opacity:0.5;
+ background-repeat:no-repeat;
+ -webkit-transition: -webkit-transform 0.3s, opacity 0s;-webkit-backface-visibility: visible;}
+</style>
+
+<script type="text/javascript">
+function loadBlocks() {
+ document.getElementById("ie").style.visibility = "visible";
+ document.getElementById("ie").className = document.getElementById("ie").className + " bz";
+ document.getElementById("grid").className = document.getElementById("grid").className + " fc";
+ document.getElementById("lq").style.display = "none";
+
+ var cubes;
+
+ cubify(200,0,250,50);
+ cubify(800,500,900,600);
+ cubify(250,350,300,400);
+ cubify(600,600,650,650);
+ cubify(850,0,900,50);
+ cubify(650,450,700,500);
+ cubify(100,500,250,650);
+ cubify(400,600,500,700);
+ cubify(700,600,800,700);
+ cubify(350,0,500,150);
+ cubify(450,200,500,250);
+ cubify(550,250,600,300);
+ cubify(0,400,100,450);
+ cubify(600,150,650,200);
+ cubify(600,700,650,750);
+ cubify(150,850,450,950);
+ cubify(200,100,300,200);
+ cubify(750,200,950,400);
+ cubify(250,700,350,800);
+ cubify(600,800,700,900);
+ cubify(100,300,150,350);
+ cubify(0,300,50,350);
+ cubify(850,650,950,700);
+ cubify(900,100,950,150);
+ cubify(200,400,250,450);
+ cubify(200,250,250,300);
+ cubify(300,600,350,650);
+ cubify(50,200,100,250);
+ cubify(100,100,150,150);
+ cubify(0,0,5,5);
+ cubify(470,430,475,435);
+ cubify(520,480,525,485);
+ cubify(570,380,575,385);
+ cubify(550,0,600,50);
+ cubify(650,0,700,50);
+ cubify(425,390,455,400);
+ cubify(435,400,445,430);
+ cubify(525,425,530,430);
+ cubify(450,500,465,515);
+ cubify(650,100,750,200);
+ cubify(0,0,50,50);
+ cubify(700,750,900,800);
+ cubify(495,390,510,405);
+ cubify(495,445,500,450);
+ cubify(560,450,565,455);
+ cubify(460,460,465,465);
+ cubify(525,370,530,375);
+ cubify(490,420,495,425);
+ cubify(520,440,525,445);
+ cubify(510,420,515,425);
+ cubify(495,465,500,470);
+ cubify(475,405,480,410);
+ cubify(545,400,550,405);
+ cubify(485,370,490,375);
+ cubify(430,365,435,370);
+
+ document.getElementById("grid").innerHTML = cubes + document.getElementById("grid").innerHTML;
+
+ function cubify(x1, y1, x2, y2)
+ {
+ var width, height,dw;
+ width = x2 - x1;
+ height = y2 - y1;
+ if (width < height) {
+ dw = width;
+ } else {
+ dw = height;
+ }
+ cubes += addBlock(x1,y1,width,height,dw);
+ }
+
+ function addBlock(x1,y1,xf,qp,dw)
+ {
+ return "<div class='a_cube'><div class='plane one' style='background-color: red;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;-webkit-transform:rotateY(90deg) rotateZ(-90deg) translateX(0px) translateY(-"+(dw/2)+"px) translateZ("+(dw/2)+"px) translateY(0px);position:absolute;'></div><div class='plane two' style='background-color: blue;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;-webkit-transform:rotateY(90deg) rotateX(180deg) rotateZ(-90deg) translateX(0px) translateY(-"+(dw/2)+"px) translateZ("+(dw/2)+"px) translateY(0px);position:absolute;'></div><div class='plane three' style='background-color: green;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;-webkit-transform:rotateX(-90deg) translateX(0px) translateZ("+(dw/2)+"px) translateY(-"+(dw/2)+"px);position:absolute;'></div><div class='plane four' style='background-color: yellow;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;-webkit-transform:rotateY(90deg) rotateX(90deg) rotateZ(-90deg) translateY(-"+(dw/2)+"px) translateX(0px) translateZ("+(dw/2)+"px) translateY(0px);position:absolute;'></div><div class='plane five' style='background-color: gray;height:"+dw+"px;width:"+dw+"px;top:"+y1+"px;left:"+x1+"px;-webkit-transform:rotateY(0deg) translateX(0px) translateZ("+(dw)+"px) translateY(0px);position:absolute;'></div></div>";
+ }
+
+ document.getElementById("grid").style.webkitAnimation = "spin_3d 36s infinite linear";
+};
+
+</script>
+</head>
+<body onload="loadBlocks()">
+<center>
+ <div id="lq">
+ <div style="top: 252px; left: 203px; width: 196px; height: 196px; position: relative;
+ z-index: 0; text-align: left; border: 0px solid #999; padding: 0px; background: #333;
+ -moz-border-radius: 0px; -webkit-border-radius: 0px; text-align: center;">
+ $1 a pixel
+ </div>
+ </div>
+ <div class="ie" id="ie">
+ <div class="grid" id="grid">
+ <div class="row" id="row0"></div><div class="row" id="row1"></div><div class="row" id="row2"></div><div class="row" id="row3"></div><div class="row" id="row4"></div><div class="row" id="row5"></div><div class="row" id="row6"></div><div class="row" id="row7"></div><div class="row" id="row8"></div><div class="row" id="row9"></div>
+ </div>
+ </div>
+</center>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/window-close-during-parsing.html b/Source/WebCore/manual-tests/window-close-during-parsing.html
new file mode 100644
index 0000000..70dfef4
--- /dev/null
+++ b/Source/WebCore/manual-tests/window-close-during-parsing.html
@@ -0,0 +1,18 @@
+<html>
+<body>
+<p>This test checks a window.close called in the midst of parsing a page.
+ Click the buttons below to load the test pages.
+</p>
+<hr>
+<input type=button value="Run Test 1" onclick='window.open("resources/window-close-during-parsing-popup1.html")'>
+<p>If this test passes, you should see 'PASS: same script tag after close,'
+ but nothing else. In particular, you should not see onload or onunload
+ fire.
+</p>
+<hr>
+<input type=button value="Run Test 2" onclick='window.open("resources/window-close-during-parsing-popup2.html")'>
+<p>If this test passes, you should see a window open and then close.
+ If it fails, Safari will crash.
+</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/window-open-features-parsing.html b/Source/WebCore/manual-tests/window-open-features-parsing.html
new file mode 100644
index 0000000..50dc5e8
--- /dev/null
+++ b/Source/WebCore/manual-tests/window-open-features-parsing.html
@@ -0,0 +1,38 @@
+<html><head><script>
+function test() {
+ /* The lowdown on this feature string:
+ - ,=\twidth: reads as key:width value:0200px|0, which, after strtol/toInt, gives you 200
+ - =height: reads as key:height value:"", which means yes, which means 1, but the minimum size is 100, so 100
+ - 1width: reads as key:1width, an invalid key, so it doesn't override the previous width
+ - left: reads as key:left value:no, which means 0, which means aligned to the left side of the screen
+ - \ntoolBAR: reads as key:toolbar value:yes
+ - \rstatus: reads as key:status value:"", which means yes
+ - the trailing comma catches a previous mistake i made reading past the end of the string
+ */
+ var sFeatures = " ,=\twidth == = = 0200px|0=height 400,1width=400,left=nO \ntoolBAR=yeS,resizable=yess, \rstatus= ,";
+ var w = window.open("resources/popup200x100.html", undefined, sFeatures);
+ w.focus();
+}
+</script></head>
+<body>
+<p>This test checks whether parsing of the 'features' argument to window.open matches
+Win IE's behavior, except in the case of "resizable," which should always be true.</p>
+<p>The link below should open a window with the following attributes:</p>
+<ul>
+<li> A WebView exactly 200x100, such that you can see a red 1 pixel border along each edge of the WebView.
+<li> A window aligned to the left hand side of the screen.
+<li> Toolbar visible.
+<li> Statusbar visible.
+<li> Resizable.
+</ul>
+<a href="" onclick="test(); return false;">Click to test</a>
+<hr>
+<p>The link below should open a window with the following attributes:</p>
+<ul>
+<li>A window whose size matches what you would get from file->New Window.</li>
+<li>A window whose positioning matches what you would get from file->New Window.</li>
+<li>Statusbar visible.</li>
+<li>Resizable.</li>
+</ul>
+<a href="" onclick='window.open("", "", "status,resizable");'>Click to test</a>
+</body></html>
diff --git a/Source/WebCore/manual-tests/window-print-subframe.html b/Source/WebCore/manual-tests/window-print-subframe.html
new file mode 100755
index 0000000..39047b3
--- /dev/null
+++ b/Source/WebCore/manual-tests/window-print-subframe.html
@@ -0,0 +1,5 @@
+<script>
+ window.onload = function() { frames[0].print(); }
+</script>
+<p>This text in the main frame should not be printed.</p>
+<iframe src="resources/print-subframe.html">
diff --git a/Source/WebCore/manual-tests/window-sizing.html b/Source/WebCore/manual-tests/window-sizing.html
new file mode 100644
index 0000000..572998b
--- /dev/null
+++ b/Source/WebCore/manual-tests/window-sizing.html
@@ -0,0 +1,126 @@
+<html>
+<head>
+<script>
+var w;
+function Open(sFeatures)
+{
+ if (w && !w.closed)
+ w.close();
+
+ w = window.open("resources/popup200x200.html", "popup", sFeatures);
+
+}
+
+function test1()
+{
+ Open("width=200, height=200, left = 0, top = 0, scrollbars, resizable");
+
+ setConsole(document.getElementById('console1'));
+ clearConsole();
+ shouldBe("w.innerHeight", 200);
+ shouldBe("w.innerWidth", 200);
+ shouldBe("w.outerWidth", 200);
+ shouldBe("w.screenLeft", 0);
+ shouldBe("w.screenTop", 22); // empirical result of low dpi testing
+ shouldBe("w.outerHeight", 223); // empirical result of low dpi testing
+}
+
+function test2()
+{
+ console = document.getElementById('console2');
+ Open("width=200, height=200, left = 0, top = 0, scrollbars, menubar, status, toolbar, resizable");
+
+ setConsole(document.getElementById('console2'));
+ clearConsole();
+ shouldBe("w.innerHeight", 200);
+ shouldBe("w.innerWidth", 200);
+ shouldBe("w.outerWidth", 200);
+ shouldBe("w.screenLeft", 0);
+ shouldBe("w.screenTop", 22); // empirical result of low dpi testing
+ shouldBe("w.outerHeight", 313); // empirical result of low dpi testing
+}
+
+function test3()
+{
+ Open("width=200,height=200,left=" + (screen.width - 200) + ",screenY=0, resizable");
+ w.moveBy(0, screen.height - w.screenTop - w.outerHeight);
+
+ // should be no-ops
+ w.moveTo(w.screenLeft - 100, w.screenTop + 100);
+ w.moveBy(100, -100);
+ w.resizeTo(w.outerWidth - 100 , w.outerHeight - 100);
+ w.resizeBy(100, 100);
+
+ setConsole(document.getElementById('console3'));
+ clearConsole();
+ shouldBe("w.innerHeight", 200);
+ shouldBe("w.innerWidth", 200);
+ shouldBe("w.outerWidth", 200);
+ shouldBe("w.screenLeft", screen.width - 200);
+ shouldBe("w.screenTop", screen.height - w.outerHeight);
+ shouldBe("w.outerHeight", 223); // empirical result of low dpi testing
+}
+
+var console;
+function print(message, color)
+{
+ var paragraph = document.createElement("div");
+ paragraph.appendChild(document.createTextNode(message));
+ paragraph.style.fontFamily = "monospace";
+ if (color)
+ paragraph.style.color = color;
+ console.appendChild(paragraph);
+}
+
+function clearConsole()
+{
+ console.innerHTML = "";
+}
+
+function setConsole(c)
+{
+ console = c;
+}
+
+function shouldBe(a, b)
+{
+ var evalA = eval(a);
+ if (evalA == b)
+ print("PASS: " + a + " should be " + b + " and is.", "green");
+ else
+ print("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".", "red");
+}
+</script>
+</head>
+<body>
+
+<p>This test checks our support for window sizing and positioning.</p>
+<p>To test: Click each button below. Check to make sure that the window it opens has the specified attributes.
+ Also check for a series of 'PASS' messages below the button.</p>
+<p style="color:red">NOTE: Make sure to test at magnified resolutions.</p>
+<p>To test @ 2X resolution:</p>
+<ol>
+<li>Open Quartz Debug (/Developer/Applications/Performance Tools).</li>
+<li>Select Tools -> Show User Interface Resolution.</li>
+<li>Set the resolution to 2.0.</li>
+<li>Restart Safari.</li>
+</ol>
+<hr>
+
+<p>Window size (no toolbars): You should see a red 1 pixel border along every edge of this page, and no scrollbars.</p>
+<input type="button" value="open it!" onclick="test1()">
+<div id='console1'></div>
+<hr>
+
+<p>Window size (all toolbars): You should see a red 1 pixel border along every edge of this page, and no scrollbars.</p>
+<input type="button" value="open it!" onclick="test2()">
+<div id='console2'></div>
+<hr>
+
+<p>Window positioning: This window should be aligned exactly to the bottom right corner of the screen.</p>
+<input type="button" value="open it!" onclick="test3()">
+<div id='console3'></div>
+<hr>
+
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/wml/StartTests.wml b/Source/WebCore/manual-tests/wml/StartTests.wml
new file mode 100644
index 0000000..fa9f721
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/StartTests.wml
@@ -0,0 +1,35 @@
+<wml>
+<card>
+<a href="a-br-element.wml">a-br-element.wml</a><br/>
+<a href="a-element.wml">a-element.wml</a><br/>
+<a href="a-img-element.wml">a-img-element.wml</a><br/>
+<a href="access-target.wml">access-target.wml</a><br/>
+<a href="anchor-br-element.wml">anchor-br-element.wml</a><br/>
+<a href="anchor-element.wml">anchor-element.wml</a><br/>
+<a href="anchor-img-element.wml">anchor-img-element.wml</a><br/>
+<a href="card-newcontext-attr.wml">card-newcontext-attr.wml</a><br/>
+<a href="card-onenterbackward.wml">card-onenterbackward.wml</a><br/>
+<a href="card-onenterforward.wml">card-onenterforward.wml</a><br/>
+<a href="card-ontimer.wml">card-ontimer.wml</a><br/>
+<a href="deck-access-control.wml">deck-access-control.wml</a><br/>
+<a href="go-element.wml">go-element.wml</a><br/>
+<a href="input-format.wml">input-format.wml</a><br/>
+<a href="onevent-go.wml">onevent-go.wml</a><br/>
+<a href="onevent-noop.wml">onevent-noop.wml</a><br/>
+<a href="onevent-prev.wml">onevent-prev.wml</a><br/>
+<a href="onevent-refresh.wml">onevent-refresh.wml</a><br/>
+<a href="onevent-shadow.wml">onevent-shadow.wml</a><br/>
+<a href="select-element.wml">select-element.wml</a><br/>
+<a href="select-onpick-event.wml">select-onpick-event.wml</a><br/>
+<a href="setvar-element.wml">setvar-element.wml</a><br/>
+<a href="targetdeck.wml">targetdeck.wml</a><br/>
+<a href="task-go-in-anchor.wml">task-go-in-anchor.wml</a><br/>
+<a href="task-noop-in-do.wml">task-noop-in-do.wml</a><br/>
+<a href="task-prev-in-anchor.wml">task-prev-in-anchor.wml</a><br/>
+<a href="task-refresh-in-anchor.wml">task-refresh-in-anchor.wml</a><br/>
+<a href="template-go.wml">template-go.wml</a><br/>
+<a href="template-ontimer.wml">template-ontimer.wml</a><br/>
+<a href="timer.wml">timer.wml</a><br/>
+<a href="variable-substitution.wml">variable-substitution.wml</a><br/>
+</card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/a-br-element.wml b/Source/WebCore/manual-tests/wml/a-br-element.wml
new file mode 100644
index 0000000..eb89765
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/a-br-element.wml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="A element Test">
+ <p>Test for A element including BR element</p>
+ <p>
+ "Next Page" will be broken by BR element between them<br/>
+ <a href="StartTests.wml">Next <br/> page</a>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/a-element.wml b/Source/WebCore/manual-tests/wml/a-element.wml
new file mode 100644
index 0000000..71c203b
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/a-element.wml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="A element Test">
+ <p>Test for A element. <br/>When mouse moves into link, "go to StartTests.wml" will appear, click the link, will jump to StartTests.wml</p>
+ <p>
+ <a href="StartTests.wml" title="go to StartTests.wml" >Next page</a>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/a-img-element.wml b/Source/WebCore/manual-tests/wml/a-img-element.wml
new file mode 100644
index 0000000..ce538c8
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/a-img-element.wml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="A element Test">
+ <p>Test for A element including img element. </p>
+ <p>
+ <a href="StartTests.wml" title="Next Page"><img src="resources/smiley.png"/></a>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/access-target.wml b/Source/WebCore/manual-tests/wml/access-target.wml
new file mode 100644
index 0000000..ec6e51a
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/access-target.wml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card ontimer="./targetdeck.wml">
+ <timer name="t1" value="30"/>
+ <p>Test for Deck Access control in WML.</p>
+ <p>If the test passes, this deck will jump to "targetdeck.wml" after 3 second</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/anchor-br-element.wml b/Source/WebCore/manual-tests/wml/anchor-br-element.wml
new file mode 100644
index 0000000..1a1750d
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/anchor-br-element.wml
@@ -0,0 +1,10 @@
+<?xml version="1.0" ?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="Anchor Tag">
+ <p>Test for br element enclosed with anchor element</p>
+ <p>
+ <anchor><go href="StartTests.wml"/>Go to <br/>StartTests.wml</anchor>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/anchor-element.wml b/Source/WebCore/manual-tests/wml/anchor-element.wml
new file mode 100644
index 0000000..4bc4798
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/anchor-element.wml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="Anchor Tag">
+ <p>This is an anchor bound to go task<br/>
+ <anchor>
+ Next page
+ <go href="anchor-img-element.wml"/>
+ </anchor>
+ </p>
+
+ <p>This an anchor bound to prev task<br/>
+ <anchor title="Previous" >Prev page
+ <prev/>
+ </anchor>
+ </p>
+
+ <p>This an anchor bound to refresh task<br/>
+ <anchor title="Refresh">Refresh $var
+ <refresh>
+ <setvar name="var" value="me"/>
+ </refresh>
+ </anchor>
+ </p>
+
+ <p>This is an anchor contains img element, bound to prev task<br/>
+ <anchor title="click to go back">
+ <prev/>
+ <img src="resources/smiley.png"/>
+ </anchor>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/anchor-img-element.wml b/Source/WebCore/manual-tests/wml/anchor-img-element.wml
new file mode 100644
index 0000000..b8b8559
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/anchor-img-element.wml
@@ -0,0 +1,10 @@
+<?xml version="1.0" ?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="Anchor Tag">
+ <p>Test for WML img enclosed with anchor element, when the mouse move into the image, the tip "go to StartTests.wml" will appear</p>
+ <p>
+ <anchor title="go to StartTests.wml"><img src="resources/smiley.png"/> <go href="StartTests.wml"/></anchor>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/card-newcontext-attr.wml b/Source/WebCore/manual-tests/wml/card-newcontext-attr.wml
new file mode 100644
index 0000000..a02e197
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/card-newcontext-attr.wml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="firstcard" title="One">
+ <p>Test for newcontext attribute of card element</p>
+ <p>This is the first card, Click "Go" to enter card two.<br/>Because newcontext of card two is true, the history state will be clean, and the variable "$var1" won't be replaced</p>
+ <do type="accept" label="Go">
+ <go href="#secondcard">
+ <setvar name="var1" value="two"/>
+ </go>
+ </do>
+ </card>
+
+ <card id="secondcard" title="$var1" newcontext="true">
+ <p>This is the card $var1</p>
+ <p>Because newcontext of this card is true, the history state will be clean, and the variable "$var1" won't be replaced</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/card-onenterbackward.wml b/Source/WebCore/manual-tests/wml/card-onenterbackward.wml
new file mode 100644
index 0000000..acb5bf6
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/card-onenterbackward.wml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Card 1" onenterbackward="#card3">
+ <p>Test for card onenterbackward intrinsic event</p>
+ <p>Click "Go" to jump to the card2, if you go back from card2, it will jump to card3</p>
+ <anchor title="go to card2">
+ <go href="#card2">Go</go>
+ </anchor>
+ </card>
+
+ <card id="card2" title="Card 2">
+ <p>This is card2,click "Back" will back to the previous page</p>
+ <anchor>
+ Back
+ <prev/>
+ </anchor>
+ </card>
+
+ <card id="card3" title="Card 3">
+ <p>This is card3</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/card-onenterforward.wml b/Source/WebCore/manual-tests/wml/card-onenterforward.wml
new file mode 100644
index 0000000..ad22580
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/card-onenterforward.wml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Card 1" onenterforward="#card2">
+ <p>Test for card onenterforward event</p>
+ <p>Card one will jump to card two when entered forward it</p>
+ </card>
+
+ <card id="card2" title="Card 2">
+ <p>Test for card onenterforward event</p>
+ <p>This is card2, I am entered by card one forwarding</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/card-ontimer.wml b/Source/WebCore/manual-tests/wml/card-ontimer.wml
new file mode 100644
index 0000000..1d2c993
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/card-ontimer.wml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <head>
+ <meta http-equiv="Cache-Control" content="max-age=0"/>
+ </head>
+
+ <card id="card1" ontimer="#card2" title="Card one">
+ <p>Test for card ontimer intrinsic event in WML</p>
+ <timer name="time1" value="50"/>
+ <p>
+ This is card one<br/>
+ The timer is triggered by the ontimer intrinsic event(ontimer as attribute of card element)<br/>
+ When the timer is timeout(after 5s), will jump to card two.
+ </p>
+ </card>
+
+ <card id="card2">
+ This is Card two
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/deck-access-control.wml b/Source/WebCore/manual-tests/wml/deck-access-control.wml
new file mode 100644
index 0000000..a71e108
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/deck-access-control.wml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card onenterforward="targetdeck.wml">
+ <p>Test for Deck Access control in WML. </p>
+ <p>This deck will try to jump to "targetdeck.wml" when it is loaded. But it will <strong>FAIL</strong> because "targetdeck.wml" just allows "access-target.wml" to access it.</p>
+ <p>You can click 'Go' to enter 'access-target.wml', and then enter 'targetdeck.wml' from there</p>
+ <anchor title="go to access-target.wml"><go href="./access-target.wml">Go</go></anchor>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/input-format.wml b/Source/WebCore/manual-tests/wml/input-format.wml
new file mode 100644
index 0000000..d51ddfd
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/input-format.wml
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="Input">
+ <p>Test for input format in WML</p>
+ <p>
+ Password(default:*M):<input name="default"/><br/>
+ Password(6M): <input name="Pwd" type="password" format="6M"/><br/>
+ Password(AAa): <input name="Pwd2" type="password" format="AAa"/><br/>
+ one-numeric+lowercase(N*a):<input name="upper" format="N*a"/><br/>
+ Uppercase+non-numeric(AAA;size=8):<input name="upper" size="8" format="AAA"/><br/>
+ Lowercase+non-numeric(aaa;size=8;width=2):<input name="lower" size="8" width="2" format="aaa"/><br/>
+ Numeric(5N;maxlen=3):<input name="numeric" maxlength="3" format="5N"/><br/>
+ Numeric+symbols(nnn):<input name="numeric+" format="nnn"/><br/>
+ Uppercase+numeric+symbols(XXX):<input name="upper+" format="XXX"/><br/>
+ Lowercase+numeric+symbols(xxx):<input name="lower+" format="xxx"/><br/>
+ Uppercase+numeric+symbols(MMM):<input name="def_upper+" format="MMM"/><br/>
+ Lowercase+numeric+symbols(mmm):<input name="def_lower+" format="mmm"/><br/>
+ Mixed data(a\-NN*x)<input name="any" format="a\-NN*x"/><br/>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/onevent-go.wml b/Source/WebCore/manual-tests/wml/onevent-go.wml
new file mode 100644
index 0000000..0fd2458
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/onevent-go.wml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Card 1">
+ <onevent type="onenterforward">
+ <go href="#card2"/>
+ </onevent>
+ <p>Test for onevent element which binds go task with onenterforward event</p>
+ <p>when enter forward to this card, it will jump to card 2</p>
+ </card>
+
+ <card id="card2" title="Card 2">
+ <p>Test for onevent element which binds go task with onenterforward event</p>
+ <p>while card 1 is loaded, it will trigger the onenterforward event and jump to card2 immediately</p>
+ <p>This is card2</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/onevent-noop.wml b/Source/WebCore/manual-tests/wml/onevent-noop.wml
new file mode 100644
index 0000000..a072916
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/onevent-noop.wml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Card 1">
+ <onevent type="onenterforward">
+ <noop/>
+ </onevent>
+ <p>Test for onevent element which binds noop task with onenterforward event</p>
+ <p>when enter forward to this card, it won't do anything as if the onenterforward event wasn't triggered</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/onevent-prev.wml b/Source/WebCore/manual-tests/wml/onevent-prev.wml
new file mode 100644
index 0000000..6c909c2
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/onevent-prev.wml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Card 1">
+ <p>Test for onevent element which binds prev task with onenterforward event</p>
+ <p>Clicking "Go" will cause it to jump to the card2, but which binds prev task to onenterforward event within onevent element, as a result, it will jump back to card 1</p>
+ <anchor title="Go to card2">Go
+ <go href="#card2"/>
+ </anchor>
+ </card>
+
+ <card id="card2" title="Card 2">
+ <p>Test for onevent element which binds prev task with onenterforward event</p>
+ <p>This is card2. When card 2 is entered forward, it will jump back to the previous page</p>
+ <onevent type="onenterforward">
+ <prev/>
+ </onevent>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/onevent-refresh.wml b/Source/WebCore/manual-tests/wml/onevent-refresh.wml
new file mode 100644
index 0000000..7ca57f0
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/onevent-refresh.wml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Card 1">
+ <timer name="T" value="30"/>
+ <onevent type="ontimer">
+ <refresh>
+ <setvar name="var" value="VARIABLE"/>
+ </refresh>
+ </onevent>
+
+ <p>Test for onevent element which binds refresh task with ontimer event</p>
+ <p>When the timer timeout(3s), the page will be refresh. As a consequence, we can see the following variable reference has been substituted</p>
+ <p align="center"> Here is a variable : var = $var</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/onevent-shadow.wml b/Source/WebCore/manual-tests/wml/onevent-shadow.wml
new file mode 100644
index 0000000..cdd0459
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/onevent-shadow.wml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <template>
+ <onevent type="onenterforward">
+ <go href="#card2"/>
+ </onevent>
+ </template>
+
+ <card id="card1" title="Card One">
+ <onevent type="onenterforward">
+ <go href="#card3"/>
+ </onevent>
+
+ <p>Test for onevent shadowing in WML</p>
+ <p>The card-level onevent will shadow the deck-level onevent. As a result, card 1 won't jump to card2 but
+ to card 3 according to the card-level onevent's requirement. After entered the card 3, the deck-level onevent
+ element isn't shadowed by this card, so it will jump to card 2 immediately.</p>
+ </card>
+
+ <card id="card2" title="Card two" onenterforward="">
+ <p>This is card 2</p>
+ </card>
+
+ <card id="card3" title="Card Three">
+ <p>This is card 3</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/resources/smiley.png b/Source/WebCore/manual-tests/wml/resources/smiley.png
new file mode 100644
index 0000000..5bcc67a
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/resources/smiley.png
Binary files differ
diff --git a/Source/WebCore/manual-tests/wml/select-element.wml b/Source/WebCore/manual-tests/wml/select-element.wml
new file mode 100644
index 0000000..ca66cdb
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/select-element.wml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Select Test">
+ <p>Test for select element in WML</p>
+ <p>You can select one or more options, and then click 'Answer', the second card will tell you what you selected</p>
+ <p>
+ <select name="cars" title="SELECT" multiple="true">
+ <option value="volvo" >Volvo</option>
+ <option value="fiat">Fiat</option>
+ <option value="saab">Saab</option>
+ <option value="audi">Audi</option>
+ </select>
+ </p>
+
+ <do type="accept" label="Answer">
+ <go href="#card2"/>
+ </do>
+ </card>
+
+ <card id="card2" title="Answer">
+ <p>You selected: $(cars)</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/select-onpick-event-crash.wml b/Source/WebCore/manual-tests/wml/select-onpick-event-crash.wml
new file mode 100644
index 0000000..07d0262
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/select-onpick-event-crash.wml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card>
+ <select name="result" dmultiple="true">
+ <option onpick="#card2" value="foo">Foo</option>
+ <option onpick="#card2" value="bar">Bar</option>
+ </select>
+ </card>
+
+ <card id="card2">Test pass, if it didn't crash.</card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/select-onpick-event.wml b/Source/WebCore/manual-tests/wml/select-onpick-event.wml
new file mode 100644
index 0000000..0def1a7
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/select-onpick-event.wml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card>
+ <p>Test for select onpick intrinsic event in WML</p>
+ <p>When you select the 'Lion' option, will jump to StartTests.wml</p>
+ Please choose your favourite animal:<br/>
+ <select name="X" multiple="true">
+ <option value="D">Dog</option>
+ <option value="C">Cat</option>
+ <option value="L" onpick="StartTests.wml">Lion</option>
+ </select>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/setvar-element.wml b/Source/WebCore/manual-tests/wml/setvar-element.wml
new file mode 100644
index 0000000..d78f20e
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/setvar-element.wml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="firstcard" title="Test for Setvar element">
+ <p>Test for setvar element in WML </p>
+ <p>This is the first card , has variable: VAR='$var'</p>
+ <p>Click "Refresh" will update the value of VAR varaible which specified by setvar element</p>
+
+ <do name="Refresh" type="accept">
+ <refresh>
+ <setvar name="var" value="VALUE"/>
+ </refresh>
+ </do>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/targetdeck.wml b/Source/WebCore/manual-tests/wml/targetdeck.wml
new file mode 100644
index 0000000..1da2dbe
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/targetdeck.wml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <head>
+ <access domain="localhost" path="access-target.wml"/>
+ </head>
+
+ <card>
+ <p>Test for Deck Access control in WML.</p>
+ <p>This is the targetdeck, only './access-target.wml" can access me</p>
+ <a href="StartTests.wml">Next page</a>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/task-go-in-anchor.wml b/Source/WebCore/manual-tests/wml/task-go-in-anchor.wml
new file mode 100644
index 0000000..a6578d4
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/task-go-in-anchor.wml
@@ -0,0 +1,9 @@
+<?xml version="1.0" ?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="Anchor Tag">
+ <p>Test for WML go task enclosed with anchor element</p>
+ <p>click 'Next page' to go to StartTests.wml</p>
+ <p><anchor>Next page<go href="StartTests.wml"/></anchor></p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/task-prev-in-anchor.wml b/Source/WebCore/manual-tests/wml/task-prev-in-anchor.wml
new file mode 100644
index 0000000..3972b72
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/task-prev-in-anchor.wml
@@ -0,0 +1,11 @@
+<?xml version="1.0" ?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="Anchor Tag">
+ <p>Test for WML prev task enclosed with anchor element </p>
+ <p>click 'prev page' to go to previous page if it is not the first page in history</p>
+ <p>
+ <anchor>Prev page<prev/></anchor>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/task-refresh-in-anchor.wml b/Source/WebCore/manual-tests/wml/task-refresh-in-anchor.wml
new file mode 100644
index 0000000..48bb882
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/task-refresh-in-anchor.wml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card title="$T">
+ <p>Test for refresh task within WML anchor element.<br/>click "Refresh" will refresh this page, as a result the page title will be updated.</p>
+ <p>
+ <anchor>
+ Refresh
+ <refresh>
+ <setvar name="T" value="Test refresh task"/>
+ </refresh>
+ </anchor>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/template-go.wml b/Source/WebCore/manual-tests/wml/template-go.wml
new file mode 100644
index 0000000..e8cca16
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/template-go.wml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <template>
+ <do name="go" type="accept" label="Template Go">
+ <go href="#card2"/>
+ </do>
+ </template>
+
+ <card id="card1" title="Card 1">
+ <p>Test for template element in WML. Template go button is global</p>
+ <p>This is Card one, click 'Template Go' to jump to Card two</p>
+ </card>
+
+ <card id="card2" title="Card 2">
+ <p>This is card two.<br/>The global template Go button is still visible for me</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/template-ontimer.wml b/Source/WebCore/manual-tests/wml/template-ontimer.wml
new file mode 100644
index 0000000..b7c0ef6
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/template-ontimer.wml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
+"http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <template ontimer="#card2"/>
+
+ <card id="card1">
+ <p>Test for template ontimer event in WML</p>
+ <p>This is Card one,we will jump to card 2 after 5s because of the template ontimer event</p>
+ <timer value="50"/>
+ </card>
+
+ <card id="card2" title="card 2">
+ <p>This is card 2</p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/timer.wml b/Source/WebCore/manual-tests/wml/timer.wml
new file mode 100644
index 0000000..fb47950
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/timer.wml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <head>
+ <meta http-equiv="Cache-Control" content="max-age=0"/>
+ </head>
+
+ <card id="card1" ontimer="#card2" title="Card one">
+ <p>This test case is used to test timer in WML </p>
+ <timer name="time1" value="50"/>
+ <p>
+ This is card one<br/>
+ The timer is triggered by the ontimer intrinsic event(ontimer as attribute of card element)<br/>
+ When the timer is timeout(after 5s), will jump to card two.
+ </p>
+ </card>
+
+ <card id="card2" title="Card two">
+ <onevent type="ontimer">
+ <go href="#card1"/>
+ </onevent>
+ <timer name="timer2" value="30"/>
+
+ <p>
+ This is card Two!<br/>
+ The timer is triggered by the ontimer intrinsic event(ontimer is specified by onevent element)<br/>
+ When the timer is timeout(after 3s), will jump back to card one.
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/wml/variable-substitution.wml b/Source/WebCore/manual-tests/wml/variable-substitution.wml
new file mode 100644
index 0000000..728f965
--- /dev/null
+++ b/Source/WebCore/manual-tests/wml/variable-substitution.wml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
+<wml>
+ <card id="card1" title="Test variable substitution">
+ <p>Test for variable substitution</p>
+ <p>Click "Refersh" to refresh the card, and the varaible references in the card will be substitued</p>
+ <anchor>Refresh<br/>
+ <refresh>
+ <setvar name="hi" value="hello"/>
+ <setvar name="name" value=" Yi chao"/>
+ <setvar name="name2" value="$(name:e)"/>
+ <setvar name="name3" value="$(name2:u)"/>
+ </refresh>
+ </anchor>
+
+ <p>set hi = "hello", name = " Yi chao"<br/>
+ <![CDATA[$(hi),$name]]> => $(hi),$name<br/>
+ <![CDATA[$hi,$(name:escape)]]> => $hi,$(name:escape)<br/>
+ <![CDATA[$hi,$(name:e)]]> => $hi,$(name:e)<br/>
+ <![CDATA[$hi,$(name:u)]]> => $hi,$(name:u)<br/>
+ </p>
+
+ <p>set name2 = $$(name:e)<br/>
+ <![CDATA[$(hi),$(name2)]]> => $(hi),$(name2)<br/>
+ <![CDATA[$(hi),$$(name:e)]]> => $(hi),$$(name:e)<br/>
+ </p>
+
+ <p>set name3 = $$(name2:u)<br/>
+ <![CDATA[$(hi),$name3]]> => $(hi),$name3<br/>
+ <![CDATA[$(hi),$(name3:e)]]> => $(hi),$(name3:e)<br/>
+ </p>
+ </card>
+</wml>
diff --git a/Source/WebCore/manual-tests/word-spacing-highlight.html b/Source/WebCore/manual-tests/word-spacing-highlight.html
new file mode 100644
index 0000000..01b69f9
--- /dev/null
+++ b/Source/WebCore/manual-tests/word-spacing-highlight.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Highlighting with word spacing</title>
+</head>
+<body>
+<p style="word-spacing:5em;">
+M xylophone
+</p>
+<p style="margin-left:1em;">
+&#x2191; click there and drag to the right
+</p>
+</body>
+</html> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/wordXML-selectall.xml b/Source/WebCore/manual-tests/wordXML-selectall.xml
new file mode 100644
index 0000000..900311b
--- /dev/null
+++ b/Source/WebCore/manual-tests/wordXML-selectall.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/2/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:SL="http://schemas.microsoft.com/schemaLibrary/2003/2/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/2/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xml:space="preserve"><o:DocumentProperties></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/></w:fonts><w:docPr></w:docPr><w:body><wx:sect><w:p><w:pPr></w:pPr><w:r><w:rPr><w:rFonts w:ascii="Helvetica" w:h-ansi="Helvetica" w:cs="Helvetica"/><wx:font wx:val="Helvetica"/><w:sz w:val="24"/><w:sz-cs w:val="24"/></w:rPr><w:t>Simply open this document and "Select all" (cmd-a). That was enough to crash. See &lt;rdar://problem/4214259&gt;.</w:t></w:r></w:p><w:sectPr><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/></w:sectPr></wx:sect></w:body></w:wordDocument> \ No newline at end of file
diff --git a/Source/WebCore/manual-tests/write-after-open.html b/Source/WebCore/manual-tests/write-after-open.html
new file mode 100644
index 0000000..e4c2f4b
--- /dev/null
+++ b/Source/WebCore/manual-tests/write-after-open.html
@@ -0,0 +1,42 @@
+<html>
+<body>
+<script>
+i = 0;
+windowArgs = "top=100, left=100, height=200, width=200";
+windowName = "";
+
+w = window.open("", windowName + i++, windowArgs);
+w.document.write("PASS: document.write after window.open(\"\", ...) worked.");
+w.document.close();
+
+w = window.open("", windowName + i++, windowArgs);
+w.document.open();
+w.document.write("PASS: document.write after window.open(\"\", ...) worked.");
+w.document.close();
+
+
+w = window.open("about:blank", windowName + i++, windowArgs);
+w.document.write("PASS: document.write after window.open(\"about:blank\", ...) worked.");
+w.document.close();
+
+w = window.open("about:blank", windowName + i++, windowArgs);
+w.document.open();
+w.document.write("PASS: document.write after window.open(\"about:blank\", ...) worked.");
+w.document.close();
+
+
+w = window.open("resources/write-after-open-popup.html", windowName + i++, windowArgs);
+w.document.write("PASS: document.write after window.open(\"resources/write-after-open-popup.html\", ...) worked.");
+w.document.close();
+
+w = window.open("resources/write-after-open-popup.html", windowName + i++, windowArgs);
+w.document.open();
+w.document.write("PASS: document.write after window.open(\"resources/write-after-open-popup.html\", ...) worked.");
+w.document.close();
+</script>
+
+<p>This test checks for regression against: <rdar://problem/3461547> can't use document.writeln() on windows opened via window.open("about:blank") in same function. </p>
+
+<p>On success, 6 windows will open, one on top of the other, each containing a PASS message.</p>
+</body>
+</html>
diff --git a/Source/WebCore/manual-tests/xhr-failure-behind-alert.html b/Source/WebCore/manual-tests/xhr-failure-behind-alert.html
new file mode 100644
index 0000000..23b2a83
--- /dev/null
+++ b/Source/WebCore/manual-tests/xhr-failure-behind-alert.html
@@ -0,0 +1,10 @@
+Connecting to a server that doesn't respond.
+Run this from a local file to avoid cross-origin code path.
+
+<script>
+var req = new XMLHttpRequest;
+req.open("GET", "http://127.0.0.1:7", true);
+req.send();
+req.onerror = function() { document.write("onerror<br>"); }
+alert("PASSED if no crash or assertion failure");
+</script>