diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-01 22:31:35 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-01 22:31:35 +0000 |
commit | de56f378336660dcc848763c80267a5e063ae47d (patch) | |
tree | 7f551b88923b35bc4022ce6ab3a3f602fb60d91c /webkit/tools | |
parent | dc4f63c80cb90efe594131030aad6776e5945fcc (diff) | |
download | chromium_src-de56f378336660dcc848763c80267a5e063ae47d.zip chromium_src-de56f378336660dcc848763c80267a5e063ae47d.tar.gz chromium_src-de56f378336660dcc848763c80267a5e063ae47d.tar.bz2 |
Merge the chrome_webkit_merge_branch back on to trunk. This brings us
up to webkit@36102.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2778 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/tools')
-rw-r--r-- | webkit/tools/layout_tests/test_lists/tests_fixable.txt | 626 | ||||
-rw-r--r-- | webkit/tools/layout_tests/test_lists/tests_ignored.txt | 17 | ||||
-rw-r--r-- | webkit/tools/npapi_layout_test_plugin/PluginObject.cpp | 501 | ||||
-rw-r--r-- | webkit/tools/test_shell/image_decoder_unittest.cc | 4 | ||||
-rw-r--r-- | webkit/tools/test_shell/keyboard_unittest.cc | 253 | ||||
-rw-r--r-- | webkit/tools/test_shell/layout_test_controller.cc | 17 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell.cc | 13 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell.vcproj | 2 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_webview_delegate.cc | 12 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_webview_delegate.h | 1 |
10 files changed, 1027 insertions, 419 deletions
diff --git a/webkit/tools/layout_tests/test_lists/tests_fixable.txt b/webkit/tools/layout_tests/test_lists/tests_fixable.txt index 7f2e747..b2b6f38 100644 --- a/webkit/tools/layout_tests/test_lists/tests_fixable.txt +++ b/webkit/tools/layout_tests/test_lists/tests_fixable.txt @@ -20,7 +20,7 @@ V8 | KJS # LayoutTests/editing/execCommand/copy-without-selection.html = FAIL | // Works fine when run stand-alone. Not needed for Beta. // Also skipped by Apple on Windows, due to intermittent failure // (rdar://5313536) -V8 | KJS # LayoutTests/fast/dom/frame-loading-via-document-write.html = FAIL +V8 | KJS # LayoutTests/fast/dom/frame-loading-via-document-write.html = FAIL | TIMEOUT // ----------------------------------------------------------------- // FLAKY TESTS @@ -58,8 +58,6 @@ V8 # LayoutTests/fast/dom/Window/setting-properties-on-closed-window.html = PASS // Consistently fails on KJS only KJS # LayoutTests/http/tests/security/cross-frame-access-call.html = FAIL -// Maybe flaky and need to be forked? -V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-enumeration.html = TIMEOUT // Difference in caching headers V8 | KJS # LayoutTests/http/tests/xmlhttprequest/cache-override.html = FAIL // LightTPD doesn't accept unknown HTTP methods @@ -68,6 +66,13 @@ V8 | KJS # LayoutTests/http/tests/xmlhttprequest/methods-async.html = TIMEOUT // LightTPD doesn't accept unknown HTTP methods and passes CGIs a Content-Type // even when a request didn't send the header. V8 | KJS # LayoutTests/http/tests/xmlhttprequest/methods.html = FAIL +// http://crbug.com/2975 : Need to support upload progress notifications in +// the resource bridge. +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/upload-onload-event.html = FAIL +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/upload-onprogress-event.html = FAIL +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/upload-progress-events.html = FAIL +// http://crbug.com/2978 : Need to implement XMLHttpRequest.dispatchEvent. +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/event-target.html = FAIL # Bug 1341582 V8 | KJS # LayoutTests/svg/dom/animated-tearoff-equality.xhtml = FAIL | PASS @@ -158,12 +163,6 @@ V8 | KJS # LayoutTests/http/tests/navigation/onload-navigation-iframe.html = FAI // PENDING TESTS (forked to pending/, need to be sent upstream) // ----------------------------------------------------------------- -// BUG 792023. See http://bugs.webkit.org/show_bug.cgi?id=15690 and 16494 -// Fixed tests are in pending directory. (The originals still pass consistently -// in KJS.) -V8 # LayoutTests/dom/html/level2/html/HTMLFrameElement09.html = FAIL -V8 # LayoutTests/dom/html/level2/html/HTMLIFrameElement11.html = FAIL - // Bug 972450: These tests don't work with fast timers due to setTimeout // races. Pending versions have these fixed. V8 | KJS # LayoutTests/fast/history/history_reload.html = PASS | FAIL @@ -172,6 +171,9 @@ V8 | KJS # LayoutTests/fast/repaint/bugzilla-6473.html = PASS | FAIL // Bug 982608: test had a wrong result for one condition V8 | KJS # LayoutTests/plugins/destroy-stream-twice.html = FAIL +// http://crbug.com/2858 : no support for postURL with file data. +V8 | KJS # LayoutTests/http/tests/plugins/post-url-file.html = FAIL + // This test has been modified and placed in pending, so we ignore the original // until we get our modification into WebKit. V8 | KJS # LayoutTests/security/block-test.html = PASS | FAIL @@ -212,18 +214,10 @@ V8 | KJS # pending/css/border-height.html = FAIL // Other // ----------------------------------------------------------------- -// Bug https://bugs.webkit.org/show_bug.cgi?id=20265 -// The cookie used in this test has expired. We should get an updated test -// when we stop pulling the Safari 3.1 branch. Until then, ignore this failure. -V8 | KJS # LayoutTests/fast/cookies/local-file-can-set-cookies.html = FAIL - // Bug 865472, this should just need proper pixel test rebaselining. // Also skipped by Apple on Windows (rdar://5723191). V8 # LayoutTests/http/tests/navigation/javascriptlink-frames.html = FAIL -// Bug 1235433, javascript can execute before stylesheets are completely loaded. -V8 | KJS # LayoutTests/http/tests/local/stylesheet-and-script-load-order.html = FAIL - // Bug: 1143492 // Window status should always return a string object // WebKit does this to match IE, FF also fails this test. @@ -282,10 +276,6 @@ V8 | KJS # LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.htm // which depends on that functionality. So we ignore this for beta. V8 | KJS # LayoutTests/plugins/netscape-enumerate.html = FAIL -// Bug: 767628 -// This fails due to scrolling and event differences. -V8 | KJS # LayoutTests/fast/forms/focus-selection-textarea.html = FAIL - // This tests the screen's pixel depth, which we don't set on the buildbots // so it depends on the users settings. Making this a broken test for us. // The test must be fixed to not depend on user settings and rebaselined. post-beta. @@ -359,25 +349,17 @@ V8 | KJS # LayoutTests/svg/custom/svgsvgelement-ctm.xhtml = FAIL // Bug 1204878 V8 | KJS # LayoutTests/http/tests/navigation/post-goback1.html = FAIL -// Bug 1203341: Requires a working postMessage implementation -V8 # LayoutTests/http/tests/security/cross-frame-access-delete.html = TIMEOUT -V8 # LayoutTests/http/tests/security/cross-frame-access-history-put.html = TIMEOUT -V8 # LayoutTests/http/tests/security/cross-frame-access-location-put.html = TIMEOUT -V8 # LayoutTests/http/tests/security/postMessage/domain-and-uri-unaffected-by-base-tag.html = TIMEOUT -V8 # LayoutTests/http/tests/security/postMessage/domain-unaffected-by-document-domain.html = TIMEOUT -V8 # LayoutTests/http/tests/security/postMessage/javascript-page-still-sends-domain.html = TIMEOUT -V8 # LayoutTests/http/tests/messaging/cross-domain-message-send.html = TIMEOUT - // Bug 1135948: Fails because we cannot call plugins as functions. V8 # LayoutTests/plugins/bindings-test.html = FAIL // Bug 1124435: deal with the deletion UI in a later release. V8 | KJS # LayoutTests/editing/deleting/deletionUI-single-instance.html = FAIL -// Bug 871718: This test loads data: URLs into frames and sets queries on then. +// Bug 871718: These tests load data: URLs into frames and sets queries on then. // This is totally broken. This layout test should be rewitten so that the // subframes are not data URLs (probably we want files in the resources dir.). V8 | KJS # LayoutTests/fast/encoding/char-encoding.html = TIMEOUT +V8 | KJS # LayoutTests/fast/encoding/char-decoding.html = FAIL | TIMEOUT // Bug 1130795: since we don't have Aqua-themed controls, don't ignore the // box-shadow properties of controls that request Aqua theming. But since Aqua @@ -700,13 +682,6 @@ V8 # LayoutTests/fast/canvas/gradient-empty-path.html = FAIL // Fails on webkit windows as well. V8 | KJS # LayoutTests/fast/events/attempt-scroll-with-no-scrollbars.html = FAIL -// Bug: 1170198 -// Intentionally failing to avoid XML External Entity exploit -// until https://bugs.webkit.org/show_bug.cgi?id=19199 is fixed. -V8 | KJS # LayoutTests/fast/parser/external-entities-in-xslt.xml = FAIL -V8 | KJS # LayoutTests/fast/xsl/dtd-in-source-document.xml = FAIL -V8 | KJS # LayoutTests/fast/xsl/xslt-second-level-import.xml = FAIL - // Bug 1226853: Fails on v8-latest after const changes (r123300). Test // has been rebaselined (don't declare const x twice). V8 # LayoutTests/fast/js/const.html = FAIL @@ -789,3 +764,578 @@ V8 # pending/http/tests/security/cross-frame-access-protocol.html = PASS | TIMEO // See bug # 2307 V8 # LayoutTests/fast/js/date-DST-time-cusps.html = FAIL | PASS V8 # LayoutTests/fast/js/date-big-setdate.html = FAIL | PASS + +# These three tests have their results changed on WebKit trunk that matches our +# current results: http://trac.webkit.org/changeset/36652 +# When we pick up that revision of WebKit, we can remove these exceptions. +V8 # LayoutTests/fast/events/onunload.html = FAIL +V8 # LayoutTests/fast/events/onunload-window-property.html = FAIL +V8 # LayoutTests/fast/forms/button-state-restore.html = FAIL + +# V8 doesn't stable sort. This is not required and may never be fixed. It is +# tracked by: http://code.google.com/p/v8/issues/detail?id=90 +V8 # LayoutTests/fast/js/comparefn-sort-stability.html = FAIL +V8 # LayoutTests/fast/js/sort-stability.html = FAIL + +# Apparently V8 date handling: +# http://code.google.com/p/v8/issues/detail?id=91 +V8 # LayoutTests/fast/js/date-set-to-nan.html = FAIL + +# These require application cache to be enabled. Skip the tests because +# they're all timing out. TODO(tc): Upstream changes to the test so they +# fail quickly if window.applicationCache is undefined (then we don't have to +# skip them). +# http://crbug.com/2844 +V8 | KJS # SKIP : LayoutTests/http/tests/appcache = TIMEOUT | FAIL + +# Depends on postMessage in a way we don't support: +# http://code.google.com/p/chromium/issues/detail?id=2857 +V8 # LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame-uppercase.html = FAIL +V8 # LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame.html = FAIL + +# V8 failures as a result of the WebKit merge. +# http://code.google.com/p/v8/issues/detail?id=92 +V8 # LayoutTests/fast/js/constructor-attributes.html = FAIL +V8 # LayoutTests/fast/js/eval-cross-window.html = FAIL +V8 # LayoutTests/fast/js/eval-keyword-vs-function.html = FAIL +V8 # LayoutTests/fast/js/exception-expression-offset.html = FAIL +V8 # LayoutTests/fast/js/exception-sequencing-binops2.html = FAIL +V8 # LayoutTests/fast/js/exception-try-finally-scope-error.html = FAIL +V8 # LayoutTests/fast/js/function-dot-arguments-and-caller.html = FAIL +V8 # LayoutTests/fast/js/function-name.html = FAIL +V8 # LayoutTests/fast/js/global-recursion-on-full-stack.html = FAIL +V8 # LayoutTests/fast/js/invalid-syntax-for-function.html = FAIL +V8 # LayoutTests/fast/js/pic/cached-prototype-setter.html = FAIL +V8 # LayoutTests/fast/js/removing-Cf-characters.html = FAIL +V8 # LayoutTests/fast/js/static-scope-object.html = FAIL +V8 # LayoutTests/fast/js/delete-getters-setters.html = FAIL +V8 # LayoutTests/fast/js/function-toString-object-literals.html = FAIL + +# Console output won't have line numbers until V8 gives us a way to get that +# information. <http://crbug.com/2960> +V8 # LayoutTests/fast/dom/Window/console-functions.html = FAIL + +# Shadows don't render correctly for these tests. +# http://code.google.com/p/chromium/issues/detail?id=2969 +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-1.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-2.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-3.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-4.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-5.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-6.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/shadow-offset-7.html = FAIL +V8 | KJS # LayoutTests/fast/css/shadow-multiple.html = FAIL + +# There appears to be some parsing error. These tests give "successfullyParsed +# should be true (of type boolean). Was undefined (of type undefined)." +# http://code.google.com/p/chromium/issues/detail?id=2976 +V8 | KJS # LayoutTests/fast/canvas/canvas-invalid-fillstyle.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-invalid-strokestyle.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-ImageData-behaviour.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-alphaImageData-behavior.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-putImageData.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/drawImage-with-negative-source-destination.html = FAIL + +# getImageData isn't supported on canvas. +# http://code.google.com/p/chromium/issues/detail?id=2974 +V8 | KJS # LayoutTests/fast/canvas/canvas-pattern-behaviour.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-getImageData.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-longlived-context.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-path-with-inf-nan-dimensions.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-save-restore-with-path.html = FAIL + +# Incorrect rendering - the pattern does not appear (unknown why). +# http://code.google.com/p/chromium/issues/detail?id=2973 +V8 | KJS # LayoutTests/fast/canvas/canvas-bg.html = FAIL + +# We don't implement toDataURL. +# http://code.google.com/p/chromium/issues/detail?id=2972 +V8 | KJS # LayoutTests/fast/canvas/toDataURL-noData.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/toDataURL-supportedTypes.html = FAIL + +# layoutTestController.setStopProvisionalFrameLoads needs implementing +# http://code.google.com/p/chromium/issues/detail?id=2980 +V8 | KJS # LayoutTests/fast/loader/stop-provisional-loads.html = FAIL + +# Our shadows looks wrong. The text not having shadows is to be expected, but +# it looks like we're missing a red shadow that Safari has. +# http://code.google.com/p/chromium/issues/detail?id=2982 +V8 | KJS # LayoutTests/fast/repaint/shadow-multiple-horizontal.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/shadow-multiple-strict-horizontal.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/shadow-multiple-strict-vertical.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/shadow-multiple-vertical.html = FAIL + +# Transition tests fail. +# http://code.google.com/p/chromium/issues/detail?id=2996 +V8 | KJS # LayoutTests/transitions/transition-end-event-all-properties.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-attributes.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-container.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-left.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-multiple-01.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-multiple-02.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-multiple-03.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-multiple-04.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-nested.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-transform.html = FAIL +V8 | KJS # LayoutTests/transitions/transition-end-event-window.html = FAIL + +# These form tests look correct, but aren't detected as such and spit out FAIL. +# http://code.google.com/p/chromium/issues/detail?id=2998 +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-001.html = FAIL +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-002.html = FAIL +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-003.html = FAIL +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-004.html = FAIL +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-005.html = FAIL +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-006.html = FAIL +V8 | KJS # LayoutTests/fast/forms/autofocus-opera-008.html = FAIL + +# This test times out for an unknown reason +# http://code.google.com/p/chromium/issues/detail?id=3005 +V8 | KJS # LayoutTests/fast/events/tabindex-focus-blur-all.html = TIMEOUT + +# These tests have different mouse click messages that expected. This could +# be a bug or an expected platform difference. +# http://code.google.com/p/chromium/issues/detail?id=3007 +V8 | KJS # LayoutTests/fast/events/mouse-click-events.html = FAIL +V8 | KJS # LayoutTests/fast/events/mouseup-from-button2.html = FAIL + +# Regression from the webkit merge submitting forms to reference fragments. +# http://code.google.com/p/chromium/issues/detail?id=3008 +V8 | KJS # LayoutTests/fast/forms/submit-to-url-fragment.html = FAIL + +# These tests display "RenderPartObject" instead of "RenderImage". +# http://code.google.com/p/chromium/issues/detail?id=3009 +V8 | KJS # LayoutTests/fast/images/embed-image.html = FAIL +V8 | KJS # LayoutTests/fast/images/object-image.html = FAIL + +# Displays messages of the form +# "CONSOLE MESSAGE: line 27: Uncaught TypeError: Cannot ... of undefined". +# http://code.google.com/p/chromium/issues/detail?id=3010 +V8 | KJS # LayoutTests/fast/css/variables/alternate-syntax/color-hex-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/alternate-syntax/remove-variable-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/alternate-syntax/set-variable-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/color-hex-test.html = FAIL + +// ---------------------------------------------------------------------------- +// NEW FOR THE MERGE +// +// These tests need to have their output inspected to make sure it's reasonable +// and then baselined if necessary. +// ---------------------------------------------------------------------------- + +V8 | KJS # LayoutTests/accessibility = FAIL +V8 | KJS # LayoutTests/css3/keyframes-rule.html = FAIL +V8 | KJS # LayoutTests/css3/transform-value-types.html = FAIL +V8 | KJS # LayoutTests/dom/html/level2/html/HTMLFormElement10.html = FAIL | TIMEOUT +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFormElement10.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement01.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement02.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement03.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement04.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement05.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement06.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement07.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameElement08.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameSetElement01.xhtml = FAIL +V8 | KJS # LayoutTests/dom/xhtml/level2/html/HTMLFrameSetElement02.xhtml = FAIL +V8 | KJS # LayoutTests/editing/execCommand/16049.html = FAIL +V8 | KJS # LayoutTests/editing/pasteboard/5780697-2.html = FAIL +V8 | KJS # LayoutTests/editing/selection/5714333.html = FAIL +V8 | KJS # LayoutTests/editing/selection/move-left-right.html = FAIL +V8 | KJS # LayoutTests/editing/selection/move-past-trailing-space.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/background-origin-root-element.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/background-position-1.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/background-position-rounding.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/mask-composite.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/repeat/mask-negative-offset-repeat.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/svg-as-mask.html = FAIL +V8 | KJS # LayoutTests/fast/block/basic/adding-near-anonymous-block.html = FAIL +V8 | KJS # LayoutTests/fast/block/basic/min-pref-width-nowrap-floats.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/br-with-clear-2.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/br-with-clear.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/clamped-right-float.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/editable-text-overlapping-float.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/float-on-zero-height-line.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/narrow-after-wide.html = FAIL +V8 | KJS # LayoutTests/fast/block/positioning/move-with-auto-width.html = FAIL +V8 | KJS # LayoutTests/fast/borders/block-mask-overlay-image.html = FAIL +V8 | KJS # LayoutTests/fast/borders/border-color-inherit.html = FAIL +V8 | KJS # LayoutTests/fast/borders/border-image-omit-right-slice.html = FAIL +V8 | KJS # LayoutTests/fast/borders/fieldsetBorderRadius.html = FAIL +V8 | KJS # LayoutTests/fast/borders/inline-mask-overlay-image.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-text-alignment.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-text-baseline.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Document/createAttributeNS-namespace-err.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Document/createElementNS-namespace-err.html = FAIL +V8 | KJS # LayoutTests/fast/dom/documenturi-assigned-junk-implies-relative-urls-do-not-resolve.html = FAIL +V8 | KJS # LayoutTests/fast/dom/gc-acid3.html = FAIL +V8 | KJS # LayoutTests/fast/dom/HTMLDocument/activeElement.html = FAIL +V8 | KJS # LayoutTests/fast/dom/HTMLDocument/hasFocus.html = FAIL | TIMEOUT +V8 | KJS # LayoutTests/fast/dom/SelectorAPI/NSResolver-exceptions.xhtml = FAIL +V8 | KJS # LayoutTests/fast/dom/SelectorAPI/resig-SelectorsAPI-test.xhtml = FAIL +V8 | KJS # LayoutTests/fast/text/align-center-rtl-spill.html = FAIL +V8 | KJS # LayoutTests/fast/text/apply-start-width-after-skipped-text.html = FAIL +V8 | KJS # LayoutTests/fast/text/fixed-pitch-control-characters.html = FAIL +V8 | KJS # LayoutTests/fast/text/selection-painted-separately.html = FAIL +V8 | KJS # LayoutTests/fast/text/soft-hyphen-2.html = FAIL +V8 | KJS # LayoutTests/fast/text/soft-hyphen-3.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Window/closure-access-after-navigation-iframe.html = FAIL +V8 | KJS # LayoutTests/fast/frames/frameset-style-recalc.html = FAIL +V8 | KJS # LayoutTests/fast/frames/iframe-text-contents.html = FAIL +V8 | KJS # LayoutTests/fast/gradients/border-image-gradient-sides-and-corners.html = FAIL +V8 | KJS # LayoutTests/fast/gradients/border-image-gradient.html = FAIL +V8 | KJS # LayoutTests/fast/gradients/generated-gradients.html = FAIL +V8 | KJS # LayoutTests/fast/gradients/list-item-gradient.html = FAIL +V8 | KJS # LayoutTests/fast/gradients/simple-gradients.html = FAIL +V8 | KJS # LayoutTests/fast/history/subframe-is-visited.html = FAIL +V8 | KJS # LayoutTests/fast/html/marquee-scroll.html = FAIL +V8 | KJS # LayoutTests/fast/media/implicit-media-all.html = FAIL +V8 | KJS # LayoutTests/fast/media/monochrome.html = FAIL +V8 | KJS # LayoutTests/fast/media/viewport-media-query.html = FAIL +V8 | KJS # LayoutTests/fast/overflow/float-in-relpositioned.html = FAIL +V8 | KJS # LayoutTests/fast/reflections/inline-crash.html = FAIL +V8 | KJS # LayoutTests/fast/reflections/reflection-direction.html = FAIL +V8 | KJS # LayoutTests/fast/reflections/reflection-masks.html = FAIL +V8 | KJS # LayoutTests/fast/reflections/reflection-nesting.html = FAIL +V8 | KJS # LayoutTests/fast/reflections/table-cell.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/absolute-position-percentage-width.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/max-width-percent.html = FAIL +V8 | KJS # LayoutTests/fast/table/border-collapsing/equal-precedence-resolution.html = FAIL +V8 | KJS # LayoutTests/fast/table/fixed-with-auto-with-colspan.html = FAIL +V8 | KJS # LayoutTests/fast/table/prepend-in-anonymous-table.html = FAIL +V8 | KJS # LayoutTests/fast/table/vertical-align-baseline.html = FAIL +V8 | KJS # LayoutTests/fast/transforms/overflow-with-transform.html = FAIL +V8 | KJS # LayoutTests/fast/transforms/shadows.html = FAIL +V8 | KJS # LayoutTests/http/tests/loading/location-hash-reload-cycle.html = FAIL +V8 | KJS # LayoutTests/http/tests/misc/acid3.html = FAIL +V8 | KJS # LayoutTests/http/tests/misc/frame-default-enc-same-domain.html = FAIL +V8 | KJS # LayoutTests/http/tests/navigation/reload-subframe-frame.html = FAIL +V8 | KJS # LayoutTests/http/tests/navigation/reload-subframe-iframe.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/security-context-grandchildren-alias.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/security-context-grandchildren.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/security-context.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/security-context-window-open.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/security-context-with-base-tag.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/canvas-remote-read-remote-image.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/canvas-remote-read-svg-image.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/cookies/document-open.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-object-prototype.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/cross-origin-xsl-BLOCKED.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/xss-DENIED-synchronous-form.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/xss-eval.html = FAIL +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-method.html = FAIL +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-LSProgressEvent-ProgressEvent-should-match.html = FAIL +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-no-content-length-onProgress.html = FAIL +V8 | KJS # LayoutTests/media/progress-event-total.html = FAIL +V8 | KJS # LayoutTests/media/video-click-dlbclick-standalone.html = FAIL +V8 | KJS # LayoutTests/media/video-layer-crash.html = FAIL +V8 | KJS # LayoutTests/media/video-source-type-params.html = FAIL +V8 | KJS # LayoutTests/plugins/return-error-from-new-stream-doesnt-invoke-destroy-stream.html = FAIL | TIMEOUT +V8 | KJS # LayoutTests/printing = FAIL +V8 | KJS # LayoutTests/security/autocomplete-cleared-on-back.html = FAIL | TIMEOUT +V8 | KJS # LayoutTests/security/set-form-autocomplete-attribute.html = FAIL +V8 | KJS # LayoutTests/storage/domstorage = FAIL +V8 | KJS # LayoutTests/storage/multiple-databases-garbage-collection.html = FAIL +V8 | KJS # LayoutTests/storage/multiple-transactions.html = FAIL +V8 | KJS # LayoutTests/storage/quota-tracking.html = FAIL +V8 | KJS # LayoutTests/storage/sql-data-types.html = FAIL +V8 | KJS # LayoutTests/storage/success-callback.html = FAIL +V8 | KJS # LayoutTests/svg/custom/getSubStringLength.html = FAIL +V8 | KJS # LayoutTests/svg/custom/immutable-properties.html = FAIL +V8 | KJS # LayoutTests/svg/custom/svg-modify-currentTranslate.html = FAIL +V8 | KJS # LayoutTests/svg/custom/tearoffs-with-tearoffs.html = FAIL +V8 | KJS # LayoutTests/svg/dom/altGlyph-dom.xhtml = FAIL +V8 | KJS # LayoutTests/svg/dynamic-updates/SVGLinearGradientElement-svgdom-gradientTransform-prop.html = FAIL +V8 | KJS # LayoutTests/svg/dynamic-updates/SVGPatternElement-svgdom-patternTransform-prop.html = FAIL +V8 | KJS # LayoutTests/svg/dynamic-updates/SVGRadialGradientElement-svgdom-gradientTransform-prop.html = FAIL + +// These new tests are missing expected results, so we skip them (there's no +// way to flag them as missing expected results). +V8 | KJS # SKIP : LayoutTests/fast/html/link-rel-stylesheet.html = FAIL +V8 | KJS # SKIP : LayoutTests/fast/layers/opacity-stacking.html = PASS +V8 | KJS # SKIP : LayoutTests/fast/transforms/transform-overflow.html = FAIL +V8 | KJS # SKIP : LayoutTests/fast/transforms/transform-positioned-ancestor.html = FAIL +V8 | KJS # SKIP : LayoutTests/platform/win/fast/text/uniscribe-missing-glyph.html = PASS +V8 | KJS # SKIP : LayoutTests/printing/media-queries-print.html = PASS +V8 | KJS # SKIP : LayoutTests/transitions/opacity-transition-zindex.html = PASS + +// Post-MERGE failures: these will all need to be fixed one day +V8 | KJS # LayoutTests/css2.1/t1002-c5523-width-01-b-g.html = FAIL +V8 | KJS # LayoutTests/css2.1/t140201-c536-bgpos-00-b-ag.html = FAIL +V8 | KJS # LayoutTests/css2.1/t140201-c536-bgpos-01-b-ag.html = FAIL +V8 | KJS # LayoutTests/css2.1/t1602-c43-center-00-d-ag.html = FAIL +V8 | KJS # LayoutTests/editing/execCommand/outdent-selection.gchtml = FAIL +V8 | KJS # LayoutTests/editing/selection/caret-rtl-2.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/svg-as-background-5.html = FAIL +V8 | KJS # LayoutTests/fast/block/float/float-avoidance.html = FAIL +V8 | KJS # LayoutTests/fast/borders/svg-as-border-image-2.html = FAIL +V8 | KJS # LayoutTests/fast/borders/svg-as-border-image.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-composite.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-resize-reset.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvas-transform-skewed.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/canvasDrawingIntoSelf.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/drawImage.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/fill-stroke-clip-reset-path.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/fillrect_gradient.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/gradient-add-second-start-end-stop.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/image-object-in-canvas.html = FAIL +V8 | KJS # LayoutTests/fast/canvas/patternfill-repeat.html = FAIL +V8 | KJS # LayoutTests/fast/css-generated-content/table-row-group-to-inline.html = FAIL +V8 | KJS # LayoutTests/fast/css-generated-content/table-row-group-with-before.html = FAIL +V8 | KJS # LayoutTests/fast/css-generated-content/table-row-with-before.html = FAIL +V8 | KJS # LayoutTests/fast/css-generated-content/table-with-before.html = FAIL +V8 | KJS # LayoutTests/fast/css/background-shorthand-invalid-url.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/alternate-syntax/font-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/font-test.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Window/window-special-properties.html = FAIL +V8 | KJS # LayoutTests/fast/dom/resource-locations-in-created-html-document.html = FAIL +V8 | KJS # LayoutTests/fast/dynamic/floating-to-positioned-2.html = FAIL +V8 | KJS # LayoutTests/fast/dynamic/floating-to-positioned.html = FAIL +V8 | KJS # LayoutTests/fast/dynamic/subtree-table-cell-height.html = FAIL +V8 | KJS # LayoutTests/fast/events/autoscroll.html = FAIL +V8 | KJS # LayoutTests/fast/events/event-instanceof.html = FAIL +V8 | KJS # LayoutTests/fast/events/onload-after-document-close-with-subresource.html = FAIL +V8 | KJS # LayoutTests/fast/forms/form-hides-table.html = FAIL +V8 | KJS # LayoutTests/fast/forms/input-readonly-autoscroll.html = FAIL +V8 | KJS # LayoutTests/fast/forms/legend-access-key.html = FAIL +V8 | KJS # LayoutTests/fast/forms/select-accesskey.html = FAIL +V8 | KJS # LayoutTests/fast/forms/textAreaLineHeight.html = FAIL +V8 | KJS # LayoutTests/fast/forms/textarea-hard-linewrap.html = FAIL +V8 | KJS # LayoutTests/fast/images/svg-as-background.html = FAIL +V8 | KJS # LayoutTests/fast/images/svg-as-tiled-background.html = FAIL +V8 | KJS # LayoutTests/fast/js/cyclic-proto.html = FAIL +V8 | KJS # LayoutTests/fast/js/function-decompilation-operators.html = FAIL +V8 | KJS # LayoutTests/fast/loader/data-url-encoding-html.html = FAIL +V8 | KJS # LayoutTests/fast/loader/data-url-encoding-svg.html = FAIL +V8 | KJS # LayoutTests/fast/loader/start-load-in-unload.html = FAIL +V8 | KJS # LayoutTests/fast/loader/url-parse-1.html = FAIL +V8 | KJS # LayoutTests/fast/parser/entity-comment-in-style.html = FAIL +V8 | KJS # LayoutTests/fast/parser/entity-comment-in-textarea.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/replaced-breaking.html = FAIL +V8 | KJS # LayoutTests/fast/table/text-field-baseline.html = FAIL +V8 | KJS # LayoutTests/http/tests/messaging/cross-domain-message-event-dispatch.html = FAIL +V8 | KJS # LayoutTests/http/tests/misc/iframe-domain-test.html = FAIL +V8 | KJS # LayoutTests/http/tests/navigation/back-to-slow-frame.html = FAIL +V8 | KJS # LayoutTests/http/tests/navigation/metaredirect-basic.html = FAIL +V8 | KJS # LayoutTests/http/tests/navigation/post-basic.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-history-put.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/listener/xss-JSTargetNode-onclick-addEventListener.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/listener/xss-JSTargetNode-onclick-shortcut.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/listener/xss-XMLHttpRequest-addEventListener.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/listener/xss-XMLHttpRequest-shortcut.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/listener/xss-window-onclick-addEventListener.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/listener/xss-window-onclick-shortcut.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-03-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-04-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-09-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-10-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-11-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-12-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-23-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-31-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-34-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-39-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-40-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-44-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-46-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-60-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-61-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-62-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-63-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-64-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-65-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-66-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-67-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-68-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-69-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-70-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-77-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-85-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/color-prop-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/coords-units-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/coords-viewattr-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/coords-viewattr-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/filters-tile-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-04-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-06-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-07-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-glyph-04-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-kern-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/interact-cursor-01-f.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/interact-dom-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/interact-order-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/interact-order-02-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/interact-order-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/interact-zoom-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/linking-a-04-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/linking-a-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/linking-a-07-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/linking-uri-03-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/masking-mask-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/painting-fill-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/painting-fill-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/painting-fill-03-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/painting-fill-05-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/painting-marker-03-f.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/painting-render-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/paths-data-04-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/paths-data-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/paths-data-08-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/paths-data-09-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/paths-data-14-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-02-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-04-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-05-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-06-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-09-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-10-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-12-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-13-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-14-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-15-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-16-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-17-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-18-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-19-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-pattern-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-groups-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-groups-03-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-02-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-04-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/shapes-circle-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/shapes-circle-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/shapes-ellipse-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/shapes-line-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/shapes-rect-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/struct-image-02-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/struct-symbol-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/struct-use-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/styling-css-04-f.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/styling-inherit-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-align-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-align-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-align-04-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-altglyph-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-fonts-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-text-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-text-06-t.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/masking/maskRegions.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/paints/gradientLimit.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/paints/patternPreserveAspectRatioA.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/paints/patternRegionA.svg = FAIL | CRASH +V8 | KJS # LayoutTests/svg/batik/paints/patternRegions.svg = FAIL | CRASH +V8 | KJS # LayoutTests/svg/batik/text/textAnchor2.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textAnchor3.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textEffect.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textEffect3.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textLength.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textProperties2.svg = FAIL +V8 | KJS # LayoutTests/svg/carto.net/button.svg = FAIL +V8 | KJS # LayoutTests/svg/carto.net/colourpicker.svg = FAIL +V8 | KJS # LayoutTests/svg/carto.net/combobox.svg = FAIL +V8 | KJS # LayoutTests/svg/carto.net/scrollbar.svg = FAIL +V8 | KJS # LayoutTests/svg/carto.net/selectionlist.svg = FAIL +V8 | KJS # LayoutTests/svg/css/getComputedStyle-basic.xhtml = FAIL +V8 | KJS # LayoutTests/svg/custom/alignment-baseline-modes.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/altglyph.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/animate-path-discrete.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/animate-path-morphing.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/circular-marker-reference-1.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/circular-marker-reference-2.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/circular-marker-reference-3.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/circular-marker-reference-4.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/clip-path-display-none-child.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/deep-dynamic-updates.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/dominant-baseline-hanging.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/dominant-baseline-modes.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/dynamic-svg-document-creation.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/embedded-svg-disallowed-in-dashboard.xml = FAIL +V8 | KJS # LayoutTests/svg/custom/empty-merge.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/focus-ring.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/glyph-selection-lang-attribute.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/glyph-setting-d-attribute.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/gradient-rotated-bbox.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/gradient-stop-corner-cases.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/gradient-stroke-width.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/group-opacity.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/image-parent-translation.xhtml = FAIL +V8 | KJS # LayoutTests/svg/custom/image-small-width-height.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/inline-svg-in-xhtml.xml = FAIL +V8 | KJS # LayoutTests/svg/custom/invalid-fill-hex.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-late-marker-and-object-creation.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-late-marker-creation.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-bounce.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-container2.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-image.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-path-changes.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-path-removal.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-pattern-child.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/js-update-pattern.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/large-bounding-box-percents.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/linking-a-03-b-preserveAspectRatio.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/linking-a-03-b-transform.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/linking-a-03-b-viewTarget.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/linking-a-03-b-zoomAndPan.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/manually-parsed-embedded-svg-disallowed-in-dashboard.html = FAIL +V8 | KJS # LayoutTests/svg/custom/manually-parsed-svg-disallowed-in-dashboard.html = FAIL +V8 | KJS # LayoutTests/svg/custom/non-circular-marker-reference.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/pattern-cycle-detection.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/pattern-deep-referencing.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/pattern-rotate.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/pattern-y-offset.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/pointer-events-image.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/scrolling-embedded-svg-file-image-repaint-problem.html = FAIL +V8 | KJS # LayoutTests/svg/custom/stroke-fallback.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/stroked-pattern.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/svg-disallowed-in-dashboard-object.html = FAIL +V8 | KJS # LayoutTests/svg/custom/text-dom-01-f.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/text-dom-removal.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/text-linking.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/text-xy-updates.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/use-clipped-hit.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/use-forward-refs.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/use-on-g-containing-foreignObject-and-image.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/width-full-percentage.svg = FAIL +V8 | KJS # LayoutTests/svg/dom/SVGRectElement/rect-modify-rx.svg = FAIL +V8 | KJS # LayoutTests/svg/hixie/dynamic/005.xml = FAIL +V8 | KJS # LayoutTests/svg/hixie/error/003.xml = FAIL +V8 | KJS # LayoutTests/svg/text/kerning.svg = FAIL +V8 | KJS # LayoutTests/svg/text/multichar-glyph.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-fonts-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/text/textPathBoundsBug.svg = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug103533.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug43854-1.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla_expected_failures/bugs/bug14007-2.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla_expected_failures/bugs/bug220653.html = FAIL +V8 | KJS # chrome/fast/dom/Window/window-lookup-precedence-2.html = FAIL +V8 | KJS # chrome/fast/dom/Window/window-lookup-precedence.html = FAIL +V8 | KJS # chrome/fast/dom/domListEnumeration.html = FAIL +V8 | KJS # chrome/fast/events/iframe-onload-remove-self-no-crash.html = FAIL +V8 | KJS # chrome/fast/forms/basic-textareas-quirks.html = FAIL +V8 | KJS # pending/fast/canvas/fillrect_gradient.html = FAIL +V8 | KJS # pending/fast/dom/StyleSheet/ownerNode-lifetime-expected-2.html = FAIL +V8 | KJS # pending/fast/history/history_reload.html = FAIL +V8 | KJS # pending/http/tests/security/cross-frame-access-child-explicit-domain.html = FAIL +V8 | KJS # pending/http/tests/security/cross-frame-access-parent-explicit-domain.html = FAIL +V8 | KJS # pending/svg/carto.net/window.svg = FAIL +V8 | KJS # pending/dom/html/level2/html/HTMLFrameElement09.html = PASS | CRASH +V8 | KJS # pending/dom/html/level2/html/HTMLIFrameElement11.html = PASS | CRASH +V8 | KJS # LayoutTests/editing/execCommand/outdent-selection.html = PASS | FAIL + +// Post-merge Timeouts: Definitely need to be fixed one day +V8 | KJS # LayoutTests/fast/js/exceptions-thrown-in-callbacks.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-call.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/frame-loading-via-document-write.html = TIMEOUT diff --git a/webkit/tools/layout_tests/test_lists/tests_ignored.txt b/webkit/tools/layout_tests/test_lists/tests_ignored.txt index dc5de8e..0ab1b9e 100644 --- a/webkit/tools/layout_tests/test_lists/tests_ignored.txt +++ b/webkit/tools/layout_tests/test_lists/tests_ignored.txt @@ -64,6 +64,10 @@ V8 | KJS # LayoutTests/fast/dom/Window/window-properties.html = FAIL | TIMEOUT // private browsing mode. V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-private-browsing.html = FAIL +// We don't care about dashboard compatibility mode. +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/default-content-type-dashboard.html = FAIL +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/svg-created-by-xhr-disallowed-in-dashboard.html = FAIL + // Chrome uses different keyboard accelerators from those used by Safari, so // these tests will always fail. // TODO(ericroman): can the following 2 tests be removed from this list, since they pass? @@ -72,9 +76,10 @@ V8 | KJS # LayoutTests/fast/events/option-tab.html = FAIL // Chrome does not support WebArchives (just like Safari for Windows). // See bug 761653. -V8 | KJS # LayoutTests/webarchive = FAIL -V8 | KJS # LayoutTests/svg/webarchive = FAIL -V8 | KJS # LayoutTests/svg/custom/image-with-prefix-in-webarchive.svg = FAIL +V8 | KJS # SKIP : LayoutTests/webarchive/loading = FAIL | TIMEOUT +V8 | KJS # LayoutTests/webarchive = PASS +V8 | KJS # LayoutTests/svg/webarchive = FAIL | PASS +V8 | KJS # LayoutTests/svg/custom/image-with-prefix-in-webarchive.svg = FAIL | PASS // Bug 932737 V8 | KJS # LayoutTests/webarchive/loading/test-loading-archive.html = TIMEOUT @@ -143,6 +148,9 @@ V8 # LayoutTests/fast/js/function-names.html = FAIL | PASS // We will pass the new one after we merge KJS | V8 # LayoutTests/http/tests/incremental/slow-utf8-css.pl = FAIL +// This test relies on the x-mac-cyrillic encoding which we don't ship. +V8 # LayoutTests/fast/encoding/frame-default-enc.html = FAIL + // ----------------------------------------------------------------- // CHROME REWRITTEN TESTS // ----------------------------------------------------------------- @@ -175,3 +183,6 @@ KJS | V8 # SKIP : chrome/http/tests/plugins/get-file-url.html = FAIL | PASS | TI // See Bug 1205552 KJS # SKIP : chrome/fast/dom/set-document-body-no-crash.html = FAIL KJS # SKIP : chrome/fast/dom/set-table-head-no-crash.html = FAIL + +// Dashboard-related test +KJS | V8 # SKIP : LayoutTests/fast/css/dashboard-region-parser.html = FAIL diff --git a/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp b/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp index 2cc91a3..3c005c3 100644 --- a/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp +++ b/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp @@ -108,7 +108,10 @@ static const NPUTF8 *pluginPropertyIdentifierNames[NUM_PROPERTY_IDENTIFIERS] = { #define ID_TEST_PASS_TEST_OBJECT 14 #define ID_TEST_CLONE_OBJECT 15 #define ID_TEST_SCRIPT_OBJECT_INVOKE 16 -#define NUM_METHOD_IDENTIFIERS 17 +#define ID_TEST_IDENTIFIER_TO_STRING 17 +#define ID_TEST_IDENTIFIER_TO_INT 18 +#define ID_TEST_POSTURL_FILE 19 +#define NUM_METHOD_IDENTIFIERS 20 static NPIdentifier pluginMethodIdentifiers[NUM_METHOD_IDENTIFIERS]; static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = { @@ -129,6 +132,9 @@ static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = { "testPassTestObject", // Chrome bug 1093606 "testCloneObject", "testScriptObjectInvoke", // Chrome bug 1175346 + "testIdentifierToString", + "testIdentifierToInt", + "testPostURLFile", }; static NPUTF8* createCStringFromNPVariant(const NPVariant *variant) @@ -203,10 +209,10 @@ static bool pluginSetProperty(NPObject *obj, NPIdentifier name, const NPVariant return false; } -static void testDOMAccess(PluginObject *obj) +static bool testDOMAccess(PluginObject* obj, const NPVariant*, uint32_t, NPVariant* result) { // Get plug-in's DOM element - NPObject *elementObject; + NPObject* elementObject; if (browser->getvalue(obj->npp, NPNVPluginElementNPObject, &elementObject) == NPERR_NO_ERROR) { // Get style NPVariant styleVariant; @@ -219,188 +225,365 @@ static void testDOMAccess(PluginObject *obj) browser->setproperty(obj->npp, NPVARIANT_TO_OBJECT(styleVariant), borderIdentifier, &borderVariant); browser->releasevariantvalue(&styleVariant); } - + browser->releaseobject(elementObject); } + VOID_TO_NPVARIANT(*result); + return true; } -static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result) +static NPIdentifier stringVariantToIdentifier(NPVariant variant) { - PluginObject *obj = (PluginObject *)header; - if (name == pluginMethodIdentifiers[ID_TEST_CALLBACK_METHOD]) { - // call whatever method name we're given - if (argCount > 0 && NPVARIANT_IS_STRING(args[0])) { - NPObject *windowScriptObject; - browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); + assert(NPVARIANT_IS_STRING(variant)); + NPUTF8* utf8String = createCStringFromNPVariant(&variant); + NPIdentifier identifier = browser->getstringidentifier(utf8String); + free(utf8String); + return identifier; +} - NPUTF8* callbackString = createCStringFromNPVariant(&args[0]); - NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString); - free(callbackString); +static NPIdentifier int32VariantToIdentifier(NPVariant variant) +{ + assert(NPVARIANT_IS_INT32(variant)); + int32 integer = NPVARIANT_TO_INT32(variant); + return browser->getintidentifier(integer); +} - NPVariant browserResult; - browser->invoke(obj->npp, windowScriptObject, callbackIdentifier, 0, 0, &browserResult); - browser->releasevariantvalue(&browserResult); +static NPIdentifier doubleVariantToIdentifier(NPVariant variant) +{ + assert(NPVARIANT_IS_DOUBLE(variant)); + double value = NPVARIANT_TO_DOUBLE(variant); + // Sadly there is no "getdoubleidentifier" + int32 integer = static_cast<int32>(value); + return browser->getintidentifier(integer); +} - VOID_TO_NPVARIANT(*result); - return true; - } - } else if (name == pluginMethodIdentifiers[ID_TEST_GETURL]) { - if (argCount == 2 && NPVARIANT_IS_STRING(args[0]) && NPVARIANT_IS_STRING(args[1])) { - NPUTF8* urlString = createCStringFromNPVariant(&args[0]); - NPUTF8* targetString = createCStringFromNPVariant(&args[1]); - browser->geturl(obj->npp, urlString, targetString); - free(urlString); - free(targetString); +static NPIdentifier variantToIdentifier(NPVariant variant) +{ + if (NPVARIANT_IS_STRING(variant)) + return stringVariantToIdentifier(variant); + else if (NPVARIANT_IS_INT32(variant)) + return int32VariantToIdentifier(variant); + else if (NPVARIANT_IS_DOUBLE(variant)) + return doubleVariantToIdentifier(variant); + return 0; +} - VOID_TO_NPVARIANT(*result); - return true; - } else if (argCount == 1 && NPVARIANT_IS_STRING(args[0])) { - NPUTF8* urlString = createCStringFromNPVariant(&args[0]); - browser->geturl(obj->npp, urlString, 0); - free(urlString); +static bool testIdentifierToString(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 1) + return false; + NPIdentifier identifier = variantToIdentifier(args[0]); + if (!identifier) + return false; + NPUTF8* utf8String = browser->utf8fromidentifier(identifier); + if (!utf8String) + return false; + STRINGZ_TO_NPVARIANT(utf8String, *result); + return true; +} + +static bool testIdentifierToInt(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 1) + return false; + NPIdentifier identifier = variantToIdentifier(args[0]); + if (!identifier) + return false; + int32 integer = browser->intfromidentifier(identifier); + INT32_TO_NPVARIANT(integer, *result); + return true; +} + +static bool testCallback(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + // call whatever method name we're given + if (argCount > 0 && NPVARIANT_IS_STRING(args[0])) { + NPObject *windowScriptObject; + browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); + + NPUTF8* callbackString = createCStringFromNPVariant(&args[0]); + NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString); + free(callbackString); + + NPVariant browserResult; + browser->invoke(obj->npp, windowScriptObject, callbackIdentifier, 0, 0, &browserResult); + browser->releasevariantvalue(&browserResult); - VOID_TO_NPVARIANT(*result); - return true; - } - } else if (name == pluginMethodIdentifiers[ID_REMOVE_DEFAULT_METHOD]) { - pluginClass.invokeDefault = 0; VOID_TO_NPVARIANT(*result); return true; - } else if (name == pluginMethodIdentifiers[ID_TEST_DOM_ACCESS]) { - testDOMAccess(obj); + } + return false; +} + +static bool getURL(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount == 2 && NPVARIANT_IS_STRING(args[0]) && NPVARIANT_IS_STRING(args[1])) { + NPUTF8* urlString = createCStringFromNPVariant(&args[0]); + NPUTF8* targetString = createCStringFromNPVariant(&args[1]); + browser->geturl(obj->npp, urlString, targetString); + free(urlString); + free(targetString); + VOID_TO_NPVARIANT(*result); return true; - } else if (name == pluginMethodIdentifiers[ID_TEST_GET_URL_NOTIFY]) { - if (argCount == 3 - && NPVARIANT_IS_STRING(args[0]) - && (NPVARIANT_IS_STRING(args[1]) || NPVARIANT_IS_NULL(args[1])) - && NPVARIANT_IS_STRING(args[2])) { - NPUTF8* urlString = createCStringFromNPVariant(&args[0]); - NPUTF8* targetString = (NPVARIANT_IS_STRING(args[1]) ? createCStringFromNPVariant(&args[1]) : NULL); - NPUTF8* callbackString = createCStringFromNPVariant(&args[2]); - - NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString); - browser->geturlnotify(obj->npp, urlString, targetString, callbackIdentifier); + } else if (argCount == 1 && NPVARIANT_IS_STRING(args[0])) { + NPUTF8* urlString = createCStringFromNPVariant(&args[0]); + browser->geturl(obj->npp, urlString, 0); + free(urlString); - free(urlString); - free(targetString); - free(callbackString); - - VOID_TO_NPVARIANT(*result); - return true; - } - } else if (name == pluginMethodIdentifiers[ID_TEST_INVOKE_DEFAULT] && NPVARIANT_IS_OBJECT(args[0])) { - NPObject *callback = NPVARIANT_TO_OBJECT(args[0]); - - NPVariant args[1]; - NPVariant browserResult; - - STRINGZ_TO_NPVARIANT("test", args[0]); - bool retval = browser->invokeDefault(obj->npp, callback, args, 1, &browserResult); + VOID_TO_NPVARIANT(*result); + return true; + } + return false; +} + +static bool removeDefaultMethod(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + pluginClass.invokeDefault = 0; + VOID_TO_NPVARIANT(*result); + return true; +} + +static bool getURLNotify(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount == 3 + && NPVARIANT_IS_STRING(args[0]) + && (NPVARIANT_IS_STRING(args[1]) || NPVARIANT_IS_NULL(args[1])) + && NPVARIANT_IS_STRING(args[2])) { + NPUTF8* urlString = createCStringFromNPVariant(&args[0]); + NPUTF8* targetString = (NPVARIANT_IS_STRING(args[1]) ? createCStringFromNPVariant(&args[1]) : NULL); + NPUTF8* callbackString = createCStringFromNPVariant(&args[2]); - if (retval) - browser->releasevariantvalue(&browserResult); + NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString); + browser->geturlnotify(obj->npp, urlString, targetString, callbackIdentifier); + + free(urlString); + free(targetString); + free(callbackString); - BOOLEAN_TO_NPVARIANT(retval, *result); + VOID_TO_NPVARIANT(*result); return true; - } else if (name == pluginMethodIdentifiers[ID_TEST_ENUMERATE]) { - if (argCount == 2 && NPVARIANT_IS_OBJECT(args[0]) && NPVARIANT_IS_OBJECT(args[1])) { - uint32_t count; - NPIdentifier* identifiers; - - if (browser->enumerate(obj->npp, NPVARIANT_TO_OBJECT(args[0]), &identifiers, &count)) { - NPObject* outArray = NPVARIANT_TO_OBJECT(args[1]); - NPIdentifier pushIdentifier = browser->getstringidentifier("push"); - - for (uint32_t i = 0; i < count; i++) { - NPUTF8* string = browser->utf8fromidentifier(identifiers[i]); - - if (!string) - continue; - - NPVariant args[1]; - STRINGZ_TO_NPVARIANT(string, args[0]); - NPVariant browserResult; - browser->invoke(obj->npp, outArray, pushIdentifier, args, 1, &browserResult); - browser->releasevariantvalue(&browserResult); - browser->memfree(string); - } - - browser->memfree(identifiers); - } - - VOID_TO_NPVARIANT(*result); - return true; - } + } + return false; +} + +static bool testInvokeDefault(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (!NPVARIANT_IS_OBJECT(args[0])) return false; - } else if (name == pluginMethodIdentifiers[ID_DESTROY_STREAM]) { - NPError npError = browser->destroystream(obj->npp, obj->stream, NPRES_USER_BREAK); - INT32_TO_NPVARIANT(npError, *result); - return true; - } else if (name == pluginMethodIdentifiers[ID_TEST_GETINTIDENTIFIER]) { - if (argCount == 1 && NPVARIANT_IS_DOUBLE(args[0])) { - NPIdentifier identifier = browser->getintidentifier((int)NPVARIANT_TO_DOUBLE(args[0])); - INT32_TO_NPVARIANT((int32)identifier, *result); - return true; - } - } else if (name == pluginMethodIdentifiers[ID_TEST_EVALUATE] && - argCount == 1 && NPVARIANT_IS_STRING(args[0])) { - NPObject *windowScriptObject; - browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); - NPString s = NPVARIANT_TO_STRING(args[0]); - - bool retval = browser->evaluate(obj->npp, windowScriptObject, &s, result); - browser->releaseobject(windowScriptObject); - return retval; - } else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY] && - argCount > 0) { - NPObject *object; - browser->getvalue(obj->npp, NPNVWindowNPObject, &object); - - for (uint32_t i = 0; i < argCount; i++) { - assert(NPVARIANT_IS_STRING(args[i])); - NPUTF8* propertyString = createCStringFromNPVariant(&args[i]); - NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString); - free(propertyString); - - NPVariant variant; - bool retval = browser->getproperty(obj->npp, object, propertyIdentifier, &variant); - browser->releaseobject(object); - - if (!retval) - break; + NPObject *callback = NPVARIANT_TO_OBJECT(args[0]); + + NPVariant invokeArgs[1]; + NPVariant browserResult; + + STRINGZ_TO_NPVARIANT("test", invokeArgs[0]); + bool retval = browser->invokeDefault(obj->npp, callback, invokeArgs, 1, &browserResult); + + if (retval) + browser->releasevariantvalue(&browserResult); + + BOOLEAN_TO_NPVARIANT(retval, *result); + return true; +} + +static bool destroyStream(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + NPError npError = browser->destroystream(obj->npp, obj->stream, NPRES_USER_BREAK); + INT32_TO_NPVARIANT(npError, *result); + return true; +} + +static bool testEnumerate(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount == 2 && NPVARIANT_IS_OBJECT(args[0]) && NPVARIANT_IS_OBJECT(args[1])) { + uint32_t count; + NPIdentifier* identifiers; + + if (browser->enumerate(obj->npp, NPVARIANT_TO_OBJECT(args[0]), &identifiers, &count)) { + NPObject* outArray = NPVARIANT_TO_OBJECT(args[1]); + NPIdentifier pushIdentifier = browser->getstringidentifier("push"); - if (i + 1 < argCount) { - assert(NPVARIANT_IS_OBJECT(variant)); - object = NPVARIANT_TO_OBJECT(variant); - } else { - *result = variant; - return true; + for (uint32_t i = 0; i < count; i++) { + NPUTF8* string = browser->utf8fromidentifier(identifiers[i]); + + if (!string) + continue; + + NPVariant args[1]; + STRINGZ_TO_NPVARIANT(string, args[0]); + NPVariant browserResult; + browser->invoke(obj->npp, outArray, pushIdentifier, args, 1, &browserResult); + browser->releasevariantvalue(&browserResult); + browser->memfree(string); } + + browser->memfree(identifiers); } VOID_TO_NPVARIANT(*result); + return true; + } + return false; +} + +static bool testGetIntIdentifier(PluginObject*, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount == 1 && NPVARIANT_IS_DOUBLE(args[0])) { + NPIdentifier identifier = browser->getintidentifier((int)NPVARIANT_TO_DOUBLE(args[0])); + INT32_TO_NPVARIANT((int32)identifier, *result); + return true; + } + return false; +} + +static bool testGetProperty(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount == 0) return false; - } else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY_RETURN_VALUE] && - argCount == 2 && NPVARIANT_IS_OBJECT(args[0]) && NPVARIANT_IS_STRING(args[1])) { - NPUTF8* propertyString = createCStringFromNPVariant(&args[1]); + + NPObject *object; + browser->getvalue(obj->npp, NPNVWindowNPObject, &object); + + for (uint32_t i = 0; i < argCount; i++) { + assert(NPVARIANT_IS_STRING(args[i])); + NPUTF8* propertyString = createCStringFromNPVariant(&args[i]); NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString); free(propertyString); NPVariant variant; - bool retval = browser->getproperty(obj->npp, NPVARIANT_TO_OBJECT(args[0]), propertyIdentifier, &variant); - if (retval) - browser->releasevariantvalue(&variant); + bool retval = browser->getproperty(obj->npp, object, propertyIdentifier, &variant); + browser->releaseobject(object); - BOOLEAN_TO_NPVARIANT(retval, *result); - return true; - } else if (name == pluginMethodIdentifiers[ID_TEST_CALLBACK_METHOD_RET]) { + if (!retval) + break; + + if (i + 1 < argCount) { + assert(NPVARIANT_IS_OBJECT(variant)); + object = NPVARIANT_TO_OBJECT(variant); + } else { + *result = variant; + return true; + } + } + + VOID_TO_NPVARIANT(*result); + return false; +} + +static bool testEvaluate(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 1 || !NPVARIANT_IS_STRING(args[0])) + return false; + NPObject* windowScriptObject; + browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); + + NPString s = NPVARIANT_TO_STRING(args[0]); + + bool retval = browser->evaluate(obj->npp, windowScriptObject, &s, result); + browser->releaseobject(windowScriptObject); + return retval; +} + +static bool testGetPropertyReturnValue(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 2 || !NPVARIANT_IS_OBJECT(args[0]) || !NPVARIANT_IS_STRING(args[1])) + return false; + + NPUTF8* propertyString = createCStringFromNPVariant(&args[1]); + NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString); + free(propertyString); + + NPVariant variant; + bool retval = browser->getproperty(obj->npp, NPVARIANT_TO_OBJECT(args[0]), propertyIdentifier, &variant); + if (retval) + browser->releasevariantvalue(&variant); + + BOOLEAN_TO_NPVARIANT(retval, *result); + return true; +} + +static char* toCString(const NPString& string) +{ + char* result = static_cast<char*>(malloc(string.UTF8Length + 1)); + memcpy(result, string.UTF8Characters, string.UTF8Length); + result[string.UTF8Length] = '\0'; + + return result; +} + +static bool testPostURLFile(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 4 || !NPVARIANT_IS_STRING(args[0]) || !NPVARIANT_IS_STRING(args[1]) || !NPVARIANT_IS_STRING(args[2]) || !NPVARIANT_IS_STRING(args[3])) + return false; + + NPString urlString = NPVARIANT_TO_STRING(args[0]); + char* url = toCString(urlString); + + NPString targetString = NPVARIANT_TO_STRING(args[1]); + char* target = toCString(targetString); + + NPString pathString = NPVARIANT_TO_STRING(args[2]); + char* path = toCString(pathString); + + NPString contentsString = NPVARIANT_TO_STRING(args[3]); + + FILE* tempFile = fopen(path, "w"); + if (!tempFile) + return false; + + fwrite(contentsString.UTF8Characters, contentsString.UTF8Length, 1, tempFile); + fclose(tempFile); + + NPError error = browser->posturl(obj->npp, url, target, pathString.UTF8Length, path, TRUE); + + free(path); + free(target); + free(url); + + BOOLEAN_TO_NPVARIANT(error == NPERR_NO_ERROR, *result); + return true; +} + +static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result) +{ + PluginObject* plugin = reinterpret_cast<PluginObject*>(header); + if (name == pluginMethodIdentifiers[ID_TEST_CALLBACK_METHOD]) + return testCallback(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_GETURL]) + return getURL(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_REMOVE_DEFAULT_METHOD]) + return removeDefaultMethod(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_DOM_ACCESS]) + return testDOMAccess(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_GET_URL_NOTIFY]) + return getURLNotify(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_INVOKE_DEFAULT]) + return testInvokeDefault(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_ENUMERATE]) + return testEnumerate(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_DESTROY_STREAM]) + return destroyStream(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_GETINTIDENTIFIER]) + return testGetIntIdentifier(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_EVALUATE]) + return testEvaluate(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY]) + return testGetProperty(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY_RETURN_VALUE]) + return testGetPropertyReturnValue(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_IDENTIFIER_TO_STRING]) + return testIdentifierToString(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_IDENTIFIER_TO_INT]) + return testIdentifierToInt(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_POSTURL_FILE]) + return testPostURLFile(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_CALLBACK_METHOD_RET]) { // call whatever method name we're given, and pass it the 'window' obj. // we expect the function to return its argument. if (argCount > 0 && NPVARIANT_IS_STRING(args[0])) { NPObject *windowScriptObject; - browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); + browser->getvalue(plugin->npp, NPNVWindowNPObject, &windowScriptObject); NPUTF8* callbackString = createCStringFromNPVariant(&args[0]); NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString); @@ -410,7 +593,7 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a OBJECT_TO_NPVARIANT(windowScriptObject, callbackArgs[0]); NPVariant browserResult; - browser->invoke(obj->npp, windowScriptObject, callbackIdentifier, + browser->invoke(plugin->npp, windowScriptObject, callbackIdentifier, callbackArgs, 1, &browserResult); if (NPVARIANT_IS_OBJECT(browserResult)) { @@ -429,7 +612,7 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a return true; } } else if (name == pluginMethodIdentifiers[ID_TEST_CREATE_TEST_OBJECT]) { - NPObject *testObject = browser->createobject(obj->npp, getTestClass()); + NPObject *testObject = browser->createobject(plugin->npp, getTestClass()); assert(testObject->referenceCount == 1); OBJECT_TO_NPVARIANT(testObject, *result); return true; @@ -438,14 +621,14 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a // argument. if (argCount > 1 && NPVARIANT_IS_STRING(args[0])) { NPObject *windowScriptObject; - browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); + browser->getvalue(plugin->npp, NPNVWindowNPObject, &windowScriptObject); NPUTF8* callbackString = createCStringFromNPVariant(&args[0]); NPIdentifier callbackIdentifier = browser->getstringidentifier(callbackString); free(callbackString); NPVariant browserResult; - browser->invoke(obj->npp, windowScriptObject, callbackIdentifier, &args[1], 1, &browserResult); + browser->invoke(plugin->npp, windowScriptObject, callbackIdentifier, &args[1], 1, &browserResult); browser->releasevariantvalue(&browserResult); VOID_TO_NPVARIANT(*result); @@ -453,7 +636,7 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a } } else if (name == pluginMethodIdentifiers[ID_TEST_CLONE_OBJECT]) { // Create another instance of the same class - NPObject *new_object = browser->createobject(obj->npp, &pluginClass); + NPObject *new_object = browser->createobject(plugin->npp, &pluginClass); assert(new_object->referenceCount == 1); OBJECT_TO_NPVARIANT(new_object, *result); return true; @@ -467,7 +650,7 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a // arg2: Name of the method to call on the script object returned // from the callback NPObject *windowScriptObject; - browser->getvalue(obj->npp, NPNVWindowNPObject, + browser->getvalue(plugin->npp, NPNVWindowNPObject, &windowScriptObject); // Arg1 is the name of the callback @@ -478,7 +661,7 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a // Invoke a callback that returns a script object NPVariant object_result; - browser->invoke(obj->npp, windowScriptObject, callbackIdentifier, + browser->invoke(plugin->npp, windowScriptObject, callbackIdentifier, &args[1], 1, &object_result); // Script object returned @@ -491,13 +674,13 @@ static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *a free(object_mehod_string); // Create a fresh NPObject to be passed as an argument - NPObject *object_arg = browser->createobject(obj->npp, &pluginClass); + NPObject *object_arg = browser->createobject(plugin->npp, &pluginClass); NPVariant invoke_args[1]; OBJECT_TO_NPVARIANT(object_arg, invoke_args[0]); // Invoke the script method NPVariant object_method_result; - browser->invoke(obj->npp, script_object, object_method, + browser->invoke(plugin->npp, script_object, object_method, invoke_args, 1, &object_method_result); browser->releasevariantvalue(&object_result); diff --git a/webkit/tools/test_shell/image_decoder_unittest.cc b/webkit/tools/test_shell/image_decoder_unittest.cc index d5b9ac3..8c954cf 100644 --- a/webkit/tools/test_shell/image_decoder_unittest.cc +++ b/webkit/tools/test_shell/image_decoder_unittest.cc @@ -119,7 +119,7 @@ void ImageDecoderTest::TestDecoding() const { ReadFileToVector(*i, &image_contents); scoped_ptr<WebCore::ImageDecoder> decoder(CreateDecoder()); - RefPtr<WebCore::SharedBuffer> shared_contents(new WebCore::SharedBuffer); + RefPtr<WebCore::SharedBuffer> shared_contents(WebCore::SharedBuffer::create()); shared_contents->append(image_contents.data(), static_cast<int>(image_contents.size())); decoder->setData(shared_contents.get(), true); @@ -164,7 +164,7 @@ void ImageDecoderTest::TestChunkedDecoding() const { ReadFileToVector(*i, &image_contents); const int partial_size = static_cast<int>( (static_cast<double>(rand()) / RAND_MAX) * image_contents.size()); - RefPtr<WebCore::SharedBuffer> partial_contents(new WebCore::SharedBuffer); + RefPtr<WebCore::SharedBuffer> partial_contents(WebCore::SharedBuffer::create()); partial_contents->append(image_contents.data(), partial_size); // Make sure the image decoder doesn't fail when we ask for the frame buffer diff --git a/webkit/tools/test_shell/keyboard_unittest.cc b/webkit/tools/test_shell/keyboard_unittest.cc index c715db3..bc6bca8 100644 --- a/webkit/tools/test_shell/keyboard_unittest.cc +++ b/webkit/tools/test_shell/keyboard_unittest.cc @@ -16,253 +16,116 @@ #include "testing/gtest/include/gtest/gtest.h" -TEST(KeyboardUnitTestKeyDown, TestCtrlReturn) { - WebCore::EventNames::init(); +using WebCore::PlatformKeyboardEvent; +using WebCore::KeyboardEvent; +static inline const char* InterpretKeyEvent( + const WebKeyboardEvent& keyboard_event, + PlatformKeyboardEvent::Type key_type) { EditorClientImpl editor_impl(NULL); - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 0xD; - keyboard_event.key_data = 0xD; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertNewline"); + evt.SetKeyType(key_type); + RefPtr<KeyboardEvent> keyboardEvent = KeyboardEvent::create(evt, NULL); + return editor_impl.interpretKeyEvent(keyboardEvent.get()); } -TEST(KeyboardUnitTestKeyDown, TestCtrlZ) { - EditorClientImpl editor_impl(NULL); +static inline void SetupKeyDownEvent(WebKeyboardEvent& keyboard_event, + char key_code, + int modifiers) { + keyboard_event.key_code = key_code; + keyboard_event.key_data = key_code; + keyboard_event.modifiers = modifiers; + keyboard_event.type = WebInputEvent::KEY_DOWN; +} +static inline const char* InterpretCtrlKeyPress(char key_code) { WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 'Z'; - keyboard_event.key_data = 'Z'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "Undo"); + SetupKeyDownEvent(keyboard_event, key_code, WebInputEvent::CTRL_KEY); + + return InterpretKeyEvent(keyboard_event, PlatformKeyboardEvent::RawKeyDown); } -TEST(KeyboardUnitTestKeyDown, TestCtrlA) { - EditorClientImpl editor_impl(NULL); +static const int no_modifiers = 0; - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 'A'; - keyboard_event.key_data = 'A'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "SelectAll"); +TEST(KeyboardUnitTestKeyDown, TestCtrlReturn) { + // TODO(eseidel): This should be in a SETUP call using TEST_F + WebCore::EventNames::init(); + + EXPECT_STREQ("InsertNewline", InterpretCtrlKeyPress(0xD)); } -TEST(KeyboardUnitTestKeyDown, TestCtrlX) { - EditorClientImpl editor_impl(NULL); +TEST(KeyboardUnitTestKeyDown, TestCtrlZ) { + EXPECT_STREQ("Undo", InterpretCtrlKeyPress('Z')); +} - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 'X'; - keyboard_event.key_data = 'X'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); +TEST(KeyboardUnitTestKeyDown, TestCtrlA) { + EXPECT_STREQ("SelectAll", InterpretCtrlKeyPress('A')); +} - EXPECT_STREQ(result, "Cut"); +TEST(KeyboardUnitTestKeyDown, TestCtrlX) { + EXPECT_STREQ("Cut", InterpretCtrlKeyPress('X')); } TEST(KeyboardUnitTestKeyDown, TestCtrlC) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 'C'; - keyboard_event.key_data = 'C'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "Copy"); + EXPECT_STREQ("Copy", InterpretCtrlKeyPress('C')); } TEST(KeyboardUnitTestKeyDown, TestCtrlV) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 'V'; - keyboard_event.key_data = 'V'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "Paste"); + EXPECT_STREQ("Paste", InterpretCtrlKeyPress('V')); } TEST(KeyboardUnitTestKeyDown, TestEscape) { - EditorClientImpl editor_impl(NULL); - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = VK_ESCAPE; - keyboard_event.key_data = VK_ESCAPE; - keyboard_event.modifiers = 0; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "Cancel"); + SetupKeyDownEvent(keyboard_event, VK_ESCAPE, no_modifiers); + + const char* result = InterpretKeyEvent(keyboard_event, + PlatformKeyboardEvent::RawKeyDown); + EXPECT_STREQ("Cancel", result); } TEST(KeyboardUnitTestKeyDown, TestRedo) { - EditorClientImpl editor_impl(NULL); + EXPECT_STREQ(InterpretCtrlKeyPress('Y'), "Redo"); +} +static inline const char* InterpretTab(int modifiers) { WebKeyboardEvent keyboard_event; - keyboard_event.key_code = 'Y'; - keyboard_event.key_data = 'Y'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::RawKeyDown); - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "Redo"); + SetupKeyDownEvent(keyboard_event, '\t', modifiers); + return InterpretKeyEvent(keyboard_event, PlatformKeyboardEvent::Char); } - TEST(KeyboardUnitTestKeyPress, TestInsertTab) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\t'; - keyboard_event.key_data = '\t'; - keyboard_event.modifiers = 0; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertTab"); + EXPECT_STREQ("InsertTab", InterpretTab(no_modifiers)); } TEST(KeyboardUnitTestKeyPress, TestInsertBackTab) { - EditorClientImpl editor_impl(NULL); + EXPECT_STREQ("InsertBacktab", InterpretTab(WebInputEvent::SHIFT_KEY)); +} +static inline const char* InterpretNewLine(int modifiers) { WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\t'; - keyboard_event.key_data = '\t'; - keyboard_event.modifiers = WebInputEvent::SHIFT_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertBacktab"); + SetupKeyDownEvent(keyboard_event, '\r', modifiers); + return InterpretKeyEvent(keyboard_event, PlatformKeyboardEvent::Char); } TEST(KeyboardUnitTestKeyPress, TestInsertNewline) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\r'; - keyboard_event.key_data = '\r'; - keyboard_event.modifiers = 0; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertNewline"); + EXPECT_STREQ("InsertNewline", InterpretNewLine(no_modifiers)); } TEST(KeyboardUnitTestKeyPress, TestInsertNewline2) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\r'; - keyboard_event.key_data = '\r'; - keyboard_event.modifiers = WebInputEvent::CTRL_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertNewline"); + EXPECT_STREQ("InsertNewline", InterpretNewLine(WebInputEvent::CTRL_KEY)); } TEST(KeyboardUnitTestKeyPress, TestInsertlinebreak) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\r'; - keyboard_event.key_data = '\r'; - keyboard_event.modifiers = WebInputEvent::SHIFT_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertLineBreak"); + EXPECT_STREQ("InsertLineBreak", InterpretNewLine(WebInputEvent::SHIFT_KEY)); } TEST(KeyboardUnitTestKeyPress, TestInsertNewline3) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\r'; - keyboard_event.key_data = '\r'; - keyboard_event.modifiers = WebInputEvent::ALT_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); - EXPECT_STREQ(result, "InsertNewline"); + EXPECT_STREQ("InsertNewline", InterpretNewLine(WebInputEvent::ALT_KEY)); } TEST(KeyboardUnitTestKeyPress, TestInsertNewline4) { - EditorClientImpl editor_impl(NULL); - - WebKeyboardEvent keyboard_event; - keyboard_event.key_code = '\r'; - keyboard_event.key_data = '\r'; - keyboard_event.modifiers = WebInputEvent::ALT_KEY | WebInputEvent::SHIFT_KEY; - keyboard_event.type = WebInputEvent::KEY_DOWN; - - MakePlatformKeyboardEvent evt(keyboard_event); - evt.SetKeyType(WebCore::PlatformKeyboardEvent::Char); - - WebCore::KeyboardEvent keyboardEvent(evt, NULL); - const char* result = editor_impl.interpretKeyEvent(&keyboardEvent); + int modifiers = WebInputEvent::ALT_KEY | WebInputEvent::SHIFT_KEY; + const char* result = InterpretNewLine(modifiers); EXPECT_STREQ(result, "InsertNewline"); } diff --git a/webkit/tools/test_shell/layout_test_controller.cc b/webkit/tools/test_shell/layout_test_controller.cc index ad53a41..68f32be 100644 --- a/webkit/tools/test_shell/layout_test_controller.cc +++ b/webkit/tools/test_shell/layout_test_controller.cc @@ -9,10 +9,11 @@ #include "webkit/tools/test_shell/layout_test_controller.h" #include "base/basictypes.h" +#include "base/file_util.h" #include "base/logging.h" #include "base/message_loop.h" -#include "base/string_util.h" #include "base/path_service.h" +#include "base/string_util.h" #include "webkit/glue/webframe.h" #include "webkit/glue/webpreferences.h" #include "webkit/glue/webview.h" @@ -455,10 +456,7 @@ void LayoutTestController::execCommand( void LayoutTestController::setUseDashboardCompatibilityMode( const CppArgumentList& args, CppVariant* result) { - if (args.size() > 0 && args[0].isBool()) { - shell_->delegate()->SetDashboardCompatibilityMode(args[0].value.boolValue); - } - + // We have no need to support Dashboard Compatibility Mode (mac-only) result->SetNull(); } @@ -478,6 +476,15 @@ void LayoutTestController::pathToLocalResource( return; std::string url = args[0].ToString(); + if (StartsWithASCII(url, "/tmp/", true)) { + // We want a temp file. + std::wstring path; + PathService::Get(base::DIR_TEMP, &path); + file_util::AppendToPath(&path, UTF8ToWide(url.substr(5))); + result->Set(WideToUTF8(path)); + return; + } + // Some layout tests use file://// which we resolve as a UNC path. Normalize // them to just file:///. while (StartsWithASCII(url, "file:////", false)) { diff --git a/webkit/tools/test_shell/test_shell.cc b/webkit/tools/test_shell/test_shell.cc index f11d21a..e2f1737 100644 --- a/webkit/tools/test_shell/test_shell.cc +++ b/webkit/tools/test_shell/test_shell.cc @@ -247,7 +247,6 @@ void TestShell::ResetWebPreferences() { web_prefs_->shrinks_standalone_images_to_fit = false; web_prefs_->uses_universal_detector = false; web_prefs_->text_areas_are_resizable = false; - web_prefs_->dashboard_compatibility_mode = false; web_prefs_->java_enabled = true; web_prefs_->allow_scripts_to_close_windows = false; } @@ -987,13 +986,7 @@ std::string TestShell::RewriteLocalUrl(const std::string& url) { namespace webkit_glue { -bool HistoryContains(const char16* url, int url_len, - const char* document_host, int document_host_len, - bool is_dns_prefetch_enabled) { - return false; -} - -void DnsPrefetchUrl(const char16* url, int url_length) {} +void PrefetchDns(const std::string& hostname) {} void PrecacheUrl(const char16* url, int url_length) {} @@ -1063,6 +1056,10 @@ HCURSOR LoadCursor(int cursor_id) { return NULL; } +SkBitmap* GetBitmapResource(int resource_id) { + return NULL; +} + bool GetApplicationDirectory(std::wstring *path) { return PathService::Get(base::DIR_EXE, path); } diff --git a/webkit/tools/test_shell/test_shell.vcproj b/webkit/tools/test_shell/test_shell.vcproj index 3396f1d..8a373b48 100644 --- a/webkit/tools/test_shell/test_shell.vcproj +++ b/webkit/tools/test_shell/test_shell.vcproj @@ -12,8 +12,6 @@ Name="Win32" /> </Platforms> - <ToolFiles> - </ToolFiles> <Configurations> <Configuration Name="Debug|Win32" diff --git a/webkit/tools/test_shell/test_webview_delegate.cc b/webkit/tools/test_shell/test_webview_delegate.cc index 9711aa4..f7cc828 100644 --- a/webkit/tools/test_shell/test_webview_delegate.cc +++ b/webkit/tools/test_shell/test_webview_delegate.cc @@ -336,6 +336,12 @@ void TestWebViewDelegate::DidFinishDocumentLoadForFrame(WebView* webview, if (shell_->ShouldDumpFrameLoadCallbacks()) { printf("%S - didFinishDocumentLoadForFrame\n", GetFrameDescription(frame).c_str()); + } else { + unsigned pending_unload_events = frame->PendingFrameUnloadEventCount(); + if (pending_unload_events) { + printf("%S - has %u onunload handler(s)\n", + GetFrameDescription(frame).c_str(), pending_unload_events); + } } } @@ -655,12 +661,6 @@ void TestWebViewDelegate::SetUserStyleSheetLocation(const GURL& location) { shell_->webView()->SetPreferences(*prefs); } -void TestWebViewDelegate::SetDashboardCompatibilityMode(bool use_mode) { - WebPreferences* prefs = shell_->GetWebPreferences(); - prefs->dashboard_compatibility_mode = use_mode; - shell_->webView()->SetPreferences(*prefs); -} - // WebWidgetDelegate --------------------------------------------------------- HWND TestWebViewDelegate::GetContainingWindow(WebWidget* webwidget) { diff --git a/webkit/tools/test_shell/test_webview_delegate.h b/webkit/tools/test_shell/test_webview_delegate.h index 39c1421..0a729e5 100644 --- a/webkit/tools/test_shell/test_webview_delegate.h +++ b/webkit/tools/test_shell/test_webview_delegate.h @@ -230,7 +230,6 @@ class TestWebViewDelegate : public base::RefCounted<TestWebViewDelegate>, // Methods for modifying WebPreferences void SetUserStyleSheetEnabled(bool is_enabled); void SetUserStyleSheetLocation(const GURL& location); - void SetDashboardCompatibilityMode(bool use_mode); // Sets the webview as a drop target. void RegisterDragDrop(); |