diff --git a/.wkdev-sdk-version b/.wkdev-sdk-version index 46351afcf4aee..84b073945ee8f 100644 --- a/.wkdev-sdk-version +++ b/.wkdev-sdk-version @@ -1 +1 @@ -2.55-v1-a95eaf2 +2.55-v3-a507ffd diff --git a/CLAUDE.md b/CLAUDE.md index 0b8a2a27ac81e..3795116f5ae79 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -158,7 +158,7 @@ Custom event loop implementation for Bun's runtime requirements ``` ### When a test fails, and after an upstream sync -`JSTests/`, `LayoutTests/js` and the PerformanceTests collections are upstream's tests, and this fork has changed 121 of them. `JSTests/BUN-TEST-DIFFERENCES.md` lists every one by reason: the behaviors the fork has on purpose (with the fork code behind each and the files whose expectations follow it), the tests narrowed to the modes or builds they can pass in, and the ones skipped with `TODO(bun)` for a known gap. Read it before changing a test's expectation or skipping one: a failure that matches an entry there means the test is what to change; one that matches none is a regression in the engine. Its last section is the procedure for sorting a new failure. When a test is changed, add it to that file, and put a `// Bun:` or `// TODO(bun):` comment on the changed line saying what upstream expects. `JSTests/CLAUDE.md` and `JSTests/README.md` are upstream's files: leave them as they are. +`JSTests/`, `LayoutTests/js` and the PerformanceTests collections are upstream's tests, and this fork has changed 122 of them. `JSTests/BUN-TEST-DIFFERENCES.md` lists every one by reason: the behaviors the fork has on purpose (with the fork code behind each and the files whose expectations follow it), the tests narrowed to the modes or builds they can pass in, and the ones skipped with `TODO(bun)` for a known gap. Read it before changing a test's expectation or skipping one: a failure that matches an entry there means the test is what to change; one that matches none is a regression in the engine. Its last section is the procedure for sorting a new failure. When a test is changed, add it to that file, and put a `// Bun:` or `// TODO(bun):` comment on the changed line saying what upstream expects. `JSTests/CLAUDE.md` and `JSTests/README.md` are upstream's files: leave them as they are. ## Development Tips diff --git a/Configurations/CommonBase.xcconfig b/Configurations/CommonBase.xcconfig index 2592be4c1ecf4..79b290c369426 100644 --- a/Configurations/CommonBase.xcconfig +++ b/Configurations/CommonBase.xcconfig @@ -133,7 +133,7 @@ SWIFT_OPTIMIZATION_LEVEL[config=Debug] = -Onone; WK_SWIFT_MEMORY_SAFETY_FLAGS = -strict-memory-safety -enable-experimental-feature Lifetimes -enable-experimental-feature LifetimeDependence -enable-experimental-feature ImportNonPublicCxxMembers; // Treat memory safety warnings as errors. -WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS = -Werror StrictMemorySafety -Werror ForeignReferenceType; +WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS = -Werror StrictMemorySafety -Werror ForeignReferenceType -Werror RegionIsolation; // rdar://164903024: Work around false positives in some SDK versions. WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS[sdk=*26.3*] = ; @@ -144,6 +144,7 @@ WK_SWIFT_CLANG_DEPLOYMENT_TARGET = $(WK_SWIFT_CLANG_DEPLOYMENT_TARGET_$(WK_PLATF WK_SWIFT_CLANG_DEPLOYMENT_TARGET_macosx = -clang-target $(CURRENT_ARCH)-apple-macos$(MACOSX_DEPLOYMENT_TARGET); // rdar://170129992: remove -track-system-dependencies when resolved -OTHER_SWIFT_FLAGS = $(inherited) $(WK_AVAILABILITY_OVERLAY_SWIFT_FLAGS) -Xcc -fvisibility=hidden -Werror ExistentialAny -Werror NoUseUnstructuredThrowingTask -Werror NoUsage -enable-upcoming-feature ExistentialAny $(WK_SWIFT_MEMORY_SAFETY_FLAGS) $(WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS) $(WK_SWIFT_CLANG_DEPLOYMENT_TARGET) $(WK_SANITIZER_OTHER_SWIFT_FLAGS) -enable-upcoming-feature InternalImportsByDefault -enable-upcoming-feature MemberImportVisibility -track-system-dependencies -enable-experimental-feature ImportCxxMembersLazily -enable-experimental-feature SuppressedAssociatedTypes -enable-experimental-feature SuppressedAssociatedTypesWithDefaults -enable-experimental-feature ForeignReferenceTypeInheritance; +// FIXME(rdar://189511928, rdar://189512247): remove -disable-round-trip-debug-types when both are resolved +OTHER_SWIFT_FLAGS = $(inherited) $(WK_AVAILABILITY_OVERLAY_SWIFT_FLAGS) -Xcc -fvisibility=hidden -Werror ExistentialAny -Werror NoUseUnstructuredThrowingTask -Werror NoUsage -enable-upcoming-feature ExistentialAny $(WK_SWIFT_MEMORY_SAFETY_FLAGS) $(WK_SWIFT_MEMORY_SAFETY_ERROR_FLAGS) $(WK_SWIFT_CLANG_DEPLOYMENT_TARGET) $(WK_SANITIZER_OTHER_SWIFT_FLAGS) -enable-upcoming-feature InternalImportsByDefault -enable-upcoming-feature MemberImportVisibility -track-system-dependencies -enable-experimental-feature ImportCxxMembersLazily -enable-experimental-feature SuppressedAssociatedTypes -enable-experimental-feature SuppressedAssociatedTypesWithDefaults -enable-experimental-feature ForeignReferenceTypeInheritance -Xfrontend -disable-round-trip-debug-types -enable-experimental-feature SafeInteropWrappers; OTHER_LIBTOOLFLAGS = -no_warning_for_no_symbols; diff --git a/Configurations/DeploymentTargets.xcconfig b/Configurations/DeploymentTargets.xcconfig index bd2799cfa0725..02b338cbee819 100644 --- a/Configurations/DeploymentTargets.xcconfig +++ b/Configurations/DeploymentTargets.xcconfig @@ -56,6 +56,161 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_150900[sdk=macosx15.5*] = 15.5; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_150900[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_150900[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_150900[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000 = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260000[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100 = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260100[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200 = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260200[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300 = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260300[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400 = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260400[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500 = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260500[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600 = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260600[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700 = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260700[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800 = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260800[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900 = 26.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.0*] = 15.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.1*] = 15.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.2*] = 15.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.3*] = 15.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.4*] = 15.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.5*] = 15.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.6*] = 15.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.7*] = 15.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.8*] = 15.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_260900[sdk=macosx26.8*] = 26.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000 = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx15.0*] = 15.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx15.1*] = 15.1; @@ -67,6 +222,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270000[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100 = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx15.0*] = 15.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx15.1*] = 15.1; @@ -78,6 +243,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270100[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200 = 27.2; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx15.0*] = 15.0; @@ -90,6 +265,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270200[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300 = 27.3; @@ -103,6 +288,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270300[sdk=macosx27.2*] = 27.2; @@ -117,6 +312,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270400[sdk=macosx27.2*] = 27.2; @@ -132,6 +337,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270500[sdk=macosx27.2*] = 27.2; @@ -148,6 +363,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270600[sdk=macosx27.2*] = 27.2; @@ -165,6 +390,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270700[sdk=macosx27.2*] = 27.2; @@ -183,6 +418,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270800[sdk=macosx27.2*] = 27.2; @@ -202,6 +447,16 @@ _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx15.6*] = 15.6; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx15.7*] = 15.7; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx15.8*] = 15.8; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx15.9*] = 15.9; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.0*] = 26.0; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.1*] = 26.1; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.2*] = 26.2; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.3*] = 26.3; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.4*] = 26.4; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.5*] = 26.5; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.6*] = 26.6; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.7*] = 26.7; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.8*] = 26.8; +_MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx26.9*] = 26.9; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx27.0*] = 27.0; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx27.1*] = 27.1; _MACOSX_DEPLOYMENT_TARGET_FOR_MINOR_VERSION_270900[sdk=macosx27.2*] = 27.2; diff --git a/Configurations/Makefile b/Configurations/Makefile index 8abefc5315c4f..ced002d72f450 100644 --- a/Configurations/Makefile +++ b/Configurations/Makefile @@ -3,7 +3,7 @@ # on. Update this list when new major versions are released, to support # building downlevels targeting those OS versions. Remove from this list when # WebKit drops downlevel support for an OS version. -SUPPORTED_MAC_OS_VERSIONS = 15 27 +SUPPORTED_MAC_OS_VERSIONS = 15 26 27 DeploymentTargets.xcconfig: Scripts/generate-deployment-target-xcconfig.py Makefile ./$< $(SUPPORTED_MAC_OS_VERSIONS) > $@ diff --git a/Dockerfile b/Dockerfile index ef4e4a062d1c5..ba3de5f236856 100644 --- a/Dockerfile +++ b/Dockerfile @@ -449,7 +449,7 @@ RUN --mount=type=tmpfs,target=/webkitbuild \ cp -r $WEBKIT_OUT_DIR/bin /output/bin && \ cp $WEBKIT_OUT_DIR/*.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.h" -exec sh -c 'cp "$1" "/output/include/JavaScriptCore/$(basename "$1")"' sh {} \; && \ - find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.json" -exec sh -c 'cp "$1" "/output/$(basename "$1")"' sh {} \; && \ + cp $WEBKIT_OUT_DIR/JavaScriptCore/Scripts/CombinedDomains.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ find $WEBKIT_OUT_DIR/JavaScriptCore/PrivateHeaders/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ cp -r $WEBKIT_OUT_DIR/WTF/Headers/wtf/ /output/include && \ diff --git a/Dockerfile.android b/Dockerfile.android index fd9171870109c..cc809c8f1c1e2 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -212,7 +212,7 @@ RUN --mount=type=tmpfs,target=/webkitbuild \ cp -r $WEBKIT_OUT_DIR/bin /output/bin && \ cp $WEBKIT_OUT_DIR/*.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.h" -exec sh -c 'cp "$1" "/output/include/JavaScriptCore/$(basename "$1")"' sh {} \; && \ - find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.json" -exec sh -c 'cp "$1" "/output/$(basename "$1")"' sh {} \; && \ + cp $WEBKIT_OUT_DIR/JavaScriptCore/Scripts/CombinedDomains.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ find $WEBKIT_OUT_DIR/JavaScriptCore/PrivateHeaders/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ cp -r $WEBKIT_OUT_DIR/WTF/Headers/wtf/ /output/include && \ diff --git a/Dockerfile.freebsd b/Dockerfile.freebsd index 2aa7769bba214..a7c9d04fe228c 100644 --- a/Dockerfile.freebsd +++ b/Dockerfile.freebsd @@ -205,7 +205,7 @@ RUN --mount=type=tmpfs,target=/webkitbuild \ cp -r $WEBKIT_OUT_DIR/bin /output/bin && \ cp $WEBKIT_OUT_DIR/*.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.h" -exec sh -c 'cp "$1" "/output/include/JavaScriptCore/$(basename "$1")"' sh {} \; && \ - find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.json" -exec sh -c 'cp "$1" "/output/$(basename "$1")"' sh {} \; && \ + cp $WEBKIT_OUT_DIR/JavaScriptCore/Scripts/CombinedDomains.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ find $WEBKIT_OUT_DIR/JavaScriptCore/PrivateHeaders/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ cp -r $WEBKIT_OUT_DIR/WTF/Headers/wtf/ /output/include && \ diff --git a/Dockerfile.musl b/Dockerfile.musl index ebc80602503e8..c97f9f89c2022 100644 --- a/Dockerfile.musl +++ b/Dockerfile.musl @@ -263,7 +263,7 @@ RUN --mount=type=tmpfs,target=/webkitbuild \ cp -r $WEBKIT_OUT_DIR/bin /output/bin && \ cp $WEBKIT_OUT_DIR/*.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.h" -exec sh -c 'cp "$1" "/output/include/JavaScriptCore/$(basename "$1")"' sh {} \; && \ - find $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/ -name "*.json" -exec sh -c 'cp "$1" "/output/$(basename "$1")"' sh {} \; && \ + cp $WEBKIT_OUT_DIR/JavaScriptCore/Scripts/CombinedDomains.json /output && \ find $WEBKIT_OUT_DIR/JavaScriptCore/Headers/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ find $WEBKIT_OUT_DIR/JavaScriptCore/PrivateHeaders/JavaScriptCore/ -name "*.h" -exec cp {} /output/include/JavaScriptCore/ \; && \ cp -r $WEBKIT_OUT_DIR/WTF/Headers/wtf/ /output/include && \ diff --git a/Dockerfile.windows b/Dockerfile.windows index 2d2df0b75962a..1f1e9e1ccfa69 100644 --- a/Dockerfile.windows +++ b/Dockerfile.windows @@ -468,7 +468,7 @@ RUN --mount=type=tmpfs,target=/webkitbuild \ cp -rfL $WEBKIT_OUT_DIR/JavaScriptCore/PrivateHeaders/JavaScriptCore/* /output/include/JavaScriptCore/ && \ cp -fL $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/*.h /output/include/JavaScriptCore/ && \ cp -fL $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/*/*.h /output/include/JavaScriptCore/ && \ - cp -fL $WEBKIT_OUT_DIR/JavaScriptCore/DerivedSources/*.json /output/ && \ + cp -fL $WEBKIT_OUT_DIR/JavaScriptCore/Scripts/CombinedDomains.json /output/ && \ { cp -rL $WEBKIT_OUT_DIR/WTF/DerivedSources/* /output/include/wtf/ 2>/dev/null || true; } && \ cp -rL $WEBKIT_OUT_DIR/WTF/Headers/wtf/* /output/include/wtf/ && \ cp -rL $WEBKIT_OUT_DIR/bmalloc/Headers/bmalloc/* /output/include/bmalloc/ && \ diff --git a/JSTests/BUN-TEST-DIFFERENCES.md b/JSTests/BUN-TEST-DIFFERENCES.md index 8c7a443741376..29523434c9dd3 100644 --- a/JSTests/BUN-TEST-DIFFERENCES.md +++ b/JSTests/BUN-TEST-DIFFERENCES.md @@ -1,6 +1,6 @@ # Where this fork's tests differ from upstream's, and why -`JSTests/`, `LayoutTests/js` and the PerformanceTests collections are upstream's tests. This fork changes 121 of them and +`JSTests/`, `LayoutTests/js` and the PerformanceTests collections are upstream's tests. This fork changes 122 of them and three runner scripts. Every change is listed here by the reason for it, so that after an upstream sync a failing test can be sorted into one of three piles: @@ -93,7 +93,8 @@ Rules for an edit to an upstream test: - A sticky or global `/u` regexp whose `lastIndex` is inside a pair matches from the pair's start, as the spec's `RegExpBuiltinExec` and V8 do. Upstream: no match. - A match is not reported at an index between the two halves. Here the fork differs from V8 too. -- File: `stress/regexp-unicode-code-unit-read-for-bmp-terms.js`, two expectations. +- Files: `stress/regexp-unicode-code-unit-read-for-bmp-terms.js`, two expectations; + `stress/regexp-stringlist-eol-length-groups.js`, one. ### A7. A host time-zone change is seen when the VM is next entered diff --git a/JSTests/microbenchmarks/array-literal-tiny.js b/JSTests/microbenchmarks/array-literal-tiny.js new file mode 100644 index 0000000000000..1d12581477dd8 --- /dev/null +++ b/JSTests/microbenchmarks/array-literal-tiny.js @@ -0,0 +1,10 @@ +function test(x) { + return (x & 1) ? [x] : []; +} +noInline(test); + +let length = 0; +for (let i = 0; i < 2e6; ++i) + length += test(i).length; +if (length !== 1e6) + throw new Error("bad length " + length); diff --git a/JSTests/microbenchmarks/array-map-tiny.js b/JSTests/microbenchmarks/array-map-tiny.js new file mode 100644 index 0000000000000..32f8b604c85a1 --- /dev/null +++ b/JSTests/microbenchmarks/array-map-tiny.js @@ -0,0 +1,11 @@ +function test(array) { + return array.map((x) => x + 0.5); +} +noInline(test); + +let arrays = [[], [1.5]]; +let length = 0; +for (let i = 0; i < 2e6; ++i) + length += test(arrays[i & 1]).length; +if (length !== 1e6) + throw new Error("bad length " + length); diff --git a/JSTests/microbenchmarks/json-stringify-substring.js b/JSTests/microbenchmarks/json-stringify-substring.js new file mode 100644 index 0000000000000..f362b19b8956d --- /dev/null +++ b/JSTests/microbenchmarks/json-stringify-substring.js @@ -0,0 +1,16 @@ +function test(id, str) +{ + return JSON.stringify({ id, excerpt: str.slice(0, 120), date: str.slice(130, 140) }); +} +noInline(test); + +const strs = []; +for (let k = 0; k < 16; k++) + strs.push(("the quick brown fox jumps over the lazy dog " + k + " ").repeat(8)); + +let result; +for (let i = 0; i < 1000000; ++i) + result = test(i & 15, strs[i & 15]); + +if (test(1, "abcdefghij".repeat(20)) !== `{"id":1,"excerpt":"${"abcdefghij".repeat(12)}","date":"abcdefghij"}`) + throw new Error("bad result: " + test(1, "abcdefghij".repeat(20))); diff --git a/JSTests/microbenchmarks/new-array-variable-size-tiny.js b/JSTests/microbenchmarks/new-array-variable-size-tiny.js new file mode 100644 index 0000000000000..08e81cab73acf --- /dev/null +++ b/JSTests/microbenchmarks/new-array-variable-size-tiny.js @@ -0,0 +1,10 @@ +function test(size) { + return new Array(size); +} +noInline(test); + +let length = 0; +for (let i = 0; i < 2e6; ++i) + length += test(i & 1).length; +if (length !== 1e6) + throw new Error("bad length " + length); diff --git a/JSTests/microbenchmarks/number-isFinite-untyped.js b/JSTests/microbenchmarks/number-isFinite-untyped.js new file mode 100644 index 0000000000000..93844033d3701 --- /dev/null +++ b/JSTests/microbenchmarks/number-isFinite-untyped.js @@ -0,0 +1,24 @@ +(function () { + var result = 0; + var values = [ + 0, + -1, + 1.5, + 2 ** 53 - 1, + NaN, + Infinity, + "1", + null, + undefined, + true, + {}, + ]; + for (var i = 0; i < 1000000; ++i) { + for (var j = 0; j < values.length; ++j) { + if (Number.isFinite(values[j])) + result++; + } + } + if (result !== 1000000 * 4) + throw "Error: bad result: " + result; +})(); diff --git a/JSTests/microbenchmarks/number-isNaN-untyped.js b/JSTests/microbenchmarks/number-isNaN-untyped.js new file mode 100644 index 0000000000000..5d0c219338d3d --- /dev/null +++ b/JSTests/microbenchmarks/number-isNaN-untyped.js @@ -0,0 +1,24 @@ +(function () { + var result = 0; + var values = [ + 0, + -1, + 1.5, + 2 ** 53 - 1, + NaN, + Infinity, + "1", + null, + undefined, + true, + {}, + ]; + for (var i = 0; i < 1000000; ++i) { + for (var j = 0; j < values.length; ++j) { + if (Number.isNaN(values[j])) + result++; + } + } + if (result !== 1000000 * 1) + throw "Error: bad result: " + result; +})(); diff --git a/JSTests/microbenchmarks/number-isSafeInteger-untyped.js b/JSTests/microbenchmarks/number-isSafeInteger-untyped.js new file mode 100644 index 0000000000000..6483f5a003cef --- /dev/null +++ b/JSTests/microbenchmarks/number-isSafeInteger-untyped.js @@ -0,0 +1,24 @@ +(function () { + var result = 0; + var values = [ + 0, + -1, + 1.5, + 2 ** 53 - 1, + NaN, + Infinity, + "1", + null, + undefined, + true, + {}, + ]; + for (var i = 0; i < 1000000; ++i) { + for (var j = 0; j < values.length; ++j) { + if (Number.isSafeInteger(values[j])) + result++; + } + } + if (result !== 1000000 * 3) + throw "Error: bad result: " + result; +})(); diff --git a/JSTests/microbenchmarks/number-to-locale-string-with-locales.js b/JSTests/microbenchmarks/number-to-locale-string-with-locales.js new file mode 100644 index 0000000000000..077537d39b7e2 --- /dev/null +++ b/JSTests/microbenchmarks/number-to-locale-string-with-locales.js @@ -0,0 +1,8 @@ +function test(value) +{ + return value.toLocaleString("en-US"); +} +noInline(test); + +for (var i = 0; i < 5e4; ++i) + test(i); diff --git a/JSTests/microbenchmarks/regexp-unicode-property-letters.js b/JSTests/microbenchmarks/regexp-unicode-property-letters.js new file mode 100644 index 0000000000000..8071dd0fbacb9 --- /dev/null +++ b/JSTests/microbenchmarks/regexp-unicode-property-letters.js @@ -0,0 +1,26 @@ +let phrases = [ + "正規表現は文字列の集合を一つの文字列で表現する方法の一つである", + "Регулярныевыраженияформальныйязыкпоиска", + "κανονικήέκφρασηείναιμιαακολουθίαχαρακτήρων", + "정규표현식은특정한규칙을가진문자열의집합을표현하는데사용하는형식언어이다", + "aregularexpressionisasequenceofcharactersthatspecifiesamatchpattern", + "التعبيراتالنمطيةهيسلسلةمنالمحارف", + "𠮷野家𠀋𠂉𠃌𠄀𠅁𠆢𠇇𠈓𠉁𠊛𠋆𠌫𠍱𠎁𠏹", +]; +let text = ""; +for (let i = 0; i < 60; ++i) + text += phrases[(i * 3) % phrases.length] + (i % 4 ? " " : "42, "); + +let letters = /\p{L}+/gu; +let identifier = /[\p{L}\p{N}_]+/gu; +let result = 0; +for (let i = 0; i < 20000; ++i) { + letters.lastIndex = 0; + while (letters.test(text)) + result++; + identifier.lastIndex = 0; + while (identifier.test(text)) + result++; +} +if (result !== 120 * 20000) + throw new Error("Bad result: " + result); diff --git a/JSTests/microbenchmarks/string-iterator-for-of-16bit-ascii.js b/JSTests/microbenchmarks/string-iterator-for-of-16bit-ascii.js new file mode 100644 index 0000000000000..e2975438a9454 --- /dev/null +++ b/JSTests/microbenchmarks/string-iterator-for-of-16bit-ascii.js @@ -0,0 +1,17 @@ +function countE(string) { + var result = 0; + for (var character of string) { + if (character === 'e') + result++; + } + return result; +} +noInline(countE); + +var string = "Hello, World! The quick brown fox jumps over the lazy dog \u2014 twice.".repeat(4); +var expected = countE(string); +for (var i = 0; i < 1e5; ++i) { + var result = countE(string); + if (result !== expected) + throw new Error("bad result: " + result); +} diff --git a/JSTests/microbenchmarks/string-replace-regexp-substring-no-match.js b/JSTests/microbenchmarks/string-replace-regexp-substring-no-match.js new file mode 100644 index 0000000000000..ca4ec73c922c7 --- /dev/null +++ b/JSTests/microbenchmarks/string-replace-regexp-substring-no-match.js @@ -0,0 +1,19 @@ +function test(str, re, replacer) +{ + return str.slice(0, 120).replace(re, replacer); +} +noInline(test); + +const strs = []; +for (let k = 0; k < 16; k++) + strs.push(("the quick brown fox jumps over the lazy dog " + k + " ").repeat(8)); + +const re = /[&<>"']/g; +const replacer = (character) => `&#${character.charCodeAt(0)};`; + +let result; +for (let i = 0; i < 1000000; ++i) + result = test(strs[i & 15], re, replacer); + +if (test("a < b ".repeat(30), re, replacer) !== "a < b ".repeat(20)) + throw new Error("bad result: " + test("a < b ".repeat(30), re, replacer)); diff --git a/JSTests/stress/arguments-not-captured-by-other-binding.js b/JSTests/stress/arguments-not-captured-by-other-binding.js new file mode 100644 index 0000000000000..43728d4835c0c --- /dev/null +++ b/JSTests/stress/arguments-not-captured-by-other-binding.js @@ -0,0 +1,172 @@ +function assert(condition, message) { + if (!condition) + throw new Error(message); +} + +function churn(depth) { + if (depth <= 0) + return 0; + let sum = 0; + const objects = []; + for (let i = 0; i < 200; ++i) + objects.push({ a: i, b: [i] }); + for (let i = 0; i < objects.length; ++i) + sum += objects[i].a; + return sum + churn(depth - 1); +} + +function collect(allocate) { + let allocated = allocate(); + for (let round = 0; round < 3; ++round) { + churn(3); + $.clearKeptObjects(); + $.gc(); + } + return allocated; +} + +let unretained = collect(function() { + function make(payload) { + const host = {}; + const worker = () => host; + void arguments[0]; + return worker; + } + let payload = {}; + let ref = new WeakRef(payload); + let worker = make(payload); + payload = null; + return { ref, worker }; +}); +assert(unretained.ref.deref() === undefined, "a closure over another binding kept the arguments object alive"); +assert(typeof unretained.worker() === "object", "the other binding is still reachable"); + +let retained = collect(function() { + function make(payload) { + return () => arguments[0]; + } + let payload = { kept: true }; + let ref = new WeakRef(payload); + let arrow = make(payload); + payload = null; + return { ref, arrow }; +}); +assert(retained.ref.deref() === retained.arrow(), "an arrow that reads arguments must keep that object alive"); + +function sloppyLocal(value) { + const unused = () => 1; + return arguments[0]; +} +assert(sloppyLocal(7) === 7, "sloppy arguments[0]"); + +function sloppyAlias(value) { + const unused = () => 1; + arguments[0] = 5; + return value; +} +assert(sloppyAlias(1) === 5, "sloppy arguments still aliases an uncaptured parameter"); + +function sloppyCapturedParameter(value) { + const read = () => value; + arguments[0] = 5; + return [value, read()]; +} +let captured = sloppyCapturedParameter(1); +assert(captured[0] === 5 && captured[1] === 5, "scoped arguments still aliases a captured parameter"); + +function strictLocal(value) { + "use strict"; + const unused = () => 1; + return arguments[0]; +} +assert(strictLocal(7) === 7, "strict arguments[0]"); + +function strictAssign(value) { + "use strict"; + const unused = () => 1; + arguments[0] = 5; + return value; +} +assert(strictAssign(1) === 1, "strict arguments does not alias the parameter"); + +function withShadow(value) { + const unused = () => 1; + with ({ arguments: [42] }) + return arguments[0]; +} +assert(withShadow(1) === 42, "with must still shadow arguments"); + +function evalReads(value) { + const unused = () => 1; + return eval("arguments[0]"); +} +assert(evalReads(8) === 8, "direct eval must still see arguments"); + +function defaults(value = 1) { + const unused = () => 2; + arguments[0] = 9; + return [value, arguments[0]]; +} +let defaulted = defaults(3); +assert(defaulted[0] === 3 && defaulted[1] === 9, "non-simple arguments stays unmapped"); + +function nestedOwnArguments(value) { + const unused = () => 1; + function inner() { return arguments[0]; } + return [arguments[0], inner(2)]; +} +let nested = nestedOwnArguments(4); +assert(nested[0] === 4 && nested[1] === 2, "a nested function has its own arguments"); + +function* generatorNoParams() { + const unused = () => 1; + yield arguments[0]; +} +assert(generatorNoParams(4).next().value === 4, "generator with no parameters"); + +function* generatorWithParam(value) { + const unused = () => 1; + yield arguments[0]; +} +assert(generatorWithParam(5).next().value === 5, "generator with a parameter"); + +async function asyncNoParams() { + const unused = () => 1; + await 1; + return arguments[0]; +} +let asyncValue; +let asyncError; +asyncNoParams(6).then(value => { asyncValue = value; }, error => { asyncError = error; }); +drainMicrotasks(); +if (asyncError) + throw asyncError; +assert(asyncValue === 6, "async function with no parameters"); + +async function* asyncGeneratorNoParams() { + const unused = () => 1; + yield arguments[0]; +} +let asyncGeneratorValue; +let asyncGeneratorError; +asyncGeneratorNoParams(7).next().then(result => { asyncGeneratorValue = result.value; }, error => { asyncGeneratorError = error; }); +drainMicrotasks(); +if (asyncGeneratorError) + throw asyncGeneratorError; +assert(asyncGeneratorValue === 7, "async generator with no parameters"); + +async function asyncNoAwait() { + const unused = () => 1; + return arguments[0]; +} +let noAwaitValue; +asyncNoAwait(8).then(value => { noAwaitValue = value; }); +drainMicrotasks(); +assert(noAwaitValue === 8, "async function without await"); + +function restArguments(value, ...rest) { + const unused = () => 1; + return [arguments[0], arguments[1], rest[0]]; +} +let rested = restArguments(1, 2); +assert(rested[0] === 1 && rested[1] === 2 && rested[2] === 2, "rest arguments"); diff --git a/JSTests/stress/array-buffer-incoming-references-across-eden-and-full-gc.js b/JSTests/stress/array-buffer-incoming-references-across-eden-and-full-gc.js new file mode 100644 index 0000000000000..761d30eadc682 --- /dev/null +++ b/JSTests/stress/array-buffer-incoming-references-across-eden-and-full-gc.js @@ -0,0 +1,94 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error("expected " + expected + " but got " + actual); +} + +const count = 200; + +const buffers = []; +const views = []; +for (let i = 0; i < count; i++) { + const buffer = new ArrayBuffer(64); + buffers.push(buffer); + views.push(new Uint8Array(buffer)); +} +edenGC(); +for (let i = 0; i < count; i++) { + views.push(new Int32Array(buffers[i], 4, 4)); + new DataView(buffers[i], 1, 2); +} +edenGC(); +fullGC(); +edenGC(); +for (let i = 0; i < count; i++) { + views.push(new Uint8Array(buffers[i], 1, 3)); + buffers[i].transfer(); +} +for (const view of views) + shouldBe(view.length, 0); + +const orphans = []; +for (let i = 0; i < count; i++) { + const view = new Uint8Array(new ArrayBuffer(32)); + view[1] = 7; + orphans.push(view.subarray(1, 9)); +} +edenGC(); +for (let i = 0; i < count; i++) + orphans[i] = orphans[i].subarray(0, 4); +edenGC(); +fullGC(); +for (let i = 0; i < count; i++) { + shouldBe(orphans[i][0], 7); + shouldBe(orphans[i].buffer.byteLength, 32); +} + +const materialized = []; +for (let i = 0; i < count; i++) { + const view = new Uint8Array(16); + view[2] = 9; + materialized.push(view); +} +edenGC(); +for (let i = 0; i < count; i++) + materialized[i] = new Uint8Array(materialized[i].buffer, 2, 4); +edenGC(); +edenGC(); +for (let i = 0; i < count; i++) + shouldBe(materialized[i][0], 9); + +for (let i = 0; i < count; i++) { + const buffer = new ArrayBuffer(16); + new Uint8Array(buffer); + new Int8Array(buffer); +} +edenGC(); + +const stale = []; +for (let i = 0; i < count; i++) { + const buffer = new ArrayBuffer(64); + stale.push(buffer, new Uint8Array(buffer)); +} +edenGC(); +for (let round = 0; round < 3; round++) { + for (let pass = 0; pass < 2; pass++) { + for (let i = 0; i < count; i++) { + for (let j = 0; j < 8; j++) + new Uint8Array(stale[i * 2], j, 8); + } + edenGC(); + } + const shared = new ArrayBuffer(64); + const fresh = []; + for (let i = 0; i < count * 16; i++) + fresh.push(new Uint8Array(shared, 0, 8)); + for (let i = 0; i < count; i++) { + const moved = stale[i * 2].transfer(); + shouldBe(stale[i * 2 + 1].length, 0); + stale[i * 2] = moved; + stale[i * 2 + 1] = new Uint8Array(moved); + } + for (const view of fresh) + shouldBe(view.length, 8); + edenGC(); +} diff --git a/JSTests/stress/array-from-async-construct-order.js b/JSTests/stress/array-from-async-construct-order.js new file mode 100644 index 0000000000000..0417d4f81e22d --- /dev/null +++ b/JSTests/stress/array-from-async-construct-order.js @@ -0,0 +1,372 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error("bad value: " + actual + " expected " + expected); +} + +function shouldBeArray(actual, expected) { + shouldBe(actual.length, expected.length); + for (var i = 0; i < expected.length; ++i) + shouldBe(actual[i], expected[i]); +} + +async function orderOnce() { + var log = []; + function C() { log.push("construct"); } + var asyncItems = { + [Symbol.asyncIterator]() { + log.push("call Symbol.asyncIterator"); + return { get next() { log.push("get next"); return async function () { return { done: true }; }; } }; + }, + }; + var syncItems = { + [Symbol.iterator]() { + log.push("call Symbol.iterator"); + return { get next() { log.push("get next"); return function () { return { done: true }; }; } }; + }, + }; + await Array.fromAsync.call(C, asyncItems); + shouldBe(log.join(", "), "call Symbol.asyncIterator, get next, construct"); + log = []; + await Array.fromAsync.call(C, syncItems); + shouldBe(log.join(", "), "call Symbol.iterator, get next, construct"); +} +noInline(orderOnce); + +async function collectValues() { + var constructed = 0; + function C() { + constructed++; + shouldBe(arguments.length, 0); + } + var iter = { + i: 0, + next() { + if (this !== iter) + throw new Error("next this"); + if (this.i < 3) + return Promise.resolve({ value: this.i++, done: false }); + return Promise.resolve({ done: true }); + }, + [Symbol.asyncIterator]() { return this; }, + }; + var result = await Array.fromAsync.call(C, iter); + shouldBe(constructed, 1); + shouldBe(result instanceof C, true); + shouldBeArray(result, [0, 1, 2]); + shouldBe(result.length, 3); +} + +async function nextReadOnce() { + var gets = 0; + var calls = 0; + var iter = { + i: 0, + get next() { + gets++; + var self = this; + return function () { + calls++; + if (this !== self) + throw new Error("next this"); + if (arguments.length !== 0) + throw new Error("next arguments"); + if (self.i < 3) + return { value: self.i++, done: false }; + return { done: true }; + }; + }, + [Symbol.asyncIterator]() { return this; }, + }; + var result = await Array.fromAsync(iter); + shouldBe(gets, 1); + shouldBe(calls, 4); + shouldBeArray(result, [0, 1, 2]); +} + +async function throwingNextSkipsConstruct() { + var log = []; + function C() { log.push("construct"); } + var items = { + [Symbol.asyncIterator]() { + log.push("call"); + return { get next() { log.push("get next"); throw new Error("next"); } }; + }, + }; + var promise = Array.fromAsync.call(C, items); + shouldBe(typeof promise.then, "function"); + var error; + try { + await promise; + } catch (e) { + error = e; + } + shouldBe(String(error), "Error: next"); + shouldBe(log.join(", "), "call, get next"); +} + +async function constructThrowSkipsClose() { + var log = []; + function C() { + log.push("construct"); + throw new Error("construct"); + } + var items = { + [Symbol.asyncIterator]() { + log.push("call"); + return { + get next() { + log.push("get next"); + return function () { log.push("call next"); return { done: true }; }; + }, + get return() { + log.push("get return"); + return function () { log.push("call return"); return { done: true }; }; + }, + }; + }, + }; + var error; + try { + await Array.fromAsync.call(C, items); + } catch (e) { + error = e; + } + shouldBe(String(error), "Error: construct"); + shouldBe(log.join(", "), "call, get next, construct"); +} + +async function nextThrowSkipsReturn() { + var log = []; + function C() { log.push("construct"); } + var items = { + [Symbol.asyncIterator]() { + log.push("call"); + return { + get next() { + log.push("get next"); + return function () { + log.push("call next"); + throw new Error("step"); + }; + }, + get return() { + log.push("get return"); + return function () { log.push("call return"); return { done: true }; }; + }, + }; + }, + }; + var error; + try { + await Array.fromAsync.call(C, items); + } catch (e) { + error = e; + } + shouldBe(String(error), "Error: step"); + shouldBe(log.join(", "), "call, get next, construct, call next"); +} + +async function mapThrowCloses() { + var log = []; + function C() { log.push("construct"); } + var iter = { + [Symbol.asyncIterator]() { + log.push("call"); + return this; + }, + get next() { + log.push("get next"); + return function () { + log.push("call next"); + if (this !== iter) + throw new Error("next this"); + return { value: 1, done: false }; + }; + }, + get return() { + log.push("get return"); + return function () { + log.push("call return"); + if (this !== iter) + throw new Error("return this"); + if (arguments.length !== 0) + throw new Error("return arguments"); + return { done: true }; + }; + }, + }; + var error; + try { + await Array.fromAsync.call(C, iter, function () { log.push("map"); throw new Error("map"); }); + } catch (e) { + error = e; + } + shouldBe(String(error), "Error: map"); + shouldBe(log.join(", "), "call, get next, construct, call next, map, get return, call return"); +} + +async function successSkipsReturn() { + var log = []; + var iter = { + get next() { + log.push("get next"); + return function () { return { done: true }; }; + }, + get return() { + log.push("get return"); + return function () { log.push("call return"); return { done: true }; }; + }, + [Symbol.asyncIterator]() { log.push("call"); return this; }, + }; + var result = await Array.fromAsync(iter); + shouldBe(result.length, 0); + shouldBe(log.join(", "), "call, get next"); +} + +async function nonObjectIterator() { + var previous = Object.getOwnPropertyDescriptor(Number.prototype, "next"); + Object.defineProperty(Number.prototype, "next", { + configurable: true, + get() { throw new Error("boxed next"); }, + }); + try { + var log = []; + function C() { log.push("construct"); } + var items = { + [Symbol.asyncIterator]() { + log.push("call"); + return 1; + }, + }; + var promise = Array.fromAsync.call(C, items); + shouldBe(typeof promise.then, "function"); + var error; + try { + await promise; + } catch (e) { + error = e; + } + shouldBe(String(error), "TypeError: Iterator result interface is not an object."); + shouldBe(log.join(", "), "call"); + } finally { + if (previous) + Object.defineProperty(Number.prototype, "next", previous); + else + delete Number.prototype.next; + } +} + +async function nullPrototypeIterator() { + var iter = Object.create(null); + var i = 0; + iter.next = function () { + if (this !== iter) + throw new Error("next this"); + if (arguments.length !== 0) + throw new Error("next arguments"); + if (i++ === 0) + return { value: 7, done: false }; + return { done: true }; + }; + var result = await Array.fromAsync({ [Symbol.asyncIterator]() { return iter; } }); + shouldBeArray(result, [7]); +} + +async function generatorClose() { + var returned = false; + async function* generator() { + try { + yield 1; + yield 2; + } finally { + returned = true; + } + } + var error; + try { + await Array.fromAsync(generator(), function () { throw new Error("map"); }); + } catch (e) { + error = e; + } + shouldBe(String(error), "Error: map"); + shouldBe(returned, true); + + returned = false; + var result = await Array.fromAsync(generator()); + shouldBeArray(result, [1, 2]); + shouldBe(returned, true); +} + +async function arrayLikeStillConstructsWithLength() { + var args = null; + function C(length) { args = length; } + var result = await Array.fromAsync.call(C, { length: 2, 0: Promise.resolve(4), 1: 5 }); + shouldBe(args, 2); + shouldBe(result instanceof C, true); + shouldBeArray(result, [4, 5]); +} + +async function closeDoesNotAddAnAwait() { + var log = []; + var iter = { + next() { return { value: 1, done: false }; }, + get return() { + log.push("get return"); + return undefined; + }, + [Symbol.asyncIterator]() { return this; }, + }; + var promise = Array.fromAsync(iter, function () { + log.push("map"); + throw new Error("map"); + }); + function tick(n) { + log.push(n); + if (n < 3) + Promise.resolve().then(function () { tick(n + 1); }); + } + Promise.resolve().then(function () { tick(0); }); + var atReject = null; + promise.catch(function () { + log.push("reject"); + atReject = log.join(", "); + }); + var error; + try { + await promise; + } catch (e) { + error = e; + } + shouldBe(String(error), "Error: map"); + // Reject lands in the same turn as the map throw. An extra Await in + // AsyncIteratorClose would let the next tick run first. + shouldBe(atReject, "map, get return, 0, reject"); +} + +async function test() { + for (var i = 0; i < 1e4; ++i) + await orderOnce(); + + await collectValues(); + await nextReadOnce(); + await throwingNextSkipsConstruct(); + await constructThrowSkipsClose(); + await nextThrowSkipsReturn(); + await mapThrowCloses(); + await successSkipsReturn(); + await nonObjectIterator(); + await nullPrototypeIterator(); + await generatorClose(); + await arrayLikeStillConstructsWithLength(); + + for (var i = 0; i < 100; ++i) + await closeDoesNotAddAnAwait(); +} + +test().catch(function (error) { + print("FAIL"); + print(String(error)); + print(String(error.stack)); + $vm.abort(); +}); +drainMicrotasks(); diff --git a/JSTests/stress/atomics-store-returns-positive-zero-for-negative-fraction.js b/JSTests/stress/atomics-store-returns-positive-zero-for-negative-fraction.js new file mode 100644 index 0000000000000..60033a2379cc1 --- /dev/null +++ b/JSTests/stress/atomics-store-returns-positive-zero-for-negative-fraction.js @@ -0,0 +1,25 @@ +function shouldBe(actual, expected, what) { + if (!Object.is(actual, expected)) + throw new Error(what + ": bad value " + actual + ", expected " + expected); +} + +const u8 = new Uint8Array(new SharedArrayBuffer(8)); +const i32 = new Int32Array(new SharedArrayBuffer(8)); + +function storeU8(v) { return Atomics.store(u8, 0, v); } +noInline(storeU8); + +function storeI32(v) { return Atomics.store(i32, 0, v); } +noInline(storeI32); + +for (let i = 1; i < testLoopCount; ++i) { + shouldBe(storeU8(i + 0.5), i, "warm storeU8"); + shouldBe(storeI32(-i - 0.5), -i, "warm storeI32"); +} + +for (const value of [-0.5, -0.9, -1e-7, -5e-324, -0, NaN]) { + shouldBe(storeU8(value), 0, "Atomics.store(u8, 0, " + value + ")"); + shouldBe(storeI32(value), 0, "Atomics.store(i32, 0, " + value + ")"); +} +shouldBe(storeI32(-1.5), -1, "Atomics.store(i32, 0, -1.5)"); +shouldBe(storeI32(-Infinity), -Infinity, "Atomics.store(i32, 0, -Infinity)"); diff --git a/JSTests/stress/await-expression-on-lhs-of-exponentiation.js b/JSTests/stress/await-expression-on-lhs-of-exponentiation.js new file mode 100644 index 0000000000000..87ee6ceddac98 --- /dev/null +++ b/JSTests/stress/await-expression-on-lhs-of-exponentiation.js @@ -0,0 +1,110 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`bad value: ${String(actual)}, expected: ${String(expected)}`); +} + +function shouldNotThrow(source) { + try { + (0, eval)(source); + } catch (error) { + throw new Error(`\`${source}\` threw ${String(error)}`); + } +} + +function shouldThrowSyntaxError(source) { + let error; + try { + (0, eval)(source); + } catch (e) { + error = e; + } + if (!(error instanceof SyntaxError)) + throw new Error(`\`${source}\` did not throw a SyntaxError: ${String(error)}`); +} + +function shouldThrowModuleSyntaxError(source) { + let error; + try { + checkModuleSyntax(source); + } catch (e) { + error = e; + } + if (!String(error).startsWith("SyntaxError")) + throw new Error(`\`${source}\` did not throw a SyntaxError: ${String(error)}`); +} + +const wrappers = [ + expression => `async function f(a, b) { ${expression}; }`, + expression => `async function f(a, b) { return ${expression}; }`, + expression => `(async function* (a, b) { yield ${expression}; });`, + expression => `(async (a, b) => ${expression});`, + expression => `(async (a, b) => { ${expression}; });`, + expression => `({ async m(a, b) { ${expression}; } });`, + expression => `(class { async m(a, b) { ${expression}; } });`, + expression => `async function f(a, b) { for await (var x of ${expression}) ; }`, +]; + +const invalid = [ + "await a ** b", + "await a\n** b", + "await a ** await b", + "await await a ** b", + "await a++ ** b", + "await a.b ** b", + "await a() ** b", + "await (a) ** b", + "2 ** await a ** b", + "x = await a ** b", + "(await a ** b)", + "[await a ** b]", + "`${await a ** b}`", +]; + +const valid = [ + "(await a) ** b", + "await (a ** b)", + "a ** await b", + "(await a) ** await b", + "2 ** (await a) ** b", + "await a * b", +]; + +for (let wrapper of wrappers) { + for (let expression of invalid) + shouldThrowSyntaxError(wrapper(expression)); + for (let expression of valid) + shouldNotThrow(wrapper(expression)); +} + +for (let expression of invalid) + shouldThrowModuleSyntaxError(`var a, b; ${expression};`); +for (let expression of valid) + checkModuleSyntax(`var a, b; ${expression};`); + +function identifier(await) { + return await ** 2; +} +shouldBe(identifier(3), 9); + +function field(await) { + return (async () => new class { x = await ** 2; }().x)(); +} + +let result; +let error; +field(3).then(value => { result = value; }, e => { error = e; }); +drainMicrotasks(); +if (error) + throw error; +shouldBe(result, 9); + +async function values() { + shouldBe((await 2) ** 3, 8); + shouldBe(await (2 ** 3), 8); + shouldBe(2 ** await 3, 8); + shouldBe((await 2) ** await 3, 8); +} +values().then(undefined, e => { error = e; }); +drainMicrotasks(); +if (error) + throw error; diff --git a/JSTests/stress/await-identifier-reference-in-module.js b/JSTests/stress/await-identifier-reference-in-module.js new file mode 100644 index 0000000000000..fafbc0a61a2ae --- /dev/null +++ b/JSTests/stress/await-identifier-reference-in-module.js @@ -0,0 +1,86 @@ +function shouldThrowModuleSyntaxError(source) { + let error; + try { + checkModuleSyntax(source); + } catch (e) { + error = e; + } + if (!String(error).startsWith("SyntaxError")) + throw new Error(`\`${source}\` did not throw a SyntaxError: ${String(error)}`); +} + +const wrappers = [ + expression => `function f() { ${expression}; }`, + expression => `function f() { return ${expression}; }`, + expression => `function f() { "use strict"; ${expression}; }`, + expression => `function f() { function g() { ${expression}; } }`, + expression => `function f() { return () => ${expression}; }`, + expression => `function* f() { yield ${expression}; }`, + expression => `(function () { ${expression}; });`, + expression => `(() => ${expression});`, + expression => `(() => { ${expression}; });`, + expression => `({ m() { ${expression}; } });`, + expression => `({ get x() { return ${expression}; } });`, + expression => `class C { m() { ${expression}; } }`, + expression => `class C { static m() { ${expression}; } }`, + expression => `class C { constructor() { ${expression}; } }`, + expression => `class C { x = ${expression}; }`, + expression => `class C { static x = ${expression}; }`, + expression => `class C { x = () => ${expression}; }`, + expression => `class C { x = function () { ${expression}; }; }`, + expression => `function f(x = ${expression}) { }`, + expression => `(function (x = ${expression}) { });`, + expression => `function f() { return (x = ${expression}) => { }; }`, + expression => `({ m(x = ${expression}) { } });`, + expression => `class C { m(x = ${expression}) { } }`, + expression => `async function f() { function g() { ${expression}; } }`, + expression => `async function f() { function g(x = ${expression}) { } }`, + expression => `async function f() { class C { x = ${expression}; } }`, + expression => `async function f() { class C { static x = ${expression}; } }`, + expression => `(async () => class { x = ${expression}; });`, +]; + +const expressions = [ + "await", + "(await)", + "await.x", + "await[0]", + "await()", + "await`x`", + "await + 1", + "1 + await", + "await ** 2", + "await ? 1 : 2", + "await = 1", + "await++", + "typeof await", + "[await]", + "[await] = []", + "({ x: await })", + "({ x: await } = {})", + "`${await}`", + "f(await)", + "new await", +]; + +for (let wrapper of wrappers) { + for (let expression of expressions) { + let source = wrapper(expression); + checkScriptSyntax(source); + shouldThrowModuleSyntaxError(source); + } +} + +const valid = [ + "await 1;", + "async function f() { await 1; }", + "function f() { return async () => await 1; }", + "function f() { return { await: 1 }.await; }", + "function f(x = { await: 1 }.await) { }", + "class C { await() { return this.await; } static await = 1; }", + "class C { x = async () => await 1; }", + "async function f() { class C { [await 1] = 1; } }", +]; + +for (let source of valid) + checkModuleSyntax(source); diff --git a/JSTests/stress/backwards-propagation-add-with-non-integer-constant.js b/JSTests/stress/backwards-propagation-add-with-non-integer-constant.js new file mode 100644 index 0000000000000..587c0cb353e21 --- /dev/null +++ b/JSTests/stress/backwards-propagation-add-with-non-integer-constant.js @@ -0,0 +1,84 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error("bad value: " + actual + ", expected: " + expected); +} + +function addThenAddHalf(x, y) { + return (x + y + 0.5) | 0; +} +noInline(addThenAddHalf); + +function addThenAddNegativeHalf(x, y) { + return (x + y + -0.5) | 0; +} +noInline(addThenAddNegativeHalf); + +function subThenAddHalf(x, y) { + return (x - y + 0.5) | 0; +} +noInline(subThenAddHalf); + +function halfOnLeft(x, y) { + return (0.5 + (x + y)) | 0; +} +noInline(halfOnLeft); + +function unsignedRightShift(x, y) { + return (x + y + 0.5) >>> 0; +} +noInline(unsignedRightShift); + +function bitAnd(x, y) { + return (x + y + 0.5) & 0xff; +} +noInline(bitAnd); + +function threeOperands(x, y, z) { + return (x + y + z + 0.25) | 0; +} +noInline(threeOperands); + +function negate(x, y) { + return (-((x >>> 0) + (y >>> 0)) + 0.5) | 0; +} +noInline(negate); + +function mulThenAddHalf(x) { + return (x * 100 + 0.5) | 0; +} +noInline(mulThenAddHalf); + +function largeNegativeConstant(x) { + return ((x | 0) + -4294967296 + 1.5) | 0; +} +noInline(largeNegativeConstant); + +function largePositiveConstant(x) { + return ((x | 0) + 4294967297 + 0.5) | 0; +} +noInline(largePositiveConstant); + +for (let i = 0; i < testLoopCount; ++i) { + shouldBe(addThenAddHalf(1, 2), 3); + shouldBe(addThenAddHalf(2000000000, 2000000000), -294967296); + shouldBe(addThenAddHalf(-2000000000, -2000000000), 294967297); + shouldBe(addThenAddNegativeHalf(1, 2), 2); + shouldBe(addThenAddNegativeHalf(2000000000, 2000000000), -294967297); + shouldBe(addThenAddNegativeHalf(-2000000000, -2000000000), 294967296); + shouldBe(subThenAddHalf(1, 2), 0); + shouldBe(subThenAddHalf(2000000000, -2000000000), -294967296); + shouldBe(halfOnLeft(1, 2), 3); + shouldBe(halfOnLeft(2000000000, 2000000000), -294967296); + shouldBe(unsignedRightShift(1, 2), 3); + shouldBe(unsignedRightShift(2000000000, 2000000000), 4000000000); + shouldBe(bitAnd(1, 2), 3); + shouldBe(bitAnd(2000000000, 2000000000), 0); + shouldBe(threeOperands(1, 2, 3), 6); + shouldBe(threeOperands(1000000000, 1000000000, 2000000000), -294967296); + shouldBe(negate(1, 2), -2); + shouldBe(negate(2000000000, 2000000000), 294967297); + shouldBe(mulThenAddHalf(1), 100); + shouldBe(mulThenAddHalf(30000000), -1294967296); + shouldBe(largeNegativeConstant(0), 2); + shouldBe(largePositiveConstant(-2), -1); +} diff --git a/JSTests/stress/backwards-propagation-shift-bound-uses-masked-count.js b/JSTests/stress/backwards-propagation-shift-bound-uses-masked-count.js new file mode 100644 index 0000000000000..fb8f3425566f2 --- /dev/null +++ b/JSTests/stress/backwards-propagation-shift-bound-uses-masked-count.js @@ -0,0 +1,37 @@ +function shouldBe(actual, expected, what) { + if (actual !== expected) + throw new Error(what + ": bad value " + actual + ", expected " + expected); +} + +// A right shift by a constant bounds its result only by the count modulo 32, so x >> 33 is +// x >> 1 and x >>> 32 is x >>> 0. Multiplying such a value by a large int32 gives a product +// above 2^53, where the double result of the multiply and the low 32 bits of the exact product +// differ after | 0. + +function shiftBy33ThenMultiply(x, y) { return ((x >> 33) * y) | 0; } +noInline(shiftBy33ThenMultiply); + +function unsignedShiftBy32ThenMultiply(x, y) { return ((x >>> 32) * y) | 0; } +noInline(unsignedShiftBy32ThenMultiply); + +function shiftBy10ThenMultiply(x, y) { return ((x >> 10) * y) | 0; } +noInline(shiftBy10ThenMultiply); + +function unsignedShiftBy10ThenMultiply(x, y) { return ((x >>> 10) * y) | 0; } +noInline(unsignedShiftBy10ThenMultiply); + +const large = 0x7fffffff; +for (let i = 0; i < testLoopCount; ++i) { + shouldBe(shiftBy33ThenMultiply(i, 3), (i >> 1) * 3, "warm shiftBy33ThenMultiply"); + shouldBe(unsignedShiftBy32ThenMultiply(i, 3), i * 3, "warm unsignedShiftBy32ThenMultiply"); + shouldBe(shiftBy10ThenMultiply(i, 3), (i >> 10) * 3, "warm shiftBy10ThenMultiply"); + shouldBe(unsignedShiftBy10ThenMultiply(i, 3), (i >>> 10) * 3, "warm unsignedShiftBy10ThenMultiply"); +} + +shouldBe(shiftBy33ThenMultiply(large, large), ((large >> 1) * large) | 0, "shiftBy33ThenMultiply(large, large)"); +shouldBe(shiftBy33ThenMultiply(-0x80000000, large), (-0x40000000 * large) | 0, "shiftBy33ThenMultiply(-2^31, large)"); +shouldBe(unsignedShiftBy32ThenMultiply(-1, large), (0xffffffff * large) | 0, "unsignedShiftBy32ThenMultiply(-1, large)"); +shouldBe(unsignedShiftBy32ThenMultiply(-3, -large), (0xfffffffd * -large) | 0, "unsignedShiftBy32ThenMultiply(-3, -large)"); +shouldBe(shiftBy10ThenMultiply(large, large), ((large >> 10) * large) | 0, "shiftBy10ThenMultiply(large, large)"); +shouldBe(shiftBy10ThenMultiply(-0x80000000, -0x80000000), ((-0x80000000 >> 10) * -0x80000000) | 0, "shiftBy10ThenMultiply(-2^31, -2^31)"); +shouldBe(unsignedShiftBy10ThenMultiply(-1, large), ((0xffffffff >>> 10) * large) | 0, "unsignedShiftBy10ThenMultiply(-1, large)"); diff --git a/JSTests/stress/bigint-to-string-divide-and-conquer.js b/JSTests/stress/bigint-to-string-divide-and-conquer.js new file mode 100644 index 0000000000000..aa7acea1eb086 --- /dev/null +++ b/JSTests/stress/bigint-to-string-divide-and-conquer.js @@ -0,0 +1,97 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected.slice(0, 40)}... (${expected.length}) but got ${actual.slice(0, 40)}... (${actual.length})`); +} + +function referenceToString(x, radix) { + const sign = x < 0n; + if (sign) + x = -x; + const chunk = BigInt(radix) ** 9n; + const parts = []; + while (x >= chunk) { + parts.push((x % chunk).toString(radix).padStart(9, "0")); + x /= chunk; + } + parts.push(x.toString(radix)); + return (sign ? "-" : "") + parts.reverse().join(""); +} + +function makeOperand(width, digits, seed, shape) { + const hexDigits = width / 4; + const mask = (1n << BigInt(width)) - 1n; + const shift = BigInt(64 - width); + const parts = new Array(digits); + let mix = BigInt.asUintN(64, 0x9e3779b97f4a7c15n * BigInt(seed + 1)); + for (let i = 0; i < digits; i++) { + mix = BigInt.asUintN(64, mix * 6364136223846793005n + 1442695040888963407n); + let digit; + switch (shape) { + case "random": + digit = mix >> shift; + break; + case "ones": + digit = mask; + break; + case "sparse": + digit = (i * 7 + seed) % 5 === 0 ? mix >> shift : 0n; + break; + case "top": + digit = i ? 0n : 1n << BigInt(width - 1); + break; + } + parts[i] = digit.toString(16).padStart(hexDigits, "0"); + } + if (shape === "random" || shape === "sparse") + parts[0] = "8" + parts[0].slice(1); + return BigInt("0x" + parts.join("")); +} + +const radixes = [3, 5, 7, 12, 17, 24, 25, 36]; +const shapes = ["random", "ones", "sparse", "top"]; + +let count = 0; +for (const width of [32, 64]) { + for (const digits of [11, 12, 13, 23, 24, 25, 31, 32, 33, 47, 48, 49, 63, 64, 65, 127, 128, 129, 255, 256, 257]) { + for (const shape of digits < 100 ? shapes : [shapes[digits % shapes.length]]) { + const x = makeOperand(width, digits, digits, shape); + for (const radix of [radixes[count++ % radixes.length], 10]) { + const expected = referenceToString(x, radix); + shouldBe(x.toString(radix), expected, `${width} bit digits, ${digits} ${shape} radix ${radix}`); + shouldBe((-x).toString(radix), "-" + expected, `${width} bit digits, -${digits} ${shape} radix ${radix}`); + } + } + } +} + +for (const radix of [3, 10, 24, 36]) { + const r = BigInt(radix); + const last = (radix - 1).toString(radix); + const exponents = new Set([0, 1]); + for (const width of [32, 64]) { + const chunkChars = Math.floor(width / Math.log2(radix)); + for (let chars = chunkChars; chars < 2000; chars *= 2) { + exponents.add(chars - 1); + exponents.add(chars); + exponents.add(chars + 1); + } + } + for (const high of [1500, 2000]) { + const power = r ** BigInt(high); + shouldBe(power.toString(radix), "1" + "0".repeat(high), `${radix} ** ${high}`); + for (const low of exponents) { + if (low >= high) + continue; + const lowPower = r ** BigInt(low); + shouldBe((power + lowPower).toString(radix), "1" + "0".repeat(high - low - 1) + "1" + "0".repeat(low), `${radix} ** ${high} + ${radix} ** ${low}`); + shouldBe((power - lowPower).toString(radix), last.repeat(high - low) + "0".repeat(low), `${radix} ** ${high} - ${radix} ** ${low}`); + shouldBe((power * lowPower - 1n).toString(radix), last.repeat(high + low), `${radix} ** ${high + low} - 1`); + } + } +} + +{ + const x = makeOperand(64, 500, 500, "random"); + if (BigInt(x.toString()) !== x) + throw new Error("500 digits round trip"); +} diff --git a/JSTests/stress/bound-function-instanceof-primitive.js b/JSTests/stress/bound-function-instanceof-primitive.js new file mode 100644 index 0000000000000..596c163b2759a --- /dev/null +++ b/JSTests/stress/bound-function-instanceof-primitive.js @@ -0,0 +1,134 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error("bad value: " + actual); +} + +function primitiveInstanceof(value, ctor) { + return value instanceof ctor; +} +noInline(primitiveInstanceof); + +function hasInstanceCall(ctor, value) { + return Function.prototype[Symbol.hasInstance].call(ctor, value); +} +noInline(hasInstanceCall); + +function objectInstanceof(value, ctor) { + return value instanceof ctor; +} +noInline(objectInstanceof); + +let primitives = [1, 1.5, "x", null, undefined, true, false, Symbol("s"), 1n]; + +let arrow = () => {}; +Object.defineProperty(arrow, "prototype", { + get() { throw new Error("prototype read"); }, +}); +let boundArrow = arrow.bind(); +let nestedArrow = boundArrow.bind(); + +shouldBe(primitiveInstanceof(1, arrow), false); +for (let value of primitives) { + shouldBe(primitiveInstanceof(value, boundArrow), false); + shouldBe(hasInstanceCall(boundArrow, value), false); + shouldBe(primitiveInstanceof(value, nestedArrow), false); + shouldBe(hasInstanceCall(nestedArrow, value), false); +} + +for (let i = 0; i < 1e4; ++i) { + let value = primitives[i % primitives.length]; + shouldBe(primitiveInstanceof(value, boundArrow), false); + shouldBe(hasInstanceCall(boundArrow, value), false); + shouldBe(primitiveInstanceof(value, nestedArrow), false); +} + +let proto = {}; +let reads = 0; +let C = () => {}; +Object.defineProperty(C, "prototype", { + get() { + reads++; + return proto; + }, +}); +let boundC = C.bind(); +let child = Object.create(proto); + +reads = 0; +shouldBe(objectInstanceof(child, boundC), true); +shouldBe(reads, 1); +reads = 0; +shouldBe(objectInstanceof({}, boundC), false); +shouldBe(reads, 1); +reads = 0; +shouldBe(objectInstanceof(1, boundC), false); +shouldBe(reads, 0); + +reads = 0; +for (let i = 0; i < 1e4; ++i) { + shouldBe(objectInstanceof(child, boundC), true); + shouldBe(objectInstanceof(1, boundC), false); + shouldBe(objectInstanceof({}, boundC), false); +} +shouldBe(reads, 2e4); + +let customCalls = 0; +let D = () => {}; +Object.defineProperty(D, Symbol.hasInstance, { + value(value) { + customCalls++; + return value === 1; + }, +}); +Object.defineProperty(D, "prototype", { + get() { throw new Error("prototype read"); }, +}); +let boundD = D.bind(); +shouldBe(primitiveInstanceof(1, boundD), true); +shouldBe(primitiveInstanceof(2, boundD), false); +shouldBe(customCalls, 2); + +let boundOwn = arrow.bind(); +let ownCalls = 0; +Object.defineProperty(boundOwn, Symbol.hasInstance, { + value() { + ownCalls++; + return true; + }, +}); +shouldBe(primitiveInstanceof(1, boundOwn), true); +shouldBe(ownCalls, 1); + +let proxyGets = []; +let proxy = new Proxy(arrow, { + get(target, key, receiver) { + proxyGets.push(key); + return Reflect.get(target, key, receiver); + }, +}); +let boundProxy = proxy.bind(); +proxyGets = []; +shouldBe(primitiveInstanceof(1, boundProxy), false); +shouldBe(hasInstanceCall(boundProxy, "x"), false); +if (proxyGets.includes("prototype")) + throw new Error("prototype read"); +shouldBe(proxyGets.includes(Symbol.hasInstance), true); + +let proxyCustomCalls = 0; +let proxyCustom = new Proxy(arrow, { + get(target, key, receiver) { + if (key === Symbol.hasInstance) { + return function(value) { + proxyCustomCalls++; + return value === 1; + }; + } + if (key === "prototype") + throw new Error("prototype read"); + return Reflect.get(target, key, receiver); + }, +}); +let boundProxyCustom = proxyCustom.bind(); +shouldBe(primitiveInstanceof(1, boundProxyCustom), true); +shouldBe(primitiveInstanceof(0, boundProxyCustom), false); +shouldBe(proxyCustomCalls, 2); diff --git a/JSTests/stress/by-val-megamorphic-key-collected-in-slow-path.js b/JSTests/stress/by-val-megamorphic-key-collected-in-slow-path.js new file mode 100644 index 0000000000000..15e54e48d764c --- /dev/null +++ b/JSTests/stress/by-val-megamorphic-key-collected-in-slow-path.js @@ -0,0 +1,95 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`expected ${expected} but got ${actual}`); +} + +const symbols = []; +const strings = []; +for (let i = 0; i < 16; ++i) { + symbols.push(Symbol()); + strings.push("s" + i); +} + +const plains = []; +for (let i = 0; i < 16; ++i) { + const plain = {}; + for (let j = 0; j < i; ++j) + plain["p" + j] = j; + for (let j = 0; j < 16; ++j) { + plain[symbols[j]] = j; + plain[strings[j]] = j; + } + plains.push(plain); +} + +let collect = false; +const handler = { + get get() { + if (collect) + gc(); + return undefined; + }, + get set() { + if (collect) + gc(); + return undefined; + }, + get has() { + if (collect) + gc(); + return undefined; + }, +}; + +let count = 0; +function makeKey(index, isSymbol) { + if (index < 0) { + if (isSymbol) + return Symbol(); + const string = "fresh" + count++; + ({})[string]; + return string; + } + return isSymbol ? symbols[index] : strings[index]; +} +noInline(makeKey); + +function get(object, index, isSymbol) { + return object[makeKey(index, isSymbol)]; +} +noInline(get); + +function put(object, index, isSymbol) { + object[makeKey(index, isSymbol)] = 1; +} +noInline(put); + +function has(object, index, isSymbol) { + return makeKey(index, isSymbol) in object; +} +noInline(has); + +for (let i = 0; i < testLoopCount; ++i) { + put(plains[i & 15], (i >> 4) & 15, !!(i & 256)); + shouldBe(get(plains[i & 15], (i >> 4) & 15, !!(i & 256)), 1); + shouldBe(has(plains[i & 15], (i >> 4) & 15, !!(i & 256)), true); +} + +collect = true; +for (let i = 0; i < 4; ++i) { + for (const isSymbol of [false, true]) { + const target = {}; + const proxy = new Proxy(target, handler); + shouldBe(get(proxy, -1, isSymbol), undefined); + shouldBe(has(proxy, -1, isSymbol), false); + shouldBe(Reflect.ownKeys(target).length, 0); + + put(proxy, -1, isSymbol); + const keys = Reflect.ownKeys(target); + shouldBe(keys.length, 1); + shouldBe(typeof keys[0], isSymbol ? "symbol" : "string"); + if (!isSymbol) + shouldBe(keys[0], "fresh" + (count - 1)); + shouldBe(target[keys[0]], 1); + } +} diff --git a/JSTests/stress/by-val-symbol-key-collected-in-slow-path.js b/JSTests/stress/by-val-symbol-key-collected-in-slow-path.js new file mode 100644 index 0000000000000..1645fea587395 --- /dev/null +++ b/JSTests/stress/by-val-symbol-key-collected-in-slow-path.js @@ -0,0 +1,84 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`expected ${expected} but got ${actual}`); +} + +const symbols = []; +for (let i = 0; i < 16; ++i) + symbols.push(Symbol()); + +const accessors = []; +const plains = []; +for (let i = 0; i < 16; ++i) { + const object = {}; + const plain = {}; + for (let j = 0; j < i; ++j) { + object["p" + j] = j; + plain["p" + j] = j; + } + Object.defineProperty(object, symbols[i], { get() { return i; }, set(value) { } }); + for (let j = 0; j < 16; ++j) + plain[symbols[j]] = j; + accessors.push(object); + plains.push(plain); +} + +let collect = false; +const handler = { + get get() { + if (collect) + gc(); + return undefined; + }, + get set() { + if (collect) + gc(); + return undefined; + }, +}; + +function makeKey(index) { + if (index < 0) + return Symbol(); + return symbols[index]; +} +noInline(makeKey); + +function get(object, index) { + return object[makeKey(index)]; +} +noInline(get); + +function getMegamorphic(object, index) { + return object[makeKey(index)]; +} +noInline(getMegamorphic); + +function put(object, index) { + object[makeKey(index)] = 1; +} +noInline(put); + +const getProxy = new Proxy({}, handler); +const putProxy = new Proxy({}, handler); +for (let i = 0; i < testLoopCount; ++i) { + shouldBe(get(accessors[i & 15], i & 15), i & 15); + put(accessors[i & 15], i & 15); + shouldBe(get(getProxy, i & 15), undefined); + put(putProxy, i & 15); + shouldBe(getMegamorphic(plains[i & 15], (i >> 4) & 15), (i >> 4) & 15); +} + +collect = true; +for (let i = 0; i < 4; ++i) { + const target = {}; + const proxy = new Proxy(target, handler); + shouldBe(get(proxy, -1), undefined); + shouldBe(getMegamorphic(proxy, -1), undefined); + shouldBe(Object.getOwnPropertySymbols(target).length, 0); + + put(proxy, -1); + const keys = Object.getOwnPropertySymbols(target); + shouldBe(keys.length, 1); + shouldBe(target[keys[0]], 1); +} diff --git a/JSTests/stress/constant-folding-clip-skips-cfa-unreachable-blocks.js b/JSTests/stress/constant-folding-clip-skips-cfa-unreachable-blocks.js index eef9b6f1b74a7..ee0d4c2856a0b 100644 --- a/JSTests/stress/constant-folding-clip-skips-cfa-unreachable-blocks.js +++ b/JSTests/stress/constant-folding-clip-skips-cfa-unreachable-blocks.js @@ -29,4 +29,6 @@ for (let i = 0; i < testLoopCount * 20; i++) { } // The crashing compile is the OSR entry into the loop above, and it only reproduces with a call after the loop. -print("done"); +function foo() {} +$vm.noInline(foo); +foo(); diff --git a/JSTests/stress/dfg-cross-realm-builtin-closure-call-realm-check.js b/JSTests/stress/dfg-cross-realm-builtin-closure-call-realm-check.js new file mode 100644 index 0000000000000..a5bf72c0fb022 --- /dev/null +++ b/JSTests/stress/dfg-cross-realm-builtin-closure-call-realm-check.js @@ -0,0 +1,30 @@ +// Errors thrown by another realm's built-in must come from that realm, also at call sites that only know its executable. + +const other = createGlobalObject(); +const object = { valueOf() { return -1; } }; + +// Calling fresh closures at the same site makes it a closure call, so only Math.abs's executable is known. +function apply(f, x) { return f(x); } +noInline(apply); + +for (let i = 0; i < testLoopCount * 2; ++i) { + apply(Math.abs, object); + apply(y => y, i); +} + +// Polymorphic calls are only inlined by the FTL, so keep going long enough for it to compile apply. +for (let i = 0; i < testLoopCount * 4; ++i) { + if (apply(Math.abs, object) !== 1) + throw new Error("bad result"); + apply(y => y, i); + if (i % 64 !== 63) + continue; + let error = null; + try { + apply(other.Math.abs, Symbol()); + } catch (e) { + error = e; + } + if (!(error instanceof other.TypeError)) + throw new Error(`expected a TypeError from the callee's realm at iteration ${i}, got ${error}`); +} diff --git a/JSTests/stress/dfg-cross-realm-builtin-error-realm.js b/JSTests/stress/dfg-cross-realm-builtin-error-realm.js new file mode 100644 index 0000000000000..3106f26a3c71d --- /dev/null +++ b/JSTests/stress/dfg-cross-realm-builtin-error-realm.js @@ -0,0 +1,148 @@ +// Errors thrown by another realm's built-ins must come from that realm, also from optimized callers. + +const other = createGlobalObject(); +const OtherNumber = other.Number; +const OtherString = other.String; +const OtherMath = other.Math; +const OtherArray = other.Array; +const OtherInt8Array = other.Int8Array; +const OtherArrayBuffer = other.ArrayBuffer; +const OtherRegExp = other.RegExp; +const OtherSymbol = other.Symbol; +const otherParseInt = other.parseInt; +const otherIsNaN = other.isNaN; +const otherIsFinite = other.isFinite; + +// The non-throwing calls pass this object so that optimized code keeps the generic path for the throwing argument +// instead of speculating on its type and exiting. +const object = { valueOf() { return 1; }, toString() { return "1"; } }; +const symbol = Symbol("symbol"); +const noPrimitive = { valueOf() { return {}; }, toString() { return {}; } }; + +function numberCall(x) { return OtherNumber(x); } +noInline(numberCall); +function stringCall(x) { return OtherString(x); } +noInline(stringCall); +function stringConstruct(x) { return new OtherString(x); } +noInline(stringConstruct); +function arrayConstruct(x) { return new OtherArray(x); } +noInline(arrayConstruct); +function int8ArrayConstruct(x) { return new OtherInt8Array(x); } +noInline(int8ArrayConstruct); +function arrayBufferConstruct(x) { return new OtherArrayBuffer(x); } +noInline(arrayBufferConstruct); +function regExpConstruct(x) { return new OtherRegExp(x, ""); } +noInline(regExpConstruct); +function symbolCall(x) { return OtherSymbol(x); } +noInline(symbolCall); + +// These see the same built-in from two realms, so only its executable is known. +function numberClosureCall(f, x) { return f(x); } +noInline(numberClosureCall); +function stringClosureCall(f, x) { return f(x); } +noInline(stringClosureCall); + +function mathAbs(x) { return OtherMath.abs(x); } +noInline(mathAbs); +function mathSqrt(x) { return OtherMath.sqrt(x); } +noInline(mathSqrt); +function mathFloor(x) { return OtherMath.floor(x); } +noInline(mathFloor); +function mathCeil(x) { return OtherMath.ceil(x); } +noInline(mathCeil); +function mathRound(x) { return OtherMath.round(x); } +noInline(mathRound); +function mathTrunc(x) { return OtherMath.trunc(x); } +noInline(mathTrunc); +function mathClz32(x) { return OtherMath.clz32(x); } +noInline(mathClz32); +function mathFround(x) { return OtherMath.fround(x); } +noInline(mathFround); +function mathSin(x) { return OtherMath.sin(x); } +noInline(mathSin); +function parseIntCall(x) { return otherParseInt(x); } +noInline(parseIntCall); +function isNaNCall(x) { return otherIsNaN(x); } +noInline(isNaNCall); +function isFiniteCall(x) { return otherIsFinite(x); } +noInline(isFiniteCall); +function fromCharCode(x) { return OtherString.fromCharCode(x); } +noInline(fromCharCode); +function fromCodePoint(x) { return OtherString.fromCodePoint(x); } +noInline(fromCodePoint); +function fromCodePointInt32(x) { return OtherString.fromCodePoint(x); } +noInline(fromCodePointInt32); +function isArrayCall(x) { return OtherArray.isArray(x); } +noInline(isArrayCall); +function revokedProxy() { + const { proxy, revoke } = Proxy.revocable([], { }); + revoke(); + return proxy; +} + +Number.prototype.otherToString = OtherNumber.prototype.toString; +function numberToStringRadix(radix) { return (255).otherToString(radix); } +noInline(numberToStringRadix); +Object.prototype.otherValueOf = OtherString.prototype.valueOf; +const stringObject = new String("s"); +function stringValueOf(x) { return x.otherValueOf(); } +noInline(stringValueOf); +Object.prototype.otherExec = OtherRegExp.prototype.exec; +const regExp = /a/; +function regExpExec(x) { return x.otherExec("a"); } +noInline(regExpExec); + +// [label, non-throwing call, throwing call, expected error constructor] +const tests = [ + ["other.Number(symbol)", () => numberCall(object), () => numberCall(symbol), other.TypeError], + ["other.String(noPrimitive)", () => stringCall(object), () => stringCall(noPrimitive), other.TypeError], + ["new other.String(symbol)", () => stringConstruct(object), () => stringConstruct(symbol), other.TypeError], + ["new other.Array(-1)", i => arrayConstruct(i & 7), () => arrayConstruct(-1), other.RangeError], + ["new other.Int8Array(-1)", i => int8ArrayConstruct(i & 7), () => int8ArrayConstruct(-1), other.RangeError], + ["new other.ArrayBuffer(-1)", i => arrayBufferConstruct(i & 7), () => arrayBufferConstruct(-1), other.RangeError], + ["new other.RegExp(\"(\")", () => regExpConstruct("a"), () => regExpConstruct("("), other.SyntaxError], + ["other.Symbol(noPrimitive)", () => symbolCall(object), () => symbolCall(noPrimitive), other.TypeError], + ["Number / other.Number closure call (symbol)", i => numberClosureCall(i & 1 ? Number : OtherNumber, object), () => numberClosureCall(OtherNumber, symbol), other.TypeError], + ["String / other.String closure call (noPrimitive)", i => stringClosureCall(i & 1 ? String : OtherString, object), () => stringClosureCall(OtherString, noPrimitive), other.TypeError], + ["other.Math.abs(symbol)", () => mathAbs(object), () => mathAbs(symbol), other.TypeError], + ["other.Math.sqrt(symbol)", () => mathSqrt(object), () => mathSqrt(symbol), other.TypeError], + ["other.Math.floor(symbol)", () => mathFloor(object), () => mathFloor(symbol), other.TypeError], + ["other.Math.ceil(symbol)", () => mathCeil(object), () => mathCeil(symbol), other.TypeError], + ["other.Math.round(symbol)", () => mathRound(object), () => mathRound(symbol), other.TypeError], + ["other.Math.trunc(symbol)", () => mathTrunc(object), () => mathTrunc(symbol), other.TypeError], + ["other.Math.clz32(symbol)", () => mathClz32(object), () => mathClz32(symbol), other.TypeError], + ["other.Math.fround(symbol)", () => mathFround(object), () => mathFround(symbol), other.TypeError], + ["other.Math.sin(symbol)", () => mathSin(object), () => mathSin(symbol), other.TypeError], + ["other.parseInt(symbol)", () => parseIntCall(object), () => parseIntCall(symbol), other.TypeError], + ["other.isNaN(symbol)", () => isNaNCall(object), () => isNaNCall(symbol), other.TypeError], + ["other.isFinite(symbol)", () => isFiniteCall(object), () => isFiniteCall(symbol), other.TypeError], + ["other.String.fromCharCode(symbol)", () => fromCharCode(object), () => fromCharCode(symbol), other.TypeError], + ["other.String.fromCodePoint(symbol)", () => fromCodePoint(object), () => fromCodePoint(symbol), other.TypeError], + ["other.String.fromCodePoint(-1)", i => fromCodePointInt32(i & 0x7f), () => fromCodePointInt32(-1), other.RangeError], + ["other.Number.prototype.toString(0)", () => numberToStringRadix(10), () => numberToStringRadix(0), other.RangeError], + ["other.String.prototype.valueOf on 1", () => stringValueOf(stringObject), () => stringValueOf(1), other.TypeError], + ["other.RegExp.prototype.exec on {}", () => regExpExec(regExp), () => regExpExec({ }), other.TypeError], + ["other.Array.isArray(revokedProxy)", () => isArrayCall(object), () => isArrayCall(revokedProxy()), other.TypeError], +]; + +const failures = new Map(); +for (let i = 0; i < testLoopCount; ++i) { + for (const [label, good, bad, ErrorConstructor] of tests) { + good(i); + if (i % 64 !== 63 || failures.has(label)) + continue; + let error = null; + try { + bad(); + } catch (e) { + error = e; + } + if (!(error instanceof ErrorConstructor)) { + const fromCallerRealm = error instanceof globalThis[ErrorConstructor.name]; + failures.set(label, `${label}: expected a ${ErrorConstructor.name} from the callee's realm at iteration ${i}, got ${error}${fromCallerRealm ? " from the caller's realm" : ""}`); + } + } +} + +if (failures.size) + throw new Error([...failures.values()].join("\n")); diff --git a/JSTests/stress/dfg-cross-realm-builtin-result-realm.js b/JSTests/stress/dfg-cross-realm-builtin-result-realm.js new file mode 100644 index 0000000000000..00cd3bc6964fd --- /dev/null +++ b/JSTests/stress/dfg-cross-realm-builtin-result-realm.js @@ -0,0 +1,56 @@ +// Values created by another realm's built-ins must come from that realm, also from optimized callers. + +const other = createGlobalObject(); +const OtherBoolean = other.Boolean; +const OtherObject = other.Object; +const OtherMap = other.Map; +const OtherSet = other.Set; +const OtherWeakMap = other.WeakMap; +const OtherWeakSet = other.WeakSet; +const masquerader = other.makeMasquerader(); + +// Objects that masquerade as undefined are only falsy in their own realm. +function booleanCall(x) { return OtherBoolean(x); } +noInline(booleanCall); +function booleanClosureCall(f, x) { return f(x); } +noInline(booleanClosureCall); +function objectCall(x) { return OtherObject(x); } +noInline(objectCall); +function objectConstruct() { return new OtherObject(); } +noInline(objectConstruct); +function mapConstruct() { return new OtherMap(); } +noInline(mapConstruct); +function setConstruct() { return new OtherSet(); } +noInline(setConstruct); +function weakMapConstruct() { return new OtherWeakMap(); } +noInline(weakMapConstruct); +function weakSetConstruct() { return new OtherWeakSet(); } +noInline(weakSetConstruct); +Object.prototype.otherExec = other.RegExp.prototype.exec; +const regExp = /a/; +function regExpExec(x) { return x.otherExec("a"); } +noInline(regExpExec); + +// [label, test returning whether the result is right] +const tests = [ + ["other.Boolean(masquerader)", () => booleanCall(masquerader) === false], + ["Boolean / other.Boolean closure call (masquerader)", i => booleanClosureCall(i & 1 ? Boolean : OtherBoolean, masquerader) === Boolean(i & 1)], + ["other.Object(1)", () => Object.getPrototypeOf(objectCall(1)) === other.Number.prototype], + ["new other.Object()", () => Object.getPrototypeOf(objectConstruct()) === other.Object.prototype], + ["new other.Map()", () => Object.getPrototypeOf(mapConstruct()) === other.Map.prototype], + ["new other.Set()", () => Object.getPrototypeOf(setConstruct()) === other.Set.prototype], + ["new other.WeakMap()", () => Object.getPrototypeOf(weakMapConstruct()) === other.WeakMap.prototype], + ["new other.WeakSet()", () => Object.getPrototypeOf(weakSetConstruct()) === other.WeakSet.prototype], + ["other.RegExp.prototype.exec result", () => Object.getPrototypeOf(regExpExec(regExp)) === other.Array.prototype], +]; + +const failures = new Map(); +for (let i = 0; i < testLoopCount; ++i) { + for (const [label, test] of tests) { + if (!failures.has(label) && !test(i)) + failures.set(label, `${label}: wrong realm at iteration ${i}`); + } +} + +if (failures.size) + throw new Error([...failures.values()].join("\n")); diff --git a/JSTests/stress/exception-stack-capture-handler-kind.js b/JSTests/stress/exception-stack-capture-handler-kind.js new file mode 100644 index 0000000000000..c971208bd028e --- /dev/null +++ b/JSTests/stress/exception-stack-capture-handler-kind.js @@ -0,0 +1,98 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected} but got ${actual}`); +} + +function thrower(value, shouldThrow) { + if (shouldThrow) + throw value; +} +noInline(thrower); + +function userCatch(value, shouldThrow) { + try { + if (shouldThrow) + throw value; + } catch { } +} +noInline(userCatch); + +function userCatchAroundCall(value, shouldThrow) { + try { + thrower(value, shouldThrow); + } catch { } +} +noInline(userCatchAroundCall); + +function promiseConstructor(value, shouldThrow) { + return new Promise((resolve) => resolve(thrower(value, shouldThrow))); +} +noInline(promiseConstructor); + +function promiseTry(value, shouldThrow) { + return Promise.try(thrower, value, shouldThrow); +} +noInline(promiseTry); + +async function asyncThrow(value, shouldThrow) { + if (shouldThrow) + throw value; +} +noInline(asyncThrow); + +async function asyncTryFinallyAroundCall(value, shouldThrow) { + try { + thrower(value, shouldThrow); + } finally { } +} +noInline(asyncTryFinallyAroundCall); + +function callAsyncInsideUserCatch(asyncFunction, value, shouldThrow) { + try { + return asyncFunction(value, shouldThrow); + } catch { + throw new Error("async function must not throw synchronously"); + } +} +noInline(callAsyncInsideUserCatch); + +function thenableGetterInsideUserCatch(value, shouldThrow) { + try { + return Promise.resolve({ get then() { thrower(value, shouldThrow); } }); + } catch { + throw new Error("Promise.resolve must not throw synchronously"); + } +} +noInline(thenableGetterInsideUserCatch); + +// Throwing on every iteration would keep the callers in baseline, since a DFG or FTL catch is an OSR exit. +function shouldThrowAt(i) { + return !(i % 16); +} + +function testUserCatch(name, run) { + for (let i = 0; i < testLoopCount; ++i) { + let value = { }; + run(value, shouldThrowAt(i)); + if (shouldThrowAt(i)) + shouldBe($vm.lastExceptionHasCapturedStack(value), false, `${name} #${i}`); + } +} + +function testRejection(name, run) { + for (let i = 0; i < testLoopCount; ++i) { + let value = { }; + let promise = run(value, shouldThrowAt(i)); + if (shouldThrowAt(i)) + shouldBe($vm.lastExceptionHasCapturedStack(value), true, `${name} #${i}`); + promise.catch(() => { }); + } +} + +testUserCatch("user catch", userCatch); +testUserCatch("user catch around call", userCatchAroundCall); +testRejection("Promise constructor", promiseConstructor); +testRejection("Promise.try", promiseTry); +testRejection("async throw", (value, shouldThrow) => callAsyncInsideUserCatch(asyncThrow, value, shouldThrow)); +testRejection("async try/finally", (value, shouldThrow) => callAsyncInsideUserCatch(asyncTryFinallyAroundCall, value, shouldThrow)); +testRejection("thenable getter inside user catch", thenableGetterInsideUserCatch); diff --git a/JSTests/stress/for-in-indexed-properties-of-object-reifying-properties.js b/JSTests/stress/for-in-indexed-properties-of-object-reifying-properties.js new file mode 100644 index 0000000000000..8c7959f6f06cf --- /dev/null +++ b/JSTests/stress/for-in-indexed-properties-of-object-reifying-properties.js @@ -0,0 +1,48 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error("bad value: " + actual + ", expected: " + expected); +} + +function keys(object) { + var result = ""; + for (var key in object) + result += key + ","; + return result; +} +noInline(keys); + +var factories = [ + function () { return function () { }; }, + function () { return () => { }; }, + function () { return function* () { }; }, + function () { return async function () { }; }, + function () { return { method() { } }.method; }, + function () { return function () { }.bind(null); }, +]; + +for (var i = 0; i < testLoopCount; ++i) { + var create = factories[i % factories.length]; + + var namedFirst = create(); + namedFirst.a = 1; + namedFirst[0] = 2; + namedFirst[1] = 3; + shouldBe(keys(namedFirst), "0,1,a,"); + shouldBe(keys(namedFirst), "0,1,a,"); + + var indexedFirst = create(); + indexedFirst[0] = 1.5; + indexedFirst[1] = 2.5; + indexedFirst.a = 1; + shouldBe(keys(indexedFirst), "0,1,a,"); + + var indexedOnly = create(); + indexedOnly[0] = "a"; + shouldBe(keys(indexedOnly), "0,"); + + var reified = create(); + reified[0] = 1; + reified.a = 2; + shouldBe(reified.length, 0); + shouldBe(keys(reified), "0,a,"); +} diff --git a/JSTests/stress/for-of-fast-string-latin1.js b/JSTests/stress/for-of-fast-string-latin1.js new file mode 100644 index 0000000000000..84d0827bab82b --- /dev/null +++ b/JSTests/stress/for-of-fast-string-latin1.js @@ -0,0 +1,49 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error("expected " + expected + " but got " + actual); +} + +function codes(string) { + let result = []; + for (let character of string) { + shouldBe(character.length, 1); + result.push(character.charCodeAt(0)); + } + return result; +} +noInline(codes); + +function firstThree(string) { + let [a, b, c] = string; + return [a, b, c]; +} +noInline(firstThree); + +let resolved = ""; +for (let i = 0; i < 256; i++) + resolved += String.fromCharCode(i); +resolved.charCodeAt(0); + +function check(string, offset, length) { + let result = codes(string); + shouldBe(result.length, length); + for (let i = 0; i < length; i++) + shouldBe(result[i], offset + i); +} + +for (let i = 0; i < testLoopCount; i++) { + let offset = i % 241; + check(resolved, 0, 256); + check(resolved.substring(offset, offset + 16), offset, 16); + check(resolved.substring(offset, offset + 8) + resolved.substring(offset + 8, offset + 16), offset, 16); + let [a, b, c] = firstThree("\xfd\xfe\xff"); + shouldBe(a, "\xfd"); + shouldBe(b, "\xfe"); + shouldBe(c, "\xff"); + [a, b, c] = firstThree("\xff"); + shouldBe(a, "\xff"); + shouldBe(b, undefined); + shouldBe(c, undefined); + shouldBe(codes(resolved.substring(offset, offset + 16) + "\u3042").length, 17); + shouldBe(codes("").length, 0); +} diff --git a/JSTests/stress/ftl-arithmetic-and-type-check-lowering.js b/JSTests/stress/ftl-arithmetic-and-type-check-lowering.js new file mode 100644 index 0000000000000..233ee09c04040 --- /dev/null +++ b/JSTests/stress/ftl-arithmetic-and-type-check-lowering.js @@ -0,0 +1,56 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected && !(actual !== actual && expected !== expected)) + throw new Error(`${message}: expected ${String(expected)} but got ${String(actual)}`); +} + +let clamped = new Uint8ClampedArray(4); +function storeClamped(value) { clamped[0] = value; return clamped[0]; } +noInline(storeClamped); +let clampedInputs = [-1, 0, 1, 254, 255, 256, -0x80000000, 0x7fffffff, 128]; + +function lessThan(a, b) { return a < b; } +noInline(lessThan); +let compareInputs = [[1, 2], [2, 1], [-1, 1], [1, -1], [0x7fffffff, -0x80000000], [1.5, 2], [2, 1.5], ["a", "b"], [1, "2"], [null, 1], [undefined, 1], [true, 2]]; + +function mul(a, b) { return a * b; } +function div(a, b) { return a / b; } +function mod(a, b) { return a % b; } +noInline(mul); +noInline(div); +noInline(mod); + +function not(value) { return !value; } +function boxCompare(a, b) { return [a === b]; } +noInline(not); +noInline(boxCompare); + +function sloppyThis() { return this; } +function callSloppyThis(receiver) { return sloppyThis.call(receiver); } +noInline(callSloppyThis); + +function lastIndexOf(array, value, fromIndex) { return Array.prototype.lastIndexOf.call(array, value, fromIndex); } +noInline(lastIndexOf); +let arrayLike = { length: 3, 0: "a", 1: "b", 2: "a" }; + +for (let i = 0; i < testLoopCount; ++i) { + let clampedInput = clampedInputs[i % clampedInputs.length]; + shouldBe(storeClamped(clampedInput), Math.min(255, Math.max(0, clampedInput)), "Uint8ClampedArray store"); + + let [a, b] = compareInputs[i % compareInputs.length]; + shouldBe(lessThan(a, b), a < b, `${String(a)} < ${String(b)}`); + + shouldBe(mul(i & 7, 3), (i & 7) * 3, "mul"); + shouldBe(1 / mul(0, -(i & 3)), 1 / (0 * -(i & 3)), "mul negative zero"); + shouldBe(div(-0x80000000, (i & 1) ? -1 : 2), (i & 1) ? 0x80000000 : -0x40000000, "div overflow"); + shouldBe(div(i, (i & 1) ? 0 : 1), (i & 1) ? Infinity : i, "div by zero"); + shouldBe(mod(-0x80000000, (i & 1) ? -1 : 3), (i & 1) ? -0 : -2, "mod overflow"); + shouldBe(1 / mod(-(i & 7) * 4, 4), -Infinity, "mod negative zero"); + + shouldBe(not(i & 1 ? true : false), !(i & 1), "boolean not"); + shouldBe(boxCompare(i & 1, 1)[0], (i & 1) === 1, "boxed boolean"); + + let receiver = (i & 3) ? { i } : globalThis; + shouldBe(callSloppyThis(receiver), receiver, "sloppy this"); + + shouldBe(lastIndexOf(arrayLike, "a", (i & 3) - 2), [0, 2, 0, 0][i & 3], "lastIndexOf with negative fromIndex"); +} diff --git a/JSTests/stress/ftl-map-set-with-deleted-entries.js b/JSTests/stress/ftl-map-set-with-deleted-entries.js new file mode 100644 index 0000000000000..be975fe427a9d --- /dev/null +++ b/JSTests/stress/ftl-map-set-with-deleted-entries.js @@ -0,0 +1,55 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected} but got ${actual}`); +} + +function getObject(map, key) { return map.get(key); } +function getUntyped(map, key) { return map.get(key); } +function hasString(set, key) { return set.has(key); } +noInline(getObject); +noInline(getUntyped); +noInline(hasString); + +let objects = []; +for (let i = 0; i < 64; ++i) + objects.push({ i }); + +for (let i = 0; i < testLoopCount; ++i) { + let map = new Map(); + let set = new Set(); + for (let j = 0; j < 16; ++j) { + map.set(objects[j], j); + map.set(j, j); + map.set("s" + j, j); + set.add("s" + j); + } + for (let j = 0; j < 16; j += 2) { + map.delete(objects[j]); + map.delete(j); + map.delete("s" + j); + set.delete("s" + j); + } + let j = i & 15; + let expected = (j & 1) ? j : undefined; + shouldBe(getObject(map, objects[j]), expected, "object key"); + shouldBe(getUntyped(map, j), expected, "int key"); + shouldBe(getUntyped(map, "s" + j), expected, "string key"); + shouldBe(getUntyped(map, 1.5), undefined, "missing double key"); + shouldBe(hasString(set, "s" + j), !!(j & 1), "set string key"); +} + +function sumSet(set) { + let sum = 0; + for (let value of set) + sum += value; + return sum; +} +noInline(sumSet); + +for (let i = 0; i < testLoopCount; ++i) { + let set = new Set([1, 2, 3, 4]); + if (i & 1) + set.delete(2); + shouldBe(sumSet(set), (i & 1) ? 8 : 10, "Set iteration"); + shouldBe(sumSet(new Set()), 0, "empty Set iteration"); +} diff --git a/JSTests/stress/ftl-number-is-predicates-untyped.js b/JSTests/stress/ftl-number-is-predicates-untyped.js new file mode 100644 index 0000000000000..6d8283398e8a3 --- /dev/null +++ b/JSTests/stress/ftl-number-is-predicates-untyped.js @@ -0,0 +1,24 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected} but got ${actual}`); +} + +function isNaNTest(value) { return Number.isNaN(value); } +function isFiniteTest(value) { return Number.isFinite(value); } +function isSafeIntegerTest(value) { return Number.isSafeInteger(value); } +noInline(isNaNTest); +noInline(isFiniteTest); +noInline(isSafeIntegerTest); + +let values = [ + 0, -0, 1, -1, 0x7fffffff, -0x80000000, 1.5, -1.5, NaN, Infinity, -Infinity, + 2 ** 53 - 1, -(2 ** 53 - 1), 2 ** 53, -(2 ** 53), 1e300, Number.MIN_VALUE, + "1", "NaN", "", null, undefined, true, false, {}, [], Symbol(), 1n, 0n, () => 1, +]; + +for (let i = 0; i < testLoopCount; ++i) { + let value = values[i % values.length]; + shouldBe(isNaNTest(value), typeof value === "number" && value !== value, `Number.isNaN(${String(value)})`); + shouldBe(isFiniteTest(value), typeof value === "number" && value === value && value !== Infinity && value !== -Infinity, `Number.isFinite(${String(value)})`); + shouldBe(isSafeIntegerTest(value), typeof value === "number" && Number.isInteger(value) && Math.abs(value) <= 2 ** 53 - 1, `Number.isSafeInteger(${String(value)})`); +} diff --git a/JSTests/stress/ftl-string-code-point-at-surrogates.js b/JSTests/stress/ftl-string-code-point-at-surrogates.js new file mode 100644 index 0000000000000..8018cc4de2c19 --- /dev/null +++ b/JSTests/stress/ftl-string-code-point-at-surrogates.js @@ -0,0 +1,35 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected} but got ${actual}`); +} + +function codePointAt(string, index) { return string.codePointAt(index); } +noInline(codePointAt); + +function reference(string, index) { + let lead = string.charCodeAt(index); + if (lead < 0xd800 || lead > 0xdbff || index + 1 >= string.length) + return lead; + let trail = string.charCodeAt(index + 1); + if (trail < 0xdc00 || trail > 0xdfff) + return lead; + return (lead - 0xd800) * 0x400 + (trail - 0xdc00) + 0x10000; +} + +let strings = [ + "abc", + "a\u{1F600}b", + "\u{1F600}", + "\ud800", + "x\ud800", + "\ud800x", + "\udc00\ud800", + "あいう", + "\u{10FFFF}\u{10000}", +]; + +for (let i = 0; i < testLoopCount; ++i) { + let string = strings[i % strings.length]; + for (let j = 0; j < string.length; ++j) + shouldBe(codePointAt(string, j), reference(string, j), `${escape(string)}.codePointAt(${j})`); +} diff --git a/JSTests/stress/ftl-string-substr-and-iteration.js b/JSTests/stress/ftl-string-substr-and-iteration.js new file mode 100644 index 0000000000000..64cca9228f50c --- /dev/null +++ b/JSTests/stress/ftl-string-substr-and-iteration.js @@ -0,0 +1,29 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected} but got ${actual}`); +} + +function substr(string, start, length) { return string.substr(start, length); } +noInline(substr); + +function concatenateCharacters(string) { + let result = ""; + for (let character of string) + result += character; + return result; +} +noInline(concatenateCharacters); + +let strings = ["abcdef", "あいうえお", "a\u{1F600}b", ""]; + +for (let i = 0; i < testLoopCount; ++i) { + let string = strings[i % strings.length]; + let start = i % 8 - 2; + let length = i % 5 - 1; + let expected = ""; + let from = start < 0 ? Math.max(0, string.length + start) : Math.min(start, string.length); + for (let j = from; j < Math.min(string.length, from + length); ++j) + expected += string[j]; + shouldBe(substr(string, start, length), expected, `${escape(string)}.substr(${start}, ${length})`); + shouldBe(concatenateCharacters(string), string, `iteration over ${escape(string)}`); +} diff --git a/JSTests/stress/ftl-strings-equal-ropes.js b/JSTests/stress/ftl-strings-equal-ropes.js new file mode 100644 index 0000000000000..9d8293615ad6e --- /dev/null +++ b/JSTests/stress/ftl-strings-equal-ropes.js @@ -0,0 +1,21 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message}: expected ${expected} but got ${actual}`); +} + +function equal(a, b) { return a === b; } +noInline(equal); + +let flat = ["hello world", "hello worle", "あい", "あぅ", "hello", ""]; + +for (let i = 0; i < testLoopCount; ++i) { + let left = flat[i % flat.length]; + let right = flat[(i >> 3) % flat.length]; + let ropeLeft = left.substring(0, left.length >> 1) + left.substring(left.length >> 1); + let ropeRight = right.substring(0, right.length >> 1) + right.substring(right.length >> 1); + let expected = flat.indexOf(left) === flat.indexOf(right); + shouldBe(equal(left, right), expected, "flat/flat"); + shouldBe(equal(ropeLeft, right), expected, "rope/flat"); + shouldBe(equal(left, ropeRight), expected, "flat/rope"); + shouldBe(equal(ropeLeft, ropeRight), expected, "rope/rope"); +} diff --git a/JSTests/stress/get-prototype-from-constructor-revoked-proxy.js b/JSTests/stress/get-prototype-from-constructor-revoked-proxy.js new file mode 100644 index 0000000000000..4e31382f4c996 --- /dev/null +++ b/JSTests/stress/get-prototype-from-constructor-revoked-proxy.js @@ -0,0 +1,102 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`expected ${String(expected)} but got ${String(actual)}`); +} + +function shouldThrow(func, errorType) { + let error; + try { + func(); + } catch (e) { + error = e; + } + if (!(error instanceof errorType)) + throw new Error(`expected ${errorType.name} but got ${String(error)}`); +} + +function boundFunctionWithRevokedTarget() { + let { proxy, revoke } = Proxy.revocable(function () { }, {}); + let bound = proxy.bind(); + revoke(); + return bound; +} + +function proxyRevokedByPrototypeGetter(prototype) { + let count = 0; + let { proxy, revoke } = Proxy.revocable(function () { }, { + get(target, key, receiver) { + if (key === "prototype") { + count++; + revoke(); + return prototype; + } + return Reflect.get(target, key, receiver); + } + }); + return { proxy, count: () => count }; +} + +const other = createGlobalObject(); +const GeneratorFunction = function* () { }.constructor; +const AsyncFunction = async function () { }.constructor; +const AsyncGeneratorFunction = async function* () { }.constructor; + +const tests = [ + [Object, [], other.Object.prototype], + [Function, [], other.Function.prototype], + [GeneratorFunction, [], other.eval("(function* () { })").constructor.prototype], + [AsyncFunction, [], other.eval("(async function () { })").constructor.prototype], + [AsyncGeneratorFunction, [], other.eval("(async function* () { })").constructor.prototype], + [Array, [], other.Array.prototype], + [Array, [3], other.Array.prototype], + [Array, [1, 2], other.Array.prototype], + [Boolean, [], other.Boolean.prototype], + [Number, [], other.Number.prototype], + [String, [], other.String.prototype], + [Date, [], other.Date.prototype], + [RegExp, [], other.RegExp.prototype], + [Error, [], other.Error.prototype], + [TypeError, [], other.TypeError.prototype], + [AggregateError, [[]], other.AggregateError.prototype], + [Map, [], other.Map.prototype], + [Set, [], other.Set.prototype], + [WeakMap, [], other.WeakMap.prototype], + [WeakSet, [], other.WeakSet.prototype], + [WeakRef, [{}], other.WeakRef.prototype], + [FinalizationRegistry, [function () { }], other.FinalizationRegistry.prototype], + [ArrayBuffer, [8], other.ArrayBuffer.prototype], + [DataView, [new ArrayBuffer(8)], other.DataView.prototype], + [Int8Array, [1], other.Int8Array.prototype], + [Float64Array, [[1, 2]], other.Float64Array.prototype], + [Promise, [function () { }], other.Promise.prototype], + [Intl.Collator, [], other.Intl.Collator.prototype], + [Intl.NumberFormat, [], other.Intl.NumberFormat.prototype], + [function () { }, [], other.Object.prototype], + [class { }, [], other.Object.prototype], + [class extends Array { }, [], other.Array.prototype], + [class extends Promise { }, [function () { }], other.Promise.prototype], +]; + +for (let [constructor, args, otherPrototype] of tests) { + let prototype = {}; + + let bound = boundFunctionWithRevokedTarget(); + bound.prototype = prototype; + shouldBe(Object.getPrototypeOf(Reflect.construct(constructor, args, bound)), prototype); + + shouldThrow(() => Reflect.construct(constructor, args, boundFunctionWithRevokedTarget()), TypeError); + + let revokedReturningObject = proxyRevokedByPrototypeGetter(prototype); + shouldBe(Object.getPrototypeOf(Reflect.construct(constructor, args, revokedReturningObject.proxy)), prototype); + shouldBe(revokedReturningObject.count(), 1); + + let revokedReturningUndefined = proxyRevokedByPrototypeGetter(undefined); + shouldThrow(() => Reflect.construct(constructor, args, revokedReturningUndefined.proxy), TypeError); + shouldBe(revokedReturningUndefined.count(), 1); + + let otherBound = new other.Function().bind(); + shouldBe(Object.getPrototypeOf(Reflect.construct(constructor, args, otherBound)), otherPrototype); + + let otherProxy = new Proxy(otherBound, {}); + shouldBe(Object.getPrototypeOf(Reflect.construct(constructor, args, otherProxy)), otherPrototype); +} diff --git a/JSTests/stress/heap-size-counts-live-memory.js b/JSTests/stress/heap-size-counts-live-memory.js new file mode 100644 index 0000000000000..d0a3dcc3f3cb3 --- /dev/null +++ b/JSTests/stress/heap-size-counts-live-memory.js @@ -0,0 +1,71 @@ +//@ runDefault + +// A collection counts the memory of the cells it finds live: their bytes, as the old generation's size, and the memory +// outside the heap they report as extra memory. An Eden collection adds the young cells it finds live to both, and +// older cells stay counted without being revisited. + +function shouldBeAtLeast(actual, expected, description) +{ + if (actual < expected) + throw new Error(`${description}: ${actual} is less than ${expected}`); +} + +const arraysPerBatch = 4; +const arrayBytes = 1 << 20; // Above JSArrayBufferView::fastSizeLimit, so stored outside the heap and reported as extra memory. +const objectsPerBatch = 50000; +const minimumObjectBytes = 32; // A cell header, a butterfly pointer, and some of the four property slots. +const extraMemoryPerBatch = arraysPerBatch * arrayBytes; +const cellBytesPerBatch = objectsPerBatch * minimumObjectBytes; + +// Only this array references the batches, and they're allocated in a separate frame, which keeps stale references off +// the stack where the conservative scan would find them. +let live = []; +function allocateBatch() +{ + for (let i = 0; i < arraysPerBatch; ++i) + live.push(new Uint8Array(arrayBytes)); + for (let i = 0; i < objectsPerBatch; ++i) + live.push({ a: i, b: i, c: i, d: i }); +} +noInline(allocateBatch); + +function measure(collectFn) +{ + let heapSize = collectFn(); + let extraMemory = $vm.heapExtraMemorySize(); + return { extraMemory, oldGenerationSize: heapSize - extraMemory }; +} + +function shouldHaveGrownBy(after, before, batches, description) +{ + shouldBeAtLeast(after.extraMemory - before.extraMemory, batches * extraMemoryPerBatch, `extra memory ${description}`); + shouldBeAtLeast(after.oldGenerationSize - before.oldGenerationSize, batches * cellBytesPerBatch, `old generation ${description}`); +} + +let baseline = measure(fullGC); + +allocateBatch(); +let afterFirstEden = measure(edenGC); +shouldHaveGrownBy(afterFirstEden, baseline, 1, "after an Eden collection"); + +// The second Eden collection doesn't revisit the first batch, which has to stay counted. +allocateBatch(); +let afterSecondEden = measure(edenGC); +shouldHaveGrownBy(afterSecondEden, baseline, 2, "after a second Eden collection"); + +let afterFull = measure(fullGC); +shouldHaveGrownBy(afterFull, baseline, 2, "after a Full collection"); + +// Release all batches: shrinking the array clears its slots, so nothing references the batches any more. +live.length = 0; + +// An Eden collection doesn't revisit old cells, so it can't find the batches dead, and they stay counted. +let afterReleaseEden = measure(edenGC); +shouldHaveGrownBy(afterReleaseEden, baseline, 2, "after an Eden collection with the batches dead"); + +let afterRelease = measure(fullGC); +let extraMemoryReclaimed = afterFull.extraMemory - afterRelease.extraMemory; +let oldGenerationReclaimed = afterFull.oldGenerationSize - afterRelease.oldGenerationSize; +// Allow for a few cells still found by the conservative stack scan. +shouldBeAtLeast(extraMemoryReclaimed, extraMemoryPerBatch, "extra memory reclaimed once the batches are dead"); +shouldBeAtLeast(oldGenerationReclaimed, cellBytesPerBatch, "old generation reclaimed once the batches are dead"); diff --git a/JSTests/stress/instanceof-branch-fusion.js b/JSTests/stress/instanceof-branch-fusion.js new file mode 100644 index 0000000000000..e2117b655c6bd --- /dev/null +++ b/JSTests/stress/instanceof-branch-fusion.js @@ -0,0 +1,148 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual + ' expected: ' + expected); +} + +function Pair(car, cdr) { + this.car = car; + this.cdr = cdr; +} + +class Custom { + static [Symbol.hasInstance](value) { return value === 42; } +} + +function notInstance(term) { + if (!(term instanceof Pair)) + return term; + return term.car; +} +noInline(notInstance); + +function isInstance(term) { + if (term instanceof Pair) + return term.cdr; + return -1; +} +noInline(isInstance); + +function resultUsedAfterBranch(term) { + var result = term instanceof Pair; + if (result) + return [result, term.car]; + return [result, term]; +} +noInline(resultUsedAfterBranch); + +function custom(value, constructor) { + if (value instanceof constructor) + return "yes"; + return "no"; +} +noInline(custom); + +function loop(list) { + var count = 0; + while (list instanceof Pair) { + count += list.car; + list = list.cdr; + } + return count; +} +noInline(loop); + +function customJtrue(value, constructor) { + if (!(value instanceof constructor)) + return "no"; + return "yes"; +} +noInline(customJtrue); + +function argumentDst(a, b) { + a = a instanceof Pair; + if (a) + return b; + return -b; +} +noInline(argumentDst); + +function longBody(term) { + if (term instanceof Pair) { + var x = term.car; + x = (x * 3 + 1) | 0; x = (x * 5 + 2) | 0; x = (x * 7 + 3) | 0; x = (x * 11 + 4) | 0; + x = (x * 3 + 5) | 0; x = (x * 5 + 6) | 0; x = (x * 7 + 7) | 0; x = (x * 11 + 8) | 0; + x = (x * 3 + 9) | 0; x = (x * 5 + 10) | 0; x = (x * 7 + 11) | 0; x = (x * 11 + 12) | 0; + x = (x * 3 + 13) | 0; x = (x * 5 + 14) | 0; x = (x * 7 + 15) | 0; x = (x * 11 + 16) | 0; + x = (x * 3 + 17) | 0; x = (x * 5 + 18) | 0; x = (x * 7 + 19) | 0; x = (x * 11 + 20) | 0; + return x; + } + return -1; +} +noInline(longBody); + +function longBodyExpected(car) { + var x = car; + var muls = [3, 5, 7, 11]; + for (var j = 1; j <= 20; ++j) + x = (x * muls[(j - 1) % 4] + j) | 0; + return x; +} + +function inlinedPredicate(term) { + if (!(term instanceof Pair)) + return 0; + return term.car + term.cdr; +} + +function inlinedCaller(term) { + return inlinedPredicate(term) + 1; +} +noInline(inlinedCaller); + +var list = new Pair(1, new Pair(2, new Pair(3, null))); +for (var i = 0; i < testLoopCount; ++i) { + var pair = new Pair(i, i + 1); + shouldBe(notInstance(pair), i); + shouldBe(notInstance("str"), "str"); + shouldBe(notInstance(i), i); + shouldBe(notInstance({ car: 1 }).car, 1); + shouldBe(isInstance(pair), i + 1); + shouldBe(isInstance(null), -1); + shouldBe(isInstance({ cdr: 2 }), -1); + + var r = resultUsedAfterBranch(pair); + shouldBe(r[0], true); + shouldBe(r[1], i); + r = resultUsedAfterBranch(undefined); + shouldBe(r[0], false); + shouldBe(r[1], undefined); + + shouldBe(custom(pair, Pair), "yes"); + shouldBe(custom(42, Custom), "yes"); + shouldBe(custom(pair, Custom), "no"); + shouldBe(custom(1, Pair), "no"); + + shouldBe(loop(list), 6); + + shouldBe(customJtrue(pair, Pair), "yes"); + shouldBe(customJtrue(42, Custom), "yes"); + shouldBe(customJtrue(pair, Custom), "no"); + shouldBe(customJtrue(1, Pair), "no"); + + shouldBe(argumentDst(pair, i), i); + shouldBe(argumentDst({ car: 1 }, i), -i); + + shouldBe(longBody(pair), longBodyExpected(i)); + shouldBe(longBody({ car: 1 }), -1); + + shouldBe(inlinedCaller(pair), 2 * i + 2); + shouldBe(inlinedCaller("str"), 1); +} + +var threw = false; +try { + custom(1, 2); +} catch (e) { + threw = e instanceof TypeError; +} +shouldBe(threw, true); diff --git a/JSTests/stress/intl-collator.js b/JSTests/stress/intl-collator.js index 8ae690d6c6b7d..f10b11e81e21f 100644 --- a/JSTests/stress/intl-collator.js +++ b/JSTests/stress/intl-collator.js @@ -410,11 +410,14 @@ shouldThrow(() => Intl.Collator.prototype.resolvedOptions.call(5), TypeError); shouldBe(new Intl.Collator('de-u-kn-false-kf-upper-co-phonebk-hc-h12').resolvedOptions().locale, 'de-u-co-phonebk-kf-upper-kn-false'); -shouldThrow(() => { +{ + let reads = 0; Function.prototype.__defineGetter__('prototype', function () { - this.call(0x1234); + reads++; + return Object.prototype; }); - + const collator = new Intl.Collator(); - 1 instanceof collator.compare; -}, TypeError); + shouldBe(1 instanceof collator.compare, false); + shouldBe(reads, 0); +} diff --git a/JSTests/stress/intl-datetimeformat.js b/JSTests/stress/intl-datetimeformat.js index 6513df24f6029..acb824e0ce033 100644 --- a/JSTests/stress/intl-datetimeformat.js +++ b/JSTests/stress/intl-datetimeformat.js @@ -860,11 +860,14 @@ shouldBe(JSON.stringify(Intl.DateTimeFormat('zh', { era: 'short', year: 'numeric shouldBe(year.value, "2021") } -shouldThrow(() => { +{ + let reads = 0; Function.prototype.__defineGetter__('prototype', function () { - this.call(0x1234); + reads++; + return Object.prototype; }); - + const dateTimeFormat = new Intl.DateTimeFormat(); - 1 instanceof dateTimeFormat.format; -}, TypeError) + shouldBe(1 instanceof dateTimeFormat.format, false); + shouldBe(reads, 0); +} diff --git a/JSTests/stress/intl-numberformat.js b/JSTests/stress/intl-numberformat.js index 814e0278f4213..a7a81755682b4 100644 --- a/JSTests/stress/intl-numberformat.js +++ b/JSTests/stress/intl-numberformat.js @@ -524,11 +524,14 @@ shouldThrow(() => { }); }, RangeError); -shouldThrow(() => { +{ + let reads = 0; Function.prototype.__defineGetter__('prototype', function () { - this.call(0x1234); + reads++; + return Object.prototype; }); - + const numberFormat = new Intl.NumberFormat(); - 1 instanceof numberFormat.format; -}, TypeError) + shouldBe(1 instanceof numberFormat.format, false); + shouldBe(reads, 0); +} diff --git a/JSTests/stress/json-stringify-substring-rope.js b/JSTests/stress/json-stringify-substring-rope.js new file mode 100644 index 0000000000000..9e3cd45ea7ef2 --- /dev/null +++ b/JSTests/stress/json-stringify-substring-rope.js @@ -0,0 +1,55 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`bad value: ${actual}, expected ${expected}`); +} + +function flatten(string) { + return string.split("").join(""); +} +noInline(flatten); + +let latin1 = "the quick brown fox jumps over the lazy dog, caf\u00e9 na\u00efve, and then rests for a while under a tree"; +let escapes = "the \"quick\" brown \\fox\\ jumps\nover\tthe lazy dog and then \u0001 rests for a while under a tree"; +let wide = "the quick \u65e5\u672c\u8a9e fox jumps over \u4e16\u754c the \ud83d\ude80 dog and then rests for a while under a tree"; +let wideEscapes = "the \"quick\" \u65e5\u672c\u8a9e \\fox\\ jumps\nover \ud83d\ude80 the lazy dog and then rests for a while"; +let bases = [latin1, escapes, wide, wideEscapes]; +let ranges = [[0, 40], [3, 6], [10, 17], [5, 20], [9, 41], [21, 22], [1, 70], [30, 31], [29, 31], [0, 1]]; + +function check(base, start, end) { + let expected = flatten(base.slice(start, end)); + + shouldBe(JSON.stringify(base.slice(start, end)), JSON.stringify(expected)); + shouldBe(JSON.stringify({ id: 1, text: base.slice(start, end), tail: base.slice(start) }), JSON.stringify({ id: 1, text: expected, tail: flatten(base.slice(start)) })); + shouldBe(JSON.stringify([base.slice(start, end), 1, base.slice(start, end)]), JSON.stringify([expected, 1, expected])); + shouldBe(JSON.stringify({ text: base.slice(start, end), list: [base.slice(start, end)] }, null, 2), JSON.stringify({ text: expected, list: [expected] }, null, 2)); + shouldBe(JSON.stringify({ text: base.slice(start, end) }, ["text"]), JSON.stringify({ text: expected }, ["text"])); + shouldBe(JSON.stringify(base.slice(1).slice(start, end)), JSON.stringify(flatten(base.slice(start + 1, end + 1)))); + + let substring = base.slice(start, end); + let object = { text: substring }; + shouldBe(JSON.stringify(object), JSON.stringify({ text: expected })); + shouldBe(JSON.stringify(object), JSON.stringify({ text: expected })); + shouldBe(substring, expected); + shouldBe(JSON.parse(JSON.stringify(object)).text, expected); +} +noInline(check); + +for (let base of bases) { + for (let [start, end] of ranges) + check(base, start, end); +} + +let rocket = wide.indexOf("\ud83d\ude80"); +shouldBe(JSON.stringify(wide.slice(0, rocket + 1)), "\"the quick \u65e5\u672c\u8a9e fox jumps over \u4e16\u754c the \\ud83d\""); +shouldBe(JSON.stringify({ text: wide.slice(rocket + 1, rocket + 9) }), "{\"text\":\"\\ude80 dog an\"}"); +shouldBe(JSON.stringify(escapes.slice(2, 19)), "\"e \\\"quick\\\" brown \\\\\""); +shouldBe(JSON.stringify({ text: latin1.slice(45, 55) }), "{\"text\":\"caf\u00e9 na\u00efve\"}"); + +function stringify(base, start, end) { + return JSON.stringify({ id: start, text: base.slice(start, end) }); +} +noInline(stringify); + +let expected = bases.map((base) => `{"id":4,"text":${JSON.stringify(flatten(base.slice(4, 44)))}}`); +for (let i = 0; i < testLoopCount; ++i) + shouldBe(stringify(bases[i % bases.length], 4, 44), expected[i % bases.length]); diff --git a/JSTests/stress/labelled-function-declaration-scope.js b/JSTests/stress/labelled-function-declaration-scope.js new file mode 100644 index 0000000000000..a8848f83e9df8 --- /dev/null +++ b/JSTests/stress/labelled-function-declaration-scope.js @@ -0,0 +1,227 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`Bad value: ${actual}, expected: ${expected}`); +} + +function shouldBeSyntaxError(source) { + let error; + try { + new Function(source); + } catch (e) { + error = e; + } + if (!(error instanceof SyntaxError)) + throw new Error(`Expected a SyntaxError: ${source}`); +} + +shouldBe(global1(), 1); +label: function global1() { return 1; } +shouldBe(Object.getOwnPropertyDescriptor(globalThis, "global1").configurable, false); + +shouldBe(typeof global2, "undefined"); +{ + shouldBe(global2(), 2); + label: function global2() { return 2; } +} +shouldBe(global2(), 2); + +(function () { + shouldBe(f(), 1); + label: function f() { return 1; } + shouldBe(f(), 1); +})(); + +(function () { + shouldBe(f(), 1); + label1: label2: label3: function f() { return 1; } +})(); + +(function () { + shouldBe(f(), 2); + function f() { return 1; } + label: function f() { return 2; } + shouldBe(f(), 2); +})(); + +(function () { + shouldBe(f(), 1); + label: function f() { return 2; } + function f() { return 1; } + shouldBe(f(), 1); +})(); + +(function () { + var f = 1; + label: function f() { } + shouldBe(f, 1); +})(); + +(function (f) { + shouldBe(typeof f, "function"); + label: function f() { } +})(1); + +(function (f) { + { + shouldBe(typeof f, "function"); + label: function f() { } + } + shouldBe(f, 1); +})(1); + +(function () { + shouldBe(typeof arguments, "function"); + label: function arguments() { } +})(); + +(function () { + shouldBe(f, undefined); + { + shouldBe(f(), 1); + label: function f() { return 1; } + shouldBe(f(), 1); + } + shouldBe(f(), 1); +})(); + +(function () { + { + shouldBe(f(), 1); + label1: label2: function f() { return 1; } + } + shouldBe(f(), 1); +})(); + +(function () { + { + shouldBe(f(), 2); + function f() { return 1; } + shouldBe(f(), 2); + label: function f() { return 2; } + shouldBe(f(), 2); + } + shouldBe(f(), 2); +})(); + +(function () { + { + shouldBe(f(), 2); + label1: function f() { return 1; } + label2: function f() { return 2; } + } + shouldBe(f(), 2); +})(); + +(function () { + let f = 1; + { + shouldBe(f(), 2); + label: function f() { return 2; } + } + shouldBe(f, 1); +})(); + +(function () { + { + label: function f() { return 1; } + f = 2; + shouldBe(f, 2); + } + shouldBe(f(), 1); +})(); + +(function () { + for (let i = 0; i < 2; i++) { + shouldBe(f(), i); + label: function f() { return i; } + } +})(); + +(function () { + switch (1) { + case 1: + shouldBe(f(), 1); + case 2: + label: function f() { return 1; } + } + shouldBe(f(), 1); +})(); + +(function () { + switch (1) { + case 0: + label: function f() { return 1; } + case 1: + shouldBe(f(), 1); + } + shouldBe(f, undefined); +})(); + +(function () { + try { + throw 1; + } catch (e) { + shouldBe(f(), 1); + label: function f() { return 1; } + } + shouldBe(f(), 1); +})(); + +(function* () { + shouldBe(f(), 1); + label: function f() { return 1; } +})().next(); + +(() => { + shouldBe(f(), 1); + label: function f() { return 1; } +})(); + +(function () { + shouldBe(eval("f(); label: function f() { return 1; }"), 1); + shouldBe(f(), 1); + shouldBe(eval("2; label: function g() { }"), 2); +})(); + +(function () { + let f = 1; + let error; + try { + eval("label: function f() { }"); + } catch (e) { + error = e; + } + shouldBe(error instanceof SyntaxError, true); + eval("{ label: function f() { } }"); + shouldBe(f, 1); +})(); + +shouldBeSyntaxError("let f; label: function f() { }"); +shouldBeSyntaxError("label: function f() { } let f;"); +shouldBeSyntaxError("const f = 1; label: function f() { }"); +shouldBeSyntaxError("class f { } label: function f() { }"); +shouldBeSyntaxError("{ let f; label: function f() { } }"); +shouldBeSyntaxError("{ label: function f() { } let f; }"); +shouldBeSyntaxError("{ label: function f() { } class f { } }"); +shouldBeSyntaxError("{ var f; label: function f() { } }"); +shouldBeSyntaxError("{ label: function f() { } var f; }"); +shouldBeSyntaxError("{ label: function f() { } { var f; } }"); +shouldBeSyntaxError("{ label: function f() { } function* f() { } }"); +shouldBeSyntaxError("{ async function f() { } label: function f() { } }"); +shouldBeSyntaxError("switch (1) { case 0: let f; case 1: label: function f() { } }"); +shouldBeSyntaxError("try { } catch (f) { label: function f() { } }"); +shouldBeSyntaxError("try { } catch ({ f }) { label: function f() { } }"); + +shouldBeSyntaxError("'use strict'; label: function f() { }"); +shouldBeSyntaxError("'use strict'; { label: function f() { } }"); +shouldBeSyntaxError("label: function* f() { }"); +shouldBeSyntaxError("{ label: function* f() { } }"); +shouldBeSyntaxError("if (1) label: function f() { }"); +shouldBeSyntaxError("if (1) ; else label: function f() { }"); +shouldBeSyntaxError("while (0) label: function f() { }"); +shouldBeSyntaxError("do label: function f() { } while (0)"); +shouldBeSyntaxError("for (;;) label: function f() { }"); +shouldBeSyntaxError("for (var x in { }) label: function f() { }"); +shouldBeSyntaxError("for (var x of []) label: function f() { }"); +shouldBeSyntaxError("with ({ }) label: function f() { }"); +shouldBeSyntaxError("label1: if (1) label2: function f() { }"); diff --git a/JSTests/stress/logical-not-does-not-propagate-truncation.js b/JSTests/stress/logical-not-does-not-propagate-truncation.js new file mode 100644 index 0000000000000..8faad235a31aa --- /dev/null +++ b/JSTests/stress/logical-not-does-not-propagate-truncation.js @@ -0,0 +1,25 @@ +function shouldBe(actual, expected, what) { + if (actual !== expected) + throw new Error(what + ": bad value " + actual + ", expected " + expected); +} + +function notOfAdd(x, y) { return (!(x + y)) | 0; } +noInline(notOfAdd); + +function notOfMul(x, y) { return (!(x * y)) | 0; } +noInline(notOfMul); + +function notOfDiv(x, y) { return (!(x / y)) | 0; } +noInline(notOfDiv); + +for (let i = 1; i < testLoopCount; ++i) { + shouldBe(notOfAdd(i, 1), 0, "warm notOfAdd"); + shouldBe(notOfMul(i, 1), 0, "warm notOfMul"); + shouldBe(notOfDiv(i, 1), 0, "warm notOfDiv"); +} + +shouldBe(notOfAdd(-2147483648, -2147483648), 0, "!(-2^31 + -2^31) | 0"); +shouldBe(notOfMul(65536, 65536), 0, "!(2^16 * 2^16) | 0"); +shouldBe(notOfDiv(1, 2), 0, "!(1 / 2) | 0"); +shouldBe(notOfAdd(0, 0), 1, "!(0 + 0) | 0"); +shouldBe(notOfDiv(0, 5), 1, "!(0 / 5) | 0"); diff --git a/JSTests/stress/math-pow-base-one.js b/JSTests/stress/math-pow-base-one.js new file mode 100644 index 0000000000000..cffe18a58c67e --- /dev/null +++ b/JSTests/stress/math-pow-base-one.js @@ -0,0 +1,43 @@ +function shouldBe(actual, expected, message) { + if (!Object.is(actual, expected)) + throw new Error(message + ": expected " + expected + " but got " + actual); +} + +function pow(x, y) { + return Math.pow(x, y); +} +noInline(pow); + +var cases = [ + [1, 0.01666666753590107, 1], + [1, 0.5, 1], + [1, -0.5, 1], + [1, 2.5, 1], + [1, -2.5, 1], + [1, 0, 1], + [1, -0, 1], + [1, 1e300, 1], + [1, -1e300, 1], + [1, Number.MIN_VALUE, 1], + [1, NaN, NaN], + [1, Infinity, NaN], + [1, -Infinity, NaN], + [-1, 0.5, NaN], + [-1, 2.5, NaN], + [-1, Infinity, NaN], + [-1, -Infinity, NaN], + [-1, NaN, NaN], + [1.0000000000000002, 1e300, Infinity], + [0.9999999999999999, 1e300, 0], + [2, 0.5, Math.SQRT2], + [4, -0.5, 0.5], + [0, 0.5, 0], + [-0, 0.5, 0], + [Infinity, 0.5, Infinity], + [Infinity, -0.5, 0], +]; + +for (var i = 0; i < testLoopCount; ++i) { + for (var [x, y, expected] of cases) + shouldBe(pow(x, y), expected, "Math.pow(" + x + ", " + y + ")"); +} diff --git a/JSTests/stress/movhint-removal-terminal-liveness-only-for-phantom.js b/JSTests/stress/movhint-removal-terminal-liveness-only-for-phantom.js new file mode 100644 index 0000000000000..7bab66a94262e --- /dev/null +++ b/JSTests/stress/movhint-removal-terminal-liveness-only-for-phantom.js @@ -0,0 +1,44 @@ +function f(a, b, c, s) { + if (c < 0 || s < 0) + return -1; + let x = Math.sqrt(a) * Math.sqrt(b); + if (c) { + if (typeof s === "string") + return x; + return 1; + } + return 2; +} +noInline(f); + +function g(a, c, o) { + let x = a * 3 + 1; + let y = { x }; + if (c) { + if (typeof o === "string") + return y.x + x; + return o.f; + } + return 2; +} +noInline(g); + +for (let i = 0; i < testLoopCount; ++i) { + let r = f(i + 0.5, i + 1.5, i & 1, i); + if (r !== ((i & 1) ? 1 : 2)) + throw new Error("bad f: " + i + " " + r); + r = g(i, i & 1, { f: i }); + if (r !== ((i & 1) ? i : 2)) + throw new Error("bad g: " + i + " " + r); +} + +let expected = Math.sqrt(4) * Math.sqrt(9); +let r = f(4, 9, 1, "s"); +if (r !== expected) + throw new Error("bad f with string: " + r); +r = g(5, 1, "s"); +if (r !== 32) + throw new Error("bad g with string: " + r); +r = g(5, 1, { get f() { return 7; } }); +if (r !== 7) + throw new Error("bad g with getter: " + r); diff --git a/JSTests/stress/new-array-buffer-negative-length-error-message.js b/JSTests/stress/new-array-buffer-negative-length-error-message.js new file mode 100644 index 0000000000000..c33b6bbbb67d0 --- /dev/null +++ b/JSTests/stress/new-array-buffer-negative-length-error-message.js @@ -0,0 +1,37 @@ +function shouldBe(actual, expected, what) { + if (actual !== expected) + throw new Error(what + ": bad value " + actual + ", expected " + expected); +} + +function errorFrom(func) { + try { + func(); + } catch (e) { + return e; + } + return null; +} + +// A negative length speculated as an int32 must throw the same RangeError as the generic path. + +function newArrayBufferUnused(n) { + new ArrayBuffer(n); + return 1; +} +noInline(newArrayBufferUnused); + +function newArrayBuffer(n) { + return new ArrayBuffer(n); +} +noInline(newArrayBuffer); + +for (let i = 0; i < testLoopCount / 4; ++i) { + newArrayBufferUnused(i & 7); + newArrayBuffer(i & 7); +} + +for (let func of [newArrayBufferUnused, newArrayBuffer]) { + let error = errorFrom(() => func(-1)); + shouldBe(error instanceof RangeError, true, func.name + " error type"); + shouldBe(error.message, "length cannot be negative", func.name + " error message"); +} diff --git a/JSTests/stress/new-array-with-size-hole-fill-lengths.js b/JSTests/stress/new-array-with-size-hole-fill-lengths.js new file mode 100644 index 0000000000000..aa4ced695529d --- /dev/null +++ b/JSTests/stress/new-array-with-size-hole-fill-lengths.js @@ -0,0 +1,37 @@ +function assert(actual, expected) { + if (actual !== expected) + throw new Error("bad value: " + actual + " expected: " + expected); +} + +function makeDouble(n) { + let array = new Array(n); + array[0] = 0.5; + return array; +} +noInline(makeDouble); + +function makeContiguous(n) { + let array = new Array(n); + array[0] = "x"; + return array; +} +noInline(makeContiguous); + +function checkHoles(array, n) { + assert(array.length, n); + for (let i = 1; i < n; ++i) { + assert(i in array, false); + assert(array[i], undefined); + } +} + +for (let i = 0; i < testLoopCount; ++i) { + for (let n = 1; n < 40; ++n) { + let doubles = makeDouble(n); + assert(doubles[0], 0.5); + checkHoles(doubles, n); + let values = makeContiguous(n); + assert(values[0], "x"); + checkHoles(values, n); + } +} diff --git a/JSTests/stress/new-typed-array-with-unused-result-constant-length.js b/JSTests/stress/new-typed-array-with-unused-result-constant-length.js new file mode 100644 index 0000000000000..6d01d54f1a40a --- /dev/null +++ b/JSTests/stress/new-typed-array-with-unused-result-constant-length.js @@ -0,0 +1,37 @@ +function shouldThrowRangeError(func, what) { + let error = null; + try { + func(); + } catch (e) { + error = e; + } + if (!(error instanceof RangeError)) + throw new Error(what + " should throw a RangeError, got " + error); +} + +function newUnusedWithConstantLength() { + new Uint8Array(16); + new Float64Array(0); + new ArrayBuffer(32); + return 1; +} +noInline(newUnusedWithConstantLength); + +function newUint8ArrayWithNegativeConstant() { + new Uint8Array(-1); + return 1; +} +noInline(newUint8ArrayWithNegativeConstant); + +function newArrayBufferWithNegativeConstant() { + new ArrayBuffer(-1); + return 1; +} +noInline(newArrayBufferWithNegativeConstant); + +for (let i = 0; i < testLoopCount; i++) { + if (newUnusedWithConstantLength() !== 1) + throw new Error("bad result"); + shouldThrowRangeError(newUint8ArrayWithNegativeConstant, "new Uint8Array(-1)"); + shouldThrowRangeError(newArrayBufferWithNegativeConstant, "new ArrayBuffer(-1)"); +} diff --git a/JSTests/stress/new-typed-array-with-unused-result-throws-on-negative-length.js b/JSTests/stress/new-typed-array-with-unused-result-throws-on-negative-length.js new file mode 100644 index 0000000000000..320045302d0c4 --- /dev/null +++ b/JSTests/stress/new-typed-array-with-unused-result-throws-on-negative-length.js @@ -0,0 +1,40 @@ +function shouldThrowRangeError(func, what) { + let error = null; + try { + func(); + } catch (e) { + error = e; + } + if (!(error instanceof RangeError)) + throw new Error(what + " should throw a RangeError, got " + error); +} + +// A negative length throws a RangeError, so the allocation must happen even when its result is unused. + +function newUint8Array(n) { + new Uint8Array(n); + return 1; +} +noInline(newUint8Array); + +function newFloat64Array(n) { + new Float64Array(n); + return 1; +} +noInline(newFloat64Array); + +function newArrayBuffer(n) { + new ArrayBuffer(n); + return 1; +} +noInline(newArrayBuffer); + +for (let i = 0; i < testLoopCount; i++) { + newUint8Array(i & 7); + newFloat64Array(i & 7); + newArrayBuffer(i & 7); +} + +shouldThrowRangeError(() => newUint8Array(-1), "new Uint8Array(-1)"); +shouldThrowRangeError(() => newFloat64Array(-1), "new Float64Array(-1)"); +shouldThrowRangeError(() => newArrayBuffer(-1), "new ArrayBuffer(-1)"); diff --git a/JSTests/stress/number-to-locale-string-locales-cache-language-change.js b/JSTests/stress/number-to-locale-string-locales-cache-language-change.js new file mode 100644 index 0000000000000..12e05eee8fd8b --- /dev/null +++ b/JSTests/stress/number-to-locale-string-locales-cache-language-change.js @@ -0,0 +1,33 @@ +//@ runDefault("--useDollarVM=1") + +if (typeof $vm === "undefined" || typeof $vm.setUserPreferredLanguages !== "function") + quit(); + +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`bad value: ${actual}, expected: ${expected}`); +} + +$vm.setUserPreferredLanguages(["en-US"]); + +setTimeout(() => { + for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("xx"), "1,234.5"); + shouldBe(1234n.toLocaleString("xx"), "1,234"); + } + + $vm.setUserPreferredLanguages(["de-DE"]); + + for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("xx"), "1.234,5"); + shouldBe(1234n.toLocaleString("xx"), "1.234"); + } + + setTimeout(() => { + shouldBe(new Intl.NumberFormat("xx").format(1234.5), "1.234,5"); + for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("xx"), "1.234,5"); + shouldBe(1234n.toLocaleString("xx"), "1.234"); + } + }, 0); +}, 0); diff --git a/JSTests/stress/number-to-locale-string-locales-cache.js b/JSTests/stress/number-to-locale-string-locales-cache.js new file mode 100644 index 0000000000000..8bdd74df5f456 --- /dev/null +++ b/JSTests/stress/number-to-locale-string-locales-cache.js @@ -0,0 +1,108 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`bad value: ${actual}, expected: ${expected}`); +} + +function shouldThrow(func, errorType) { + let error; + try { + func(); + } catch (e) { + error = e; + } + if (!(error instanceof errorType)) + throw new Error(`bad error: ${String(error)}`); +} + +shouldBe((1234.5).toLocaleString("de-DE"), "1.234,5"); +fullGC(); +shouldBe((1234.5).toLocaleString("de-DE"), "1.234,5"); +shouldBe(1234n.toLocaleString("de-DE"), "1.234"); + +const numbers = [0, -0, 1, -1, 1234, 1234567.891, 0.000001, -1e-7, 1e21, 2 ** 53, NaN, Infinity, -Infinity]; +const bigints = [0n, 1n, -1n, 1234n, 2n ** 64n, -123456789012345678901234567890n]; +const locales = ["en-US", "de-DE", "ja-JP", "fr", "hi-IN", "ar-EG", "en-US-u-nu-thai", "zh-Hans-CN-u-nu-hanidec", "und"]; + +for (const locale of locales) { + const format = new Intl.NumberFormat(locale); + for (let i = 0; i < 3; ++i) { + for (const number of numbers) + shouldBe(number.toLocaleString(locale), format.format(number)); + for (const bigint of bigints) + shouldBe(bigint.toLocaleString(locale), format.format(bigint)); + } +} + +for (let i = 0; i < 100; ++i) { + const locale = locales[i % locales.length]; + const format = new Intl.NumberFormat(locale); + shouldBe((1234567.891).toLocaleString(locale), format.format(1234567.891)); + shouldBe(1234567n.toLocaleString(locale), format.format(1234567n)); +} + +for (let i = 0; i < 3; ++i) { + shouldThrow(() => (1).toLocaleString("xx-fake-INVALID!"), RangeError); + shouldThrow(() => 1n.toLocaleString("xx-fake-INVALID!"), RangeError); + shouldBe((1234.5).toLocaleString("en-US"), "1,234.5"); + shouldBe(1234n.toLocaleString("en-US"), "1,234"); +} + +for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("de-DE"), "1.234,5"); + shouldBe((1234.5).toLocaleString(["en-US"]), "1,234.5"); + shouldBe((1234.5).toLocaleString("de-DE"), "1.234,5"); + shouldBe((1234.5).toLocaleString("de-DE", { maximumFractionDigits: 0 }), "1.235"); + shouldBe((1234.5).toLocaleString("de-DE"), "1.234,5"); + shouldBe((1234.5).toLocaleString("de-DE", { style: "percent" }), new Intl.NumberFormat("de-DE", { style: "percent" }).format(1234.5)); + shouldThrow(() => (1234.5).toLocaleString("de-DE", null), TypeError); + shouldThrow(() => 1234n.toLocaleString("de-DE", null), TypeError); + shouldBe((1234.5).toLocaleString(undefined), (1234.5).toLocaleString()); + shouldBe((1234.5).toLocaleString("de-DE"), "1.234,5"); + shouldBe(1234n.toLocaleString("de-DE", { minimumFractionDigits: 2 }), "1.234,00"); + shouldBe(1234n.toLocaleString("de-DE"), "1.234"); + shouldBe(1234n.toLocaleString(undefined), 1234n.toLocaleString()); +} + +const prefix = "de"; +for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString(prefix + "-DE"), "1.234,5"); + shouldBe(1234n.toLocaleString(prefix + "-DE"), "1.234"); +} + +shouldBe(new Number(1234.5).toLocaleString("de-DE"), "1.234,5"); +shouldBe(Object(1234n).toLocaleString("de-DE"), "1.234"); +shouldBe([1234.5, 1234n, 0.5].toLocaleString("de-DE"), "1.234,5,1.234,0,5"); +shouldBe(new Float64Array([1234.5, 0.5]).toLocaleString("de-DE"), "1.234,5,0,5"); + +Object.prototype.style = "percent"; +Object.prototype.maximumFractionDigits = 0; +Object.prototype.useGrouping = false; +for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("en-US"), "1,234.5"); + shouldBe(1234n.toLocaleString("en-US"), "1,234"); + shouldBe((1234.5).toLocaleString("en-US", {}), "123450%"); +} +delete Object.prototype.style; +delete Object.prototype.maximumFractionDigits; +delete Object.prototype.useGrouping; +shouldBe((1234.5).toLocaleString("en-US"), "1,234.5"); + +const originalFormat = Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format"); +const originalNumberFormat = Intl.NumberFormat; +Object.defineProperty(Intl.NumberFormat.prototype, "format", { get() { throw new Error("should not be called"); } }); +Intl.NumberFormat = function () { throw new Error("should not be called"); }; +for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("en-US"), "1,234.5"); + shouldBe((1234.5).toLocaleString("ja-JP"), "1,234.5"); + shouldBe(1234n.toLocaleString("de-DE"), "1.234"); +} +Intl.NumberFormat = originalNumberFormat; +Object.defineProperty(Intl.NumberFormat.prototype, "format", originalFormat); + +const other = createGlobalObject(); +for (let i = 0; i < 3; ++i) { + shouldBe((1234.5).toLocaleString("en-US"), "1,234.5"); + shouldBe(other.Number.prototype.toLocaleString.call(1234.5, "de-DE"), "1.234,5"); + shouldBe(other.BigInt.prototype.toLocaleString.call(1234n, "de-DE"), "1.234"); + shouldBe(1234n.toLocaleString("en-US"), "1,234"); +} diff --git a/JSTests/stress/object-define-property-key-before-descriptor.js b/JSTests/stress/object-define-property-key-before-descriptor.js new file mode 100644 index 0000000000000..d7929452d93cd --- /dev/null +++ b/JSTests/stress/object-define-property-key-before-descriptor.js @@ -0,0 +1,201 @@ +function shouldBe(actual, expected) +{ + if (actual !== expected) + throw new Error("expected " + expected + " but got " + actual); +} + +function defineValue(mutate) +{ + var descriptor = { value: 0x1337 }; + var key = { + toString() { + if (mutate) + descriptor.value = 0x4141; + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineValue); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineValue(false), 0x1337); +shouldBe(defineValue(true), 0x4141); + +function defineSeed(seed, mutate) +{ + var descriptor = { value: seed }; + var key = { + toString() { + if (mutate) + descriptor.value = seed + 1; + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineSeed); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineSeed(i, false), i); +shouldBe(defineSeed(50, true), 51); + +function defineWritable(mutate) +{ + var descriptor = { value: 1, writable: true }; + var key = { + toString() { + if (mutate) + descriptor.writable = false; + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return Object.getOwnPropertyDescriptor(object, "slot").writable; +} +noInline(defineWritable); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineWritable(false), true); +shouldBe(defineWritable(true), false); + +function defineGetter(mutate) +{ + function first() { return 1; } + function second() { return 2; } + var descriptor = { get: first }; + var key = { + toString() { + if (mutate) + descriptor.get = second; + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineGetter); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineGetter(false), 1); +shouldBe(defineGetter(true), 2); + +function defineNullPrototype(mutate) +{ + var descriptor = Object.create(null); + descriptor.value = 0x1337; + var key = { + toString() { + if (mutate) + descriptor.value = 0x4141; + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineNullPrototype); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineNullPrototype(false), 0x1337); +shouldBe(defineNullPrototype(true), 0x4141); + +function defineTransition(mutate) +{ + var descriptor = { value: 1 }; + var key = { + toString() { + if (mutate) { + delete descriptor.value; + descriptor.value = 2; + } + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineTransition); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineTransition(false), 1); +shouldBe(defineTransition(true), 2); + +function defineString(key, value) +{ + var object = {}; + Object.defineProperty(object, key, { value: value }); + return object[key]; +} +noInline(defineString); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineString("slot", i), i); + +function defineIndex(index) +{ + var object = {}; + Object.defineProperty(object, index, { value: index + 1 }); + return object[index]; +} +noInline(defineIndex); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineIndex(i), i + 1); + +function defineFlex(useObject) +{ + var descriptor = { value: 1 }; + var key = "slot"; + if (useObject) { + key = { + toString() { + descriptor.value = 2; + return "slot"; + } + }; + } + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineFlex); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineFlex(false), 1); +shouldBe(defineFlex(true), 2); + +function defineThrows(shouldThrow) +{ + var descriptor = { value: 1 }; + var key = { + toString() { + if (shouldThrow) + throw new Error("boom"); + return "slot"; + } + }; + var object = {}; + Object.defineProperty(object, key, descriptor); + return object.slot; +} +noInline(defineThrows); + +for (var i = 0; i < testLoopCount; ++i) + shouldBe(defineThrows(false), 1); +var threw = false; +try { + defineThrows(true); +} catch (e) { + threw = e.message === "boom"; +} +if (!threw) + throw new Error("expected toString to throw"); diff --git a/JSTests/stress/parser-many-parenthesized-expressions-in-one-scope.js b/JSTests/stress/parser-many-parenthesized-expressions-in-one-scope.js new file mode 100644 index 0000000000000..1412c14dc5318 --- /dev/null +++ b/JSTests/stress/parser-many-parenthesized-expressions-in-one-scope.js @@ -0,0 +1,11 @@ +//@ skip if $memoryLimited +//@ slow! +//@ runDefault + +// Used-variable sets internally kept by the parser should not be accumulated indefinitely +// when repeatedly parsing parenthesized expressions within the same scope. +const depth = 100; +const statement = "(".repeat(depth) + "0" + ")".repeat(depth) + ";"; +const result = eval(statement.repeat(24_000_000 / depth)); +if (result !== 0) + throw new Error("Bad result: " + result); diff --git a/JSTests/stress/regexp-constructor-call-is-not-construct.js b/JSTests/stress/regexp-constructor-call-is-not-construct.js new file mode 100644 index 0000000000000..909a50dc193cf --- /dev/null +++ b/JSTests/stress/regexp-constructor-call-is-not-construct.js @@ -0,0 +1,20 @@ +function shouldBe(actual, expected, what) { + if (actual !== expected) + throw new Error(what + ": bad value " + actual + ", expected " + expected); +} + +function callWithCalleeAsThis(R, pattern, flags) { return R.call(R, pattern, flags); } +noInline(callWithCalleeAsThis); + +function construct(R, pattern, flags) { return new R(pattern, flags); } +noInline(construct); + +var re = /a/g; +for (var i = 0; i < testLoopCount; ++i) { + shouldBe(callWithCalleeAsThis(RegExp, re, undefined), re, "RegExp(re, undefined)"); + + var copy = construct(RegExp, re, undefined); + shouldBe(copy !== re, true, "new RegExp(re, undefined) returns a new object"); + shouldBe(copy.source, "a", "new RegExp(re, undefined).source"); + shouldBe(copy.flags, "g", "new RegExp(re, undefined).flags"); +} diff --git a/JSTests/stress/regexp-large-character-class-bit-table.js b/JSTests/stress/regexp-large-character-class-bit-table.js new file mode 100644 index 0000000000000..2641eff92e659 --- /dev/null +++ b/JSTests/stress/regexp-large-character-class-bit-table.js @@ -0,0 +1,174 @@ +//@ runDefault + +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(`${message()}: expected ${expected} but got ${actual}`); +} + +function hex(codePoint) { + return codePoint.toString(16); +} + +function makeRanges(begin, end, step, widthOf) { + const ranges = []; + for (let codePoint = begin; codePoint + widthOf(codePoint) < end; codePoint += step) + ranges.push([codePoint, codePoint + widthOf(codePoint)]); + return ranges; +} + +function classSource(ranges, unicode) { + const escape = unicode ? (codePoint) => `\\u{${hex(codePoint)}}` : (codePoint) => `\\u${hex(codePoint).padStart(4, "0")}`; + return ranges.map(([begin, end]) => begin === end ? escape(begin) : `${escape(begin)}-${escape(end)}`).join(""); +} + +// The code points around the ends of each range and around the multiples of 64 next to them, plus evenly spaced samples. +function codePointsToCheck(ranges) { + const result = new Set([0, 0xd7ff, 0xd800, 0xdbff, 0xdc00, 0xdfff, 0xe000, 0xffff, 0x10000, 0x1ffff, 0x20000, 0x10ffff]); + const add = (codePoint) => { + if (codePoint >= 0 && codePoint < 0x110000) + result.add(codePoint); + }; + for (const [begin, end] of ranges) { + for (const codePoint of [begin, end]) { + for (let delta = -1; delta <= 1; ++delta) { + add(codePoint + delta); + add((codePoint & ~63) + delta); + add((codePoint | 63) + delta); + } + } + } + for (let codePoint = 0; codePoint < 0x110000; codePoint += 0x3f7) + add(codePoint); + return Array.from(result).sort((a, b) => a - b); +} + +class TestClass { + constructor(ranges) { + if (ranges.length < 128) + throw new Error("The class is too small to be tested with a bit table"); + this.ranges = ranges; + this.members = new Uint8Array(0x110000); + for (const [begin, end] of ranges) + this.members.fill(1, begin, end + 1); + this.codePoints = codePointsToCheck(ranges); + } + + source(unicode) { + return classSource(this.ranges, unicode); + } + + check(regExp, expectMember, stride = 1) { + const limit = regExp.unicode || regExp.unicodeSets ? 0x110000 : 0x10000; + for (let i = 0; i < this.codePoints.length; i += stride) { + const codePoint = this.codePoints[i]; + if (codePoint >= limit) + break; + shouldBe(regExp.test(String.fromCodePoint(codePoint)), !!this.members[codePoint] === expectMember, () => `${regExp.flags} U+${hex(codePoint)}`); + } + } +} + +// Ranges in the BMP, the SMP and above, including ones crossing 64 code point boundaries, a run of +// full words, a range crossing U+20000 and a range ending at U+10FFFF. +const mixed = new TestClass([ + ...makeRanges(0x80, 0x3000, 0x29, (codePoint) => codePoint % 7), + [0x3000, 0x30ff], + [0x3140, 0x317f], + ...makeRanges(0x4000, 0xd000, 0x1c7, (codePoint) => codePoint % 131), + [0xd7f0, 0xd805], + [0xdbff, 0xdc00], + [0xdfff, 0xe010], + [0xfffe, 0x10001], + ...makeRanges(0x10100, 0x1f000, 0x3fb, (codePoint) => codePoint % 97), + [0x1ffc0, 0x20040], + ...makeRanges(0x21000, 0x30000, 0x2003, (codePoint) => codePoint % 1000), + [0xe0100, 0xe01ef], + [0x10fff0, 0x10ffff], +]); +mixed.check(new RegExp(`^[${mixed.source(true)}]$`, "u"), true); +mixed.check(new RegExp(`^[^${mixed.source(true)}]$`, "u"), false); +mixed.check(new RegExp(`^[${mixed.source(true)}]+$`, "v"), true, 8); +mixed.check(new RegExp(`(?<=^[${mixed.source(true)}])$`, "u"), true, 8); +mixed.check(new RegExp(`^[${mixed.source(true)}]*?$`, "u"), true, 8); + +{ + const string = String.fromCodePoint(...mixed.codePoints.filter((codePoint) => codePoint < 0xd800 || codePoint > 0xdfff)); + const expected = Array.from(string).filter((character) => mixed.members[character.codePointAt(0)]).join(""); + shouldBe(string.match(new RegExp(`[${mixed.source(true)}]+`, "gu")).join(""), expected, () => "greedy runs"); +} + +// Without the u flag the character is a code unit, so surrogates are matched on their own. +const bmp = new TestClass(mixed.ranges.filter(([begin, end]) => end <= 0xffff)); +bmp.check(new RegExp(`^[${bmp.source(false)}]$`), true); +bmp.check(new RegExp(`^[^${bmp.source(false)}]$`), false); +{ + const regExp = new RegExp(`^[${bmp.source(false)}]{2}$`); + for (let codePoint = 0x10000; codePoint < 0x110000; codePoint += 0x3fd) { + const string = String.fromCodePoint(codePoint); + shouldBe(regExp.test(string), !!(bmp.members[string.charCodeAt(0)] && bmp.members[string.charCodeAt(1)]), () => `{2} U+${hex(codePoint)}`); + } +} + +// A class whose table covers every code unit. +const wholeBMP = new TestClass([...bmp.ranges, [0xffc1, 0xffc3], [0xfff0, 0xffff]]); +wholeBMP.check(new RegExp(`^[${wholeBMP.source(false)}]$`), true); +wholeBMP.check(new RegExp(`^[^${wholeBMP.source(false)}]$`), false); + +// Latin-1 characters in a 16-bit string. +for (const [testClass, flags] of [[bmp, ""], [mixed, "u"]]) { + const regExp = new RegExp(`^\\u3042[${testClass.source(flags === "u")}]$`, flags); + for (let codePoint = 0; codePoint < 0x100; ++codePoint) + shouldBe(regExp.test("\u3042" + String.fromCharCode(codePoint)), !!testClass.members[codePoint], () => `16-bit /${flags} U+${hex(codePoint)}`); +} + +// A class whose code points all fit in a few words. +const dense = new TestClass(makeRanges(0x100, 0x300, 3, () => 1)); +dense.check(new RegExp(`^[${dense.source(true)}]$`, "u"), true); +dense.check(new RegExp(`^[${dense.source(false)}]$`), true); + +// Only single code points above U+20000. +const singlesAbove = new TestClass([...dense.ranges, [0x20000, 0x20000], [0x2abcd, 0x2abcd], [0x10ffff, 0x10ffff]]); +singlesAbove.check(new RegExp(`^[${singlesAbove.source(true)}]$`, "u"), true); +singlesAbove.check(new RegExp(`^[^${singlesAbove.source(true)}]$`, "u"), false); + +// A class with nothing below U+20000. +const high = new TestClass(makeRanges(0x20000, 0x30000, 0x101, (codePoint) => codePoint % 50)); +high.check(new RegExp(`^[${high.source(true)}]$`, "u"), true); + +// Two classes under the same lead surrogate in one RegExp. +{ + const first = new TestClass(makeRanges(0x10000, 0x10400, 4, () => 1)); + const second = new TestClass(makeRanges(0x10002, 0x10400, 4, () => 1)); + const regExp = new RegExp(`^[${first.source(true)}][${second.source(true)}]$`, "u"); + for (let codePoint = 0x10000; codePoint < 0x10400; codePoint += 3) { + for (const other of [0x10028, 0x1002a]) { + const string = String.fromCodePoint(codePoint, other); + shouldBe(regExp.test(string), !!(first.members[codePoint] && second.members[other]), () => `U+${hex(codePoint)} U+${hex(other)}`); + } + } +} + +// Unicode properties. +function checkProperty(source, flags, members, nonMembers) { + const regExp = new RegExp(`^${source}$`, flags); + for (const codePoint of members) + shouldBe(regExp.test(String.fromCodePoint(codePoint)), true, () => `${source}/${flags} U+${hex(codePoint)}`); + for (const codePoint of nonMembers) + shouldBe(regExp.test(String.fromCodePoint(codePoint)), false, () => `${source}/${flags} U+${hex(codePoint)}`); +} + +const letters = [0x41, 0x7a, 0xaa, 0x3b1, 0x3042, 0x4e00, 0x9fff, 0xac00, 0xffdc, 0x10000, 0x1d7cb, 0x1eebb, 0x20000, 0x2a6df, 0x2f800, 0x30000, 0x3134a]; +const nonLetters = [0x0, 0x20, 0x30, 0x40, 0x5b, 0xd7, 0x300, 0x3000, 0xd800, 0xdfff, 0xffff, 0x1000c, 0x1eebc, 0x1ffff, 0x2a6e0, 0x2fa1e, 0x3134b, 0xe0100, 0x10ffff]; +checkProperty("\\p{L}", "u", letters, nonLetters); +checkProperty("\\p{L}+", "u", letters, nonLetters); +checkProperty("\\P{L}", "u", nonLetters, letters); +checkProperty("[^\\p{L}]", "u", nonLetters, letters); +checkProperty("\\p{L}", "v", letters, nonLetters); +checkProperty("[\\p{L}\\p{Nd}_]", "u", [...letters, 0x30, 0x5f, 0x660, 0x1d7ff], nonLetters.filter((codePoint) => codePoint !== 0x30)); +checkProperty("[\\p{L}--\\p{Script=Han}]", "v", letters.filter((codePoint) => codePoint < 0x4e00 || (codePoint > 0x9fff && codePoint < 0x20000)), [...nonLetters, 0x4e00, 0x20000, 0x3134a]); +checkProperty("\\p{L}", "iu", letters, nonLetters); +checkProperty(".(?<=\\p{L})", "su", letters, nonLetters); +checkProperty("\\p{ID_Continue}", "u", [...letters, 0x30, 0x5f, 0x300, 0xe0100, 0xe01ef], [0x20, 0x40, 0xd800, 0xe00ff, 0xe01f0, 0x10ffff]); +checkProperty("\\p{Cn}", "u", [0x378, 0xffff, 0x1ffff, 0x2a6e0, 0x3347a, 0xe0000, 0xeffff], [0x41, 0xd800, 0xe000, 0x20000, 0xf0000, 0x10fffd]); + +shouldBe("x1 日本語 𠮷野家 Ünïcödé".match(/\p{L}+/gu).join("|"), "x|日本語|𠮷野家|Ünïcödé", () => "match /gu"); diff --git a/JSTests/stress/regexp-stringlist-eol-length-groups.js b/JSTests/stress/regexp-stringlist-eol-length-groups.js new file mode 100644 index 0000000000000..ff8c101f67b3a --- /dev/null +++ b/JSTests/stress/regexp-stringlist-eol-length-groups.js @@ -0,0 +1,68 @@ +function shouldBe(actual, expected, message) { + if (actual !== expected) + throw new Error(message + ": expected " + JSON.stringify(expected) + " but got " + JSON.stringify(actual)); +} + +const lists = [ + ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "while", "with", "null", "true", "false", "instanceof", "typeof", "void", "delete", "new", "in", "this"], + ["a", "ab", "abc"], + ["aaaa", "aaa", "aa", "a"], + ["xy", "xz", "yy", "zz"], + ["ab", "cd", "ef", "abc", "cde", "a", "c"], + ["a", ""], + ["", "abc", "de"], + ["x"], + ["abcdefghijklmnop", "abcdefghijklmnoq", "abcdefgh", "abcdefgi"], + ["あい", "う", "えおか"], +]; +const unicodeLists = [ + ["\u{1F600}\u{1F600}", "abc", "\u{1F600}", "ab"], + ["\u{1F600}a", "\u{1F600}", "abcd", "xyz"], +]; + +function candidates(words) { + const result = ["", "z", "zzzzzzzzzzzzzzzzz"]; + for (const word of words) { + result.push(word, word + "x", "x" + word, word.slice(0, -1), word.slice(1), word.slice(0, -1) + "z", word + "\n", word.toUpperCase()); + result.push((word + "Ā").slice(0, -1)); + } + return result; +} + +const cases = [ + ...lists.map((words) => ({ words, regExp: new RegExp("^(?:" + words.join("|") + ")$"), inputs: candidates(words) })), + ...unicodeLists.map((words) => ({ words, regExp: new RegExp("^(?:" + words.join("|") + ")$", "u"), inputs: candidates(words) })), +]; +const flattened = []; +for (const { words, regExp, inputs } of cases) { + for (const input of inputs) + flattened.push({ regExp, input, expected: words.includes(input) }); +} + +function test(regExp, input) { + return regExp.test(input); +} +noInline(test); + +for (let i = 0; i < testLoopCount; i += 100) { + for (const { regExp, input, expected } of flattened) { + if (test(regExp, input) !== expected) + throw new Error(regExp + ".test(" + JSON.stringify(input) + ") should be " + expected); + } +} + +for (const { words, regExp, inputs } of cases) { + const sticky = new RegExp(regExp.source, regExp.flags + "y"); + const multiline = new RegExp(regExp.source, regExp.flags + "m"); + for (const input of inputs) { + const match = regExp.exec(input); + shouldBe(match ? match[0] : null, words.includes(input) ? input : null, regExp + ".exec(" + JSON.stringify(input) + ")"); + sticky.lastIndex = 0; + shouldBe(sticky.test(input), words.includes(input), sticky + ".test(" + JSON.stringify(input) + ")"); + sticky.lastIndex = 1; + // Bun: with /u a lastIndex inside a surrogate pair is the pair's code point (RegExpBuiltinExec's inputIndex), as in V8. Upstream expects false for every input. + const lastIndexIsInsidePair = regExp.unicode && input.codePointAt(0) > 0xFFFF; + shouldBe(sticky.test(input), lastIndexIsInsidePair ? words.includes(input) : false, sticky + ".test(" + JSON.stringify(input) + ") at lastIndex 1"); + shouldBe(multiline.test(input), input.split("\n").some((line) => words.includes(line)), multiline + ".test(" + JSON.stringify(input) + ")"); + } +} diff --git a/JSTests/stress/string-iterator-16bit-single-character.js b/JSTests/stress/string-iterator-16bit-single-character.js new file mode 100644 index 0000000000000..f431c261b826e --- /dev/null +++ b/JSTests/stress/string-iterator-16bit-single-character.js @@ -0,0 +1,75 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error('bad value: ' + actual + ' expected ' + expected); +} + +function collect(string) { + var result = []; + for (var character of string) + result.push(character); + return result; +} +noInline(collect); + +function collectWithNext(string) { + var result = []; + var iterator = string[Symbol.iterator](); + for (;;) { + var entry = iterator.next(); + if (entry.done) { + result.push(entry.value); + break; + } + result.push(entry.value); + } + return result; +} +noInline(collectWithNext); + +function countE(string) { + var count = 0; + for (var character of string) { + if (character === 'e') + count++; + } + return count; +} +noInline(countE); + +function makeRope(a, b) { + return a + b; +} +noInline(makeRope); + +var cases = [ + ["see\u2014here", ["s", "e", "e", "\u2014", "h", "e", "r", "e"]], + ["\u2014abc", ["\u2014", "a", "b", "c"]], + ["abc\u2014", ["a", "b", "c", "\u2014"]], + ["\u2014\x00\x7F\x80\xFE\xFF\u0100\u0101", ["\u2014", "\x00", "\x7F", "\x80", "\xFE", "\xFF", "\u0100", "\u0101"]], + ["a\u{1F600}b", ["a", "\u{1F600}", "b"]], + ["a\uD83Db", ["a", "\uD83D", "b"]], + ["a\uDE00b", ["a", "\uDE00", "b"]], + ["ab\uD83D", ["a", "b", "\uD83D"]], + ["\uD83D\u{1F600}\uDE00e", ["\uD83D", "\u{1F600}", "\uDE00", "e"]], + ["\u65E5e\u672Ce", ["\u65E5", "e", "\u672C", "e"]], +]; + +for (var i = 0; i < testLoopCount; ++i) { + for (var [string, expected] of cases) { + var actual = collect(string); + shouldBe(actual.length, expected.length); + for (var j = 0; j < expected.length; ++j) + shouldBe(actual[j], expected[j]); + + var actualWithNext = collectWithNext(string); + shouldBe(actualWithNext.length, expected.length + 1); + for (var j = 0; j < expected.length; ++j) + shouldBe(actualWithNext[j], expected[j]); + shouldBe(actualWithNext[expected.length], undefined); + } + + shouldBe(countE("see\u2014here"), 4); + shouldBe(countE("see here"), 4); + shouldBe(countE("\u65E5e\u{1F600}e\uD83D"), 2); + shouldBe(countE(makeRope("see\u2014", "here here")), 6); +} diff --git a/JSTests/stress/string-locale-compare-locales-cache-language-change.js b/JSTests/stress/string-locale-compare-locales-cache-language-change.js index 18bbcd17275af..c8e3625af22e6 100644 --- a/JSTests/stress/string-locale-compare-locales-cache-language-change.js +++ b/JSTests/stress/string-locale-compare-locales-cache-language-change.js @@ -19,6 +19,9 @@ setTimeout(() => { $vm.setUserPreferredLanguages(["sv-SE"]); + for (let i = 0; i < 3; ++i) + shouldBe("ö".localeCompare("z", "xx") > 0, true, "sv-SE ordering in the same VM entry"); + setTimeout(() => { shouldBe(new Intl.Collator("xx").compare("ö", "z") > 0, true, "sv-SE ordering via fresh collator"); for (let i = 0; i < 3; ++i) diff --git a/JSTests/stress/string-replace-regexp-substring-rope.js b/JSTests/stress/string-replace-regexp-substring-rope.js new file mode 100644 index 0000000000000..96418c4bd0f60 --- /dev/null +++ b/JSTests/stress/string-replace-regexp-substring-rope.js @@ -0,0 +1,156 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`bad value: ${JSON.stringify(actual)}, expected ${JSON.stringify(expected)}`); +} + +function flatten(string) { + return string.split("").join(""); +} +noInline(flatten); + +function replace(string, pattern, replacement) { + return string.replace(pattern, replacement); +} +noInline(replace); + +function check(base, start, end, pattern, replacement) { + let flat = flatten(base.slice(start, end)); + let expected = replace(flat, pattern, replacement); + let substring = base.slice(start, end); + shouldBe(replace(substring, pattern, replacement), expected); + shouldBe(replace(substring, pattern, replacement), expected); + shouldBe(substring, flat); + shouldBe(replace(base.slice(0, end + 1).slice(start, end), pattern, replacement), expected); +} +noInline(check); + +let latin1 = " the brown & 'lazy' \"fox\" jumps 12px over\r\n34px dogs, then rests "; +let wide = " the \u65e5\u672c\u8a9e & 'lazy' \"fox\" \ud83d\ude80 jumps 12px over\r\n34px \u4e16\u754c, then rests "; +let plain = "the quick brown fox jumps over the lazy dog and then rests for a while under a tree"; +let plainWide = "the quick \u65e5\u672c\u8a9e fox jumps over the \ud83d\ude80 dog and then rests for a while under a tree"; + +let escape = (character) => `&#${character.charCodeAt(0)};`; +let cases = [ + [/[&<>"']/g, escape], + [/[&<>"']/, escape], + [/(\d+)(px)/g, (match, digits, unit, offset, whole) => `${digits}:${unit}:${offset}:${whole.length}`], + [/(?\d+)px/g, (match, digits, offset, whole, groups) => `${groups.digits}em`], + [/\r\n/g, " "], + [/[\r\n]+/g, " "], + [/ /g, "_"], + [/(\d+)px/g, "$1em"], + [/(\d+)px/g, "[$&|$`|$']"], + [/(?\d+)px/g, "$em"], + [/(\d+)px/, "$1em"], + [/quick/, "slow"], + [/quick/, ""], + [/quick/g, ""], + [/quick/g, "slow"], + [/quick/g, 42], + [/quick/g, "[$&]"], + [/^\s+/g, ""], + [/\s+$/g, ""], + [/rests\s*$/, ""], + [/[aeiou]/g, ""], + [/\s+/g, ""], + [/^\s+/, ""], + [/\s+$/, ""], + [/^\s*/, ""], + [/\s*$/, ""], + [/^ +the/, ""], + [/x*/g, "-"], + [/x*/gu, "-"], + [/x*/gv, "-"], + [/x*/gu, "[$&]"], + [/x*/gu, ""], + [/x*/gu, Math.abs], + [/(?:)/gu, (match, offset) => offset % 7 ? "" : "|"], + [/\p{Script=Han}+/gu, "(han)"], + [/zzz/g, "never"], + [/zzz/, "never"], + [/zzz/g, ""], + [/zzz/, ""], + [/zzz/g, escape], + [/zzz/, escape], + [/z(z)z/g, "$1"], +]; + +for (let [pattern, replacement] of cases) { + for (let base of [latin1, wide, plain, plainWide]) { + check(base, 0, 40, pattern, replacement); + check(base, 2, base.length - 3, pattern, replacement); + check(base, 17, 60, pattern, replacement); + check(base, 17, base.length - 1, pattern, replacement); + check(base, 5, 7, pattern, replacement); + } + for (let base of [wide, plainWide]) + check(base, 3, base.indexOf("\ud83d\ude80") + 1, pattern, replacement); +} + +function removeGlobal(string) { + return string.replace(/[\r\n]+/g, ""); +} +noInline(removeGlobal); + +function removeFirst(string) { + return string.replace(/^\s+/, ""); +} +noInline(removeFirst); + +function removeAll(string) { + return string.replaceAll(/o/g, ""); +} +noInline(removeAll); + +function replaceWithString(string) { + return string.replace(/ +/g, "_"); +} +noInline(replaceWithString); + +function replaceWithFunction(string) { + return string.replace(/[&<>"']/g, escape); +} +noInline(replaceWithFunction); + +let hot = [removeGlobal, removeFirst, removeAll, replaceWithString, replaceWithFunction]; +let inputs = []; +for (let base of [latin1, wide, plain, plainWide]) { + for (let [start, end] of [[0, 40], [17, 60]]) + inputs.push({ base, start, end, expected: hot.map((operation) => operation(flatten(base.slice(start, end)))) }); +} + +for (let i = 0; i < testLoopCount; ++i) { + let { base, start, end, expected } = inputs[i % inputs.length]; + for (let j = 0; j < hot.length; ++j) + shouldBe(hot[j](base.slice(start, end)), expected[j]); +} + +function replaceAndAtomize(base, twin) { + let keys = {}; + keys[twin] = 1; + let substring = base.slice(3, base.length - 3); + let calls = 0; + let result = substring.replace(/[&<>"']/g, (character, offset, whole) => { + if (!calls++) { + keys[base] = 2; + keys[whole] = 3; + keys[flatten(base + offset)] = 4; + gc(); + } + return escape(character); + }); + shouldBe(result, flatten(base).slice(3, base.length - 3).replace(/[&<>"']/g, escape)); + shouldBe(substring, flatten(base).slice(3, base.length - 3)); + shouldBe(Object.keys(keys).length, 3); +} +noInline(replaceAndAtomize); + +for (let i = 0; i < 2; ++i) { + replaceAndAtomize(flatten(latin1 + i), flatten(latin1 + i)); + replaceAndAtomize(flatten(wide + i), flatten(wide + i)); +} + +let long = (latin1 + wide).repeat(60); +let longExpected = flatten(long.slice(1, long.length - 1)).replace(/[&<>"']/g, escape); +for (let i = 0; i < 4; ++i) + shouldBe(long.slice(1, long.length - 1).replace(/[&<>"']/g, escape), longExpected); diff --git a/JSTests/stress/unary-plus-operand-evaluation-order.js b/JSTests/stress/unary-plus-operand-evaluation-order.js new file mode 100644 index 0000000000000..e4ae85c663553 --- /dev/null +++ b/JSTests/stress/unary-plus-operand-evaluation-order.js @@ -0,0 +1,205 @@ +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`bad value: ${String(actual)}, expected: ${String(expected)}`); +} + +function shouldThrow(func, errorType) { + let error; + try { + func(); + } catch (e) { + error = e; + } + if (!(error instanceof errorType)) + throw new Error(`bad error: ${String(error)}, expected: ${errorType.name}`); + return error; +} + +const operators = ["*", "/", "%", "-", "**", "+"]; + +for (const operator of operators) { + const expected = eval(`6 ${operator} 3`); + + // The unary plus on the left operand converts it before the right operand is evaluated. + { + const log = []; + const left = { valueOf() { log.push("left.valueOf"); return 6; } }; + const right = { valueOf() { log.push("right.valueOf"); return 3; } }; + const func = new Function("log", "left", "right", `return (+(log.push("left"), left)) ${operator} (log.push("right"), right);`); + shouldBe(func(log, left, right), expected); + shouldBe(log.join(), "left,left.valueOf,right,right.valueOf"); + } + + // The unary plus on the right operand converts it before the operator converts the left operand. + { + const log = []; + const left = { valueOf() { log.push("left.valueOf"); return 6; } }; + const right = { valueOf() { log.push("right.valueOf"); return 3; } }; + const func = new Function("log", "left", "right", `return (log.push("left"), left) ${operator} +(log.push("right"), right);`); + shouldBe(func(log, left, right), expected); + shouldBe(log.join(), "left,right,right.valueOf,left.valueOf"); + } + + { + const log = []; + const left = { valueOf() { log.push("left.valueOf"); return 6; } }; + const right = { valueOf() { log.push("right.valueOf"); return 3; } }; + const func = new Function("log", "left", "right", `return (+(log.push("left"), left)) ${operator} +(log.push("right"), right);`); + shouldBe(func(log, left, right), expected); + shouldBe(log.join(), "left,left.valueOf,right,right.valueOf"); + } + + // The conversion of the left operand is observable by the right operand. + { + let right = 0; + const left = { valueOf() { right = 3; return 6; } }; + shouldBe(eval(`(+left) ${operator} right`), expected); + } + + // The right operand is not evaluated when the unary plus on the left operand throws. + { + let called = false; + const left = { valueOf() { throw new RangeError("left"); } }; + const right = () => { called = true; throw new Error("right"); }; + const func = new Function("left", "right", `return (+left) ${operator} right();`); + shouldBe(shouldThrow(() => func(left, right), RangeError).message, "left"); + shouldBe(called, false); + } + + // Unary plus throws for BigInt while the operator itself accepts it. + shouldBe(new Function("a", "b", `return a ${operator} b;`)(6n, 3n), BigInt(expected)); + shouldThrow(() => new Function("a", "b", `return (+a) ${operator} b;`)(6n, 3n), TypeError); + shouldThrow(() => new Function("a", "b", `return a ${operator} +b;`)(6n, 3n), TypeError); + shouldThrow(() => new Function("a", "b", `return (+a) ${operator} +b;`)(6n, 3n), TypeError); + shouldThrow(() => new Function("a", `return (+a) ${operator} 3;`)({ valueOf() { return 6n; } }), TypeError); + shouldThrow(new Function(`return (+6n) ${operator} 3n;`), TypeError); + shouldThrow(new Function(`return 6n ${operator} +3n;`), TypeError); + { + let called = false; + shouldThrow(() => new Function("a", "b", `return (+a) ${operator} b();`)(6n, () => { called = true; return 3n; }), TypeError); + shouldBe(called, false); + } + + // Unary plus on a number is not observable. + shouldBe(new Function(`return (+6) ${operator} 3;`)(), expected); + shouldBe(new Function(`return 6 ${operator} +3;`)(), expected); + shouldBe(new Function(`return (+6) ${operator} +3;`)(), expected); + shouldBe(new Function(`return (+6.0) ${operator} +3.0;`)(), expected); + shouldBe(new Function(`return (+ +6) ${operator} + +3;`)(), expected); + shouldBe(new Function("a", "b", `return (+a) ${operator} +b;`)(6, 3), expected); + shouldBe(new Function("a", "b", `return (+a) ${operator} +b;`)("6", "3"), expected); + shouldBe(new Function("a", "b", `return (+(a >>> 0)) ${operator} +(b >>> 0);`)(6, 3), expected); + shouldBe(new Function("a", "b", `return (+(+a)) ${operator} +(+b);`)("6", "3"), expected); +} + +// Unary plus on an operand which is already a number does not convert it again. +{ + let count = 0; + const value = { valueOf() { ++count; return 7; } }; + shouldBe(new Function("x", "return +x * 1;")(value), 7); + shouldBe(new Function("x", "return 1 * +x;")(value), 7); + shouldBe(new Function("x", "return x * 1;")(value), 7); + shouldBe(new Function("x", "return 1 * x;")(value), 7); + shouldBe(new Function("x", "return +(+x);")(value), 7); + shouldBe(new Function("x", "return + + +x;")(value), 7); + shouldBe(new Function("x", "return +(+x * 1);")(value), 7); + shouldBe(new Function("x", "return +(-(+x));")(value), -7); + shouldBe(count, 8); + + shouldThrow(() => new Function("x", "return +x * 1;")(7n), TypeError); + shouldThrow(() => new Function("x", "return 1 * +x;")(7n), TypeError); + shouldThrow(() => new Function("x", "return x * 1;")(7n), TypeError); + shouldThrow(() => new Function("x", "return 1 * x;")(7n), TypeError); + shouldThrow(() => new Function("x", "return +(+x);")(7n), TypeError); + shouldThrow(() => new Function("x", "return +(-x);")(7n), TypeError); + shouldThrow(() => new Function("x", "return +(x - 1n);")(7n), TypeError); + shouldThrow(() => new Function("x", "return +(x >> 1n);")(7n), TypeError); + shouldThrow(() => new Function("x", "return +(x || 1);")(7n), TypeError); + shouldThrow(() => new Function("x", "return +(x ?? 1);")(7n), TypeError); +} + +shouldBe(Object.is(+(-0), -0), true); +shouldBe(Object.is(+(-0) * 1, -0), true); +shouldBe(Object.is(1 * +(-0), -0), true); +shouldBe(Object.is(+NaN, NaN), true); +shouldBe(+(-1 >>> 0), 4294967295); +shouldBe(+(-1 >>> 0) < (1 >>> 0), false); +shouldBe(+(1 >>> 0) < +(-1 >>> 0), true); +shouldBe(new Function("a", "b", "return +(a >>> 0) < (b >>> 0);")(-1, 1), false); +shouldBe(new Function("a", "b", "return (a >>> 0) < +(b >>> 0);")(1, -1), true); + +function plusInSwitch(value) { + switch (value) { + case +1: + return "one"; + case +2.5: + return "two and a half"; + case -3: + return "minus three"; + case + +4: + return "four"; + } + return "none"; +} +shouldBe(plusInSwitch(1), "one"); +shouldBe(plusInSwitch(2.5), "two and a half"); +shouldBe(plusInSwitch(-3), "minus three"); +shouldBe(plusInSwitch(4), "four"); +shouldBe(plusInSwitch("1"), "none"); +shouldBe(plusInSwitch(1n), "none"); + +shouldThrow(() => eval("+1 = 2"), SyntaxError); +shouldThrow(() => eval("+1++"), SyntaxError); +shouldThrow(() => eval("+1 ** 2"), SyntaxError); +shouldThrow(() => eval("+(+a) ** 2"), SyntaxError); +shouldBe((+2) ** 3, 8); + +function multiply(left, right) { return +left * right(); } +noInline(multiply); +function divide(left, right) { return +left / right(); } +noInline(divide); +function remainder(left, right) { return +left % right(); } +noInline(remainder); +function subtract(left, right) { return +left - right(); } +noInline(subtract); +function power(left, right) { return (+left) ** right(); } +noInline(power); +function multiplyRight(left, right) { return left * +right; } +noInline(multiplyRight); +function subtractBoth(left, right) { return +left - +right; } +noInline(subtractBoth); + +{ + const log = []; + const left = { valueOf() { log.push("left.valueOf"); return 6; } }; + const right = { valueOf() { log.push("right.valueOf"); return 3; } }; + const callRight = () => { log.push("right"); return 3; }; + + for (let i = 0; i < testLoopCount; ++i) { + log.length = 0; + shouldBe(multiply(left, callRight), 18); + shouldBe(divide(left, callRight), 2); + shouldBe(remainder(left, callRight), 0); + shouldBe(subtract(left, callRight), 3); + shouldBe(power(left, callRight), 216); + shouldBe(log.join(), "left.valueOf,right,left.valueOf,right,left.valueOf,right,left.valueOf,right,left.valueOf,right"); + + log.length = 0; + shouldBe(multiplyRight(left, right), 18); + shouldBe(log.join(), "right.valueOf,left.valueOf"); + + log.length = 0; + shouldBe(subtractBoth(left, right), 3); + shouldBe(log.join(), "left.valueOf,right.valueOf"); + } +} + +for (let i = 0; i < testLoopCount; ++i) { + shouldBe(multiply(6, () => 3), 18); + shouldBe(multiplyRight(6, 3), 18); + shouldBe(subtractBoth(6.5, "3"), 3.5); +} + +shouldThrow(() => multiply(6n, () => 3n), TypeError); +shouldThrow(() => multiplyRight(6n, 3n), TypeError); +shouldThrow(() => subtractBoth(6n, 3n), TypeError); diff --git a/JSTests/stress/use-strict-directive-reserved-word-as-parameter-or-function-name.js b/JSTests/stress/use-strict-directive-reserved-word-as-parameter-or-function-name.js new file mode 100644 index 0000000000000..626d7bfe74f15 --- /dev/null +++ b/JSTests/stress/use-strict-directive-reserved-word-as-parameter-or-function-name.js @@ -0,0 +1,79 @@ +function shouldThrowSyntaxError(source) { + let error; + try { + new Function(source); + } catch (e) { + error = e; + } + if (!(error instanceof SyntaxError)) + throw new Error(`"${source}" should throw a SyntaxError`); +} + +function shouldNotThrow(source) { + new Function(source); +} + +const words = ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"]; + +for (const word of words) { + const escaped = `\\u{${word.codePointAt(0).toString(16)}}${word.slice(1)}`; + + for (const name of [word, escaped]) { + shouldThrowSyntaxError(`function f(${name}) { "use strict"; }`); + shouldThrowSyntaxError(`function f(${name}) { 'use strict'; }`); + shouldThrowSyntaxError(`function f(${name}) { "a"; "use strict"; }`); + shouldThrowSyntaxError(`function f(a, ${name}) { "use strict"; }`); + shouldThrowSyntaxError(`function f(${name}, a) { "use strict"; }`); + shouldThrowSyntaxError(`(function (${name}) { "use strict"; })`); + shouldThrowSyntaxError(`function* f(${name}) { "use strict"; }`); + shouldThrowSyntaxError(`async function f(${name}) { "use strict"; }`); + shouldThrowSyntaxError(`async function* f(${name}) { "use strict"; }`); + shouldThrowSyntaxError(`(${name}) => { "use strict"; }`); + shouldThrowSyntaxError(`${name} => { "use strict"; }`); + shouldThrowSyntaxError(`(a, ${name}) => { "use strict"; }`); + shouldThrowSyntaxError(`async (${name}) => { "use strict"; }`); + shouldThrowSyntaxError(`async ${name} => { "use strict"; }`); + shouldThrowSyntaxError(`({ m(${name}) { "use strict"; } })`); + shouldThrowSyntaxError(`({ *m(${name}) { "use strict"; } })`); + shouldThrowSyntaxError(`({ async m(${name}) { "use strict"; } })`); + shouldThrowSyntaxError(`({ set x(${name}) { "use strict"; } })`); + + shouldThrowSyntaxError(`function ${name}() { "use strict"; }`); + shouldThrowSyntaxError(`function ${name}() { "a"; "use strict"; }`); + shouldThrowSyntaxError(`(function ${name}() { "use strict"; })`); + shouldThrowSyntaxError(`function* ${name}() { "use strict"; }`); + shouldThrowSyntaxError(`(function* ${name}() { "use strict"; })`); + shouldThrowSyntaxError(`async function ${name}() { "use strict"; }`); + shouldThrowSyntaxError(`(async function ${name}() { "use strict"; })`); + shouldThrowSyntaxError(`async function* ${name}() { "use strict"; }`); + shouldThrowSyntaxError(`(async function* ${name}() { "use strict"; })`); + shouldThrowSyntaxError(`{ function ${name}() { "use strict"; } }`); + + shouldNotThrow(`function f(${name}) { }`); + shouldNotThrow(`function f(${name}) { ("use strict"); }`); + shouldNotThrow(`function f(${name}) { "use\\x20strict"; }`); + shouldNotThrow(`function f(${name}) { function g() { "use strict"; } }`); + shouldNotThrow(`function f(${name}) { return () => { "use strict"; }; }`); + shouldNotThrow(`(${name}) => "use strict"`); + shouldNotThrow(`function ${name}() { }`); + shouldNotThrow(`(function ${name}() { })`); + shouldNotThrow(`function ${name}() { function g() { "use strict"; } }`); + shouldNotThrow(`({ ${name}() { "use strict"; } })`); + shouldNotThrow(`({ get ${name}() { "use strict"; } })`); + shouldNotThrow(`({ set ${name}(a) { "use strict"; } })`); + shouldNotThrow(`({ ${name}: function () { "use strict"; } })`); + shouldNotThrow(`(class { ${name}() { "use strict"; } })`); + shouldNotThrow(`var ${name} = function () { "use strict"; };`); + shouldNotThrow(`var ${name} = () => { "use strict"; };`); + } + + let error; + try { + new Function(word, `"use strict";`); + } catch (e) { + error = e; + } + if (!(error instanceof SyntaxError)) + throw new Error(`new Function("${word}", '"use strict";') should throw a SyntaxError`); + new Function(word, ""); +} diff --git a/JSTests/stress/using-declaration-in-function-nested-in-switch-clause.js b/JSTests/stress/using-declaration-in-function-nested-in-switch-clause.js new file mode 100644 index 0000000000000..e32aab301a503 --- /dev/null +++ b/JSTests/stress/using-declaration-in-function-nested-in-switch-clause.js @@ -0,0 +1,177 @@ +//@ requireOptions("--useExplicitResourceManagement=true") + +function shouldBe(actual, expected) { + if (actual !== expected) + throw new Error(`Expected ${expected} but got ${actual}`); +} + +function shouldParse(source) { + try { + (0, eval)(source); + } catch (error) { + throw new Error(`Expected no error but got ${error}: ${source}`); + } +} + +function shouldThrowSyntaxError(source) { + let error; + try { + (0, eval)(source); + } catch (e) { + error = e; + } + if (!(error instanceof SyntaxError)) + throw new Error(`Expected SyntaxError but got ${error}: ${source}`); +} + +function switches(statements) { + return [ + `switch (0) { case 0: ${statements} }`, + `switch (0) { default: ${statements} }`, + `switch (0) { case 1: break; case 0: ${statements} }`, + `switch (0) { default: break; case 0: ${statements} }`, + ]; +} + +function clauses(statements) { + return [ + ...switches(statements), + `function outer() { switch (0) { case 0: ${statements} } }`, + `async function outer() { switch (0) { default: ${statements} } }`, + ]; +} + +// The restriction only applies to declarations directly in the StatementList of a clause. +// A function nested in the clause has its own body. +let nested = [ + `function f() { using x = null; }`, + `function* f() { using x = null; }`, + `async function f() { using x = null; }`, + `async function* f() { using x = null; }`, + `(function () { using x = null; });`, + `(() => { using x = null; });`, + `(() => () => { using x = null; });`, + `({ f() { using x = null; } });`, + `({ get f() { using x = null; } });`, + `({ set f(value) { using x = null; } });`, + `class C { constructor() { using x = null; } }`, + `class C { f() { using x = null; } }`, + `class C { static f() { using x = null; } }`, + `class C { #f() { using x = null; } }`, + `class C { f = () => { using x = null; }; }`, + `class C { static { using x = null; } }`, + `function f(g = () => { using x = null; }) { }`, + `function f() { if (true) { using x = null; } }`, + `function f() { for (using x of []) { } }`, + `async function f() { await using x = null; }`, + `async function* f() { await using x = null; }`, + `(async function () { await using x = null; });`, + `(async () => { await using x = null; });`, + `({ async f() { await using x = null; } });`, + `class C { async f() { await using x = null; } }`, + `class C { static async f() { await using x = null; } }`, + `class C { f = async () => { await using x = null; }; }`, + `function f(g = async () => { await using x = null; }) { }`, +]; + +for (let source of nested) { + for (let clause of clauses(source)) + shouldParse(clause); +} + +// These were already accepted. A block or a for statement has its own scope. +for (let clause of clauses(`{ using x = null; }`)) + shouldParse(clause); +for (let clause of clauses(`for (using x of []) { }`)) + shouldParse(clause); +for (let clause of clauses(`try { using x = null; } catch { using y = null; } finally { using z = null; }`)) + shouldParse(clause); +for (let clause of switches(`{ await using x = null; }`)) { + shouldParse(`async function outer() { ${clause} }`); + shouldParse(`async () => { ${clause} }`); +} + +// A switch statement does not affect the declarations following it. +shouldParse(`{ switch (0) { case 0: break; } using x = null; }`); +shouldParse(`function f() { switch (0) { default: } using x = null; }`); +shouldParse(`async function f() { switch (0) { case 0: break; } await using x = null; }`); +shouldParse(`switch (0) { case 0: { switch (1) { default: } using x = null; } }`); + +// Still disallowed directly in a clause. +let direct = [ + `using x = null;`, + `; using x = null;`, + `break; using x = null;`, + `{ using y = null; } using x = null;`, + `function f() { using y = null; } using x = null;`, + `(() => { using y = null; })(); using x = null;`, + `({ f() { using y = null; } }); using x = null;`, + `class C { f() { using y = null; } static { using z = null; } } using x = null;`, + `for (using y of []) { } using x = null;`, + `switch (1) { case 1: { using y = null; } } using x = null;`, +]; + +for (let source of direct) { + for (let clause of clauses(source)) + shouldThrowSyntaxError(clause); + for (let clause of switches(source.replace(`using x`, `await using x`))) { + shouldThrowSyntaxError(`async function outer() { ${clause} }`); + shouldThrowSyntaxError(`async () => { ${clause} }`); + } +} + +// Including in a switch statement inside a function nested in a clause. +for (let clause of clauses(`function f() { switch (1) { case 1: using x = null; } }`)) + shouldThrowSyntaxError(clause); +for (let clause of clauses(`(() => { switch (1) { default: using x = null; } });`)) + shouldThrowSyntaxError(clause); +for (let clause of clauses(`async function f() { switch (1) { case 1: await using x = null; } }`)) + shouldThrowSyntaxError(clause); +for (let clause of clauses(`{ switch (1) { case 1: using x = null; } }`)) + shouldThrowSyntaxError(clause); + +{ + let log = []; + switch (0) { + case 0: + function f() { + using x = { [Symbol.dispose]() { log.push("dispose f"); } }; + log.push("f"); + } + let g = () => { + using x = { [Symbol.dispose]() { log.push("dispose g"); } }; + log.push("g"); + }; + f(); + g(); + log.push("done"); + } + shouldBe(log.join(), "f,dispose f,g,dispose g,done"); +} + +{ + let log = []; + async function test(value) { + switch (value) { + case 0: + log.push("unreachable"); + default: + async function f() { + await using x = { [Symbol.asyncDispose]() { log.push("dispose f"); } }; + log.push("f"); + } + let g = async () => { + await using x = { [Symbol.dispose]() { log.push("dispose g"); } }; + log.push("g"); + }; + await f(); + await g(); + log.push("done"); + } + } + let rejected = false; + test(1).catch(() => { rejected = true; }); + drainMicrotasks(); + shouldBe(rejected, false); + shouldBe(log.join(), "f,dispose f,g,dispose g,done"); +} diff --git a/JSTests/test262/expectations-linux.yaml b/JSTests/test262/expectations-linux.yaml index 6c211a2cf5adc..d7d965aa9d96d 100644 --- a/JSTests/test262/expectations-linux.yaml +++ b/JSTests/test262/expectations-linux.yaml @@ -180,9 +180,6 @@ test/staging/sm/Function/function-toString-builtin-name.js: strict mode: 3 test/staging/sm/PrivateName/modify-non-extensible.js: default: 3 -test/staging/sm/Proxy/revoked-get-function-realm-typeerror.js: - default: 3 - strict mode: 3 test/staging/sm/RegExp/replace-sticky-lastIndex.js: default: 3 strict mode: 3 @@ -203,9 +200,6 @@ test/staging/sm/class/superPropOrdering.js: strict mode: 3 test/staging/sm/eval/redeclared-arguments-in-param-expression-eval.js: default: 3 -test/staging/sm/expressions/exponentiation-unparenthesised-unary.js: - default: 3 - strict mode: 3 test/staging/sm/expressions/object-literal-computed-property-evaluation.js: default: 3 strict mode: 3 @@ -217,8 +211,6 @@ test/staging/sm/extensions/function-caller-skips-eval-frames.js: test/staging/sm/extensions/new-cross-compartment.js: default: 3 strict mode: 3 -test/staging/sm/fields/await-identifier-module-2.js: - module: 3 test/staging/sm/generators/delegating-yield-1.js: default: 3 strict mode: 3 @@ -234,14 +226,6 @@ test/staging/sm/generators/delegating-yield-6.js: test/staging/sm/generators/delegating-yield-7.js: default: 3 strict mode: 3 -test/staging/sm/lexical-environment/block-scoped-functions-annex-b-label.js: - default: 3 -test/staging/sm/lexical-environment/block-scoped-functions-deprecated-redecl.js: - default: 3 test/staging/sm/lexical-environment/for-loop.js: default: 3 strict mode: 3 -test/staging/sm/misc/future-reserved-words.js: - default: 3 -test/staging/sm/module/await-restricted-nested.js: - module: 3 diff --git a/JSTests/test262/expectations.yaml b/JSTests/test262/expectations.yaml index dbc2b12d2080a..40d75b13149cb 100644 --- a/JSTests/test262/expectations.yaml +++ b/JSTests/test262/expectations.yaml @@ -142,9 +142,6 @@ test/staging/sm/Function/function-toString-builtin-name.js: strict mode: 3 test/staging/sm/PrivateName/modify-non-extensible.js: default: 3 -test/staging/sm/Proxy/revoked-get-function-realm-typeerror.js: - default: 3 - strict mode: 3 test/staging/sm/RegExp/replace-sticky-lastIndex.js: default: 3 strict mode: 3 @@ -162,9 +159,6 @@ test/staging/sm/class/superPropOrdering.js: strict mode: 3 test/staging/sm/eval/redeclared-arguments-in-param-expression-eval.js: default: 3 -test/staging/sm/expressions/exponentiation-unparenthesised-unary.js: - default: 3 - strict mode: 3 test/staging/sm/expressions/object-literal-computed-property-evaluation.js: default: 3 strict mode: 3 @@ -173,8 +167,6 @@ test/staging/sm/extensions/function-caller-skips-eval-frames.js: test/staging/sm/extensions/new-cross-compartment.js: default: 3 strict mode: 3 -test/staging/sm/fields/await-identifier-module-2.js: - module: 3 test/staging/sm/generators/delegating-yield-1.js: default: 3 strict mode: 3 @@ -190,14 +182,6 @@ test/staging/sm/generators/delegating-yield-6.js: test/staging/sm/generators/delegating-yield-7.js: default: 3 strict mode: 3 -test/staging/sm/lexical-environment/block-scoped-functions-annex-b-label.js: - default: 3 -test/staging/sm/lexical-environment/block-scoped-functions-deprecated-redecl.js: - default: 3 test/staging/sm/lexical-environment/for-loop.js: default: 3 strict mode: 3 -test/staging/sm/misc/future-reserved-words.js: - default: 3 -test/staging/sm/module/await-restricted-nested.js: - module: 3 diff --git a/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/main.js b/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/main.js new file mode 100644 index 0000000000000..5f90efdf45986 --- /dev/null +++ b/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/main.js @@ -0,0 +1,34 @@ +var wasm_code = read('two-vm-arg.wasm', 'binary'); +var wasm_module = new WebAssembly.Module(wasm_code); +var imports = { + wasi_snapshot_preview1: { + proc_exit: function (code) { + print("Program exited with code:", code); + } + } +}; + +var instance = new WebAssembly.Instance(wasm_module, imports); +const PRINT_INTERVAL = 1e6; + +$.agent.start(` + var bytes = new Uint8Array([${Array.from(wasm_code).join(',')}]); + const wasmInstance = new WebAssembly.Instance(new WebAssembly.Module(bytes), {}); + + let iteration = 0; + for (; ;) { + let result = wasmInstance.exports.compute(222, iteration); + iteration += 1; + if (iteration % ${PRINT_INTERVAL} == 0) + print("Worker iteration=", iteration, " result=", result); + } +`); + +print("DEBUGGER_READY"); +let iteration = 0; +for (; ;) { + let result = instance.exports.compute(111, iteration); + iteration += 1; + if (iteration % PRINT_INTERVAL == 0) + print("Main iteration=", iteration, " result=", result); +} diff --git a/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/two-vm-arg.c b/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/two-vm-arg.c new file mode 100644 index 0000000000000..090a58f6d44ab --- /dev/null +++ b/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/two-vm-arg.c @@ -0,0 +1,17 @@ +// WASM Generation: +// emcc -g -O0 -s STANDALONE_WASM=1 --no-entry -s EXPORTED_FUNCTIONS='["_compute"]' \ +// two-vm-arg.c -o two-vm-arg.wasm +volatile int sink; + +int add(int a, int b) +{ + return a + b; +} + +int compute(int thread, int iteration) +{ + int a = thread; + int b = iteration; + sink = add(a, b); + return thread; +} diff --git a/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/two-vm-arg.wasm b/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/two-vm-arg.wasm new file mode 100755 index 0000000000000..f73ced7155317 Binary files /dev/null and b/JSTests/wasm/debugger/resources/c-wasm/two-vm-arg/two-vm-arg.wasm differ diff --git a/JSTests/wasm/debugger/tests/tests.py b/JSTests/wasm/debugger/tests/tests.py index dba0f89194197..0ceba3b917ea5 100644 --- a/JSTests/wasm/debugger/tests/tests.py +++ b/JSTests/wasm/debugger/tests/tests.py @@ -477,12 +477,13 @@ def execute(self): self.session.cmd("n", patterns=["-> 8 \t globalCounter3 = 3"]) self.session.cmd("n", patterns=["-> 9 \t}"]) - self.session.cmd("p globalCounter2", patterns=["(Int32) 2"]) - self.session.cmd("p globalCounter3", patterns=["(Int32) 3"]) + # LLDB regression rdar://188716706 + # self.session.cmd("p globalCounter2", patterns=["(Int32) 2"]) + # self.session.cmd("p globalCounter3", patterns=["(Int32) 3"]) - self.session.cmd("up", patterns=["-> 14 \t helper()"]) + # self.session.cmd("up", patterns=["-> 14 \t helper()"]) - self.session.cmd("p globalCounter1", patterns=["(Int32) 1"]) + # self.session.cmd("p globalCounter1", patterns=["(Int32) 1"]) self.session.cmd("br del -f", patterns=["All breakpoints removed."]) @@ -1776,6 +1777,41 @@ def execute(self): ) +class MultiVMStepFollowsContinueThreadTestCase: + test_file = "resources/c-wasm/two-vm-arg/main.js" + extra_jsc_options = ["--useDollarVM=1"] + + def execute(self): + self.session.cmd("b compute", patterns=["Breakpoint 1: 2 locations"]) + for _ in range(10): + self.session.cmd("br dis 1.2", patterns=["1 breakpoints disabled"]) + self.session.cmd("c", patterns=["stop reason = breakpoint 1.1", "two-vm-arg.c:13"]) + self.session.cmd("br en 1.2", patterns=["1 breakpoints enabled"]) + + self.session.cmd("thread select 1", patterns=["* thread #1"]) + self.session.cmd("n", patterns=["two-vm-arg.c:14"]) + self.session.cmd("thread select 1", patterns=["* thread #1"]) + self.session.cmd("n", patterns=["two-vm-arg.c:15"]) + self.session.cmd("thread select 1", patterns=["* thread #1"]) + self.session.cmd("s", patterns=["two-vm-arg.wasm@0`add("]) + + self.session.cmd("br del -f", patterns=["All breakpoints removed."]) + + +class ThreadContinueRunsOneVMTestCase: + test_file = "resources/c-wasm/two-vm-arg/main.js" + extra_jsc_options = ["--useDollarVM=1"] + + def execute(self): + self.session.cmd("b add", patterns=["Breakpoint 1: 2 locations"]) + self.session.cmd("br dis 1.2", patterns=["1 breakpoints disabled"]) + self.session.cmd("c", patterns=["stop reason = breakpoint 1.1", "two-vm-arg.c"]) + self.session.cmd("br en 1.2", patterns=["1 breakpoints enabled"]) + for _ in range(5): + self.session.cmd("thread continue 1", patterns=["* thread #1", "stop reason = breakpoint 1.1"]) + self.session.cmd("br del -f", patterns=["All breakpoints removed."]) + + class MemoryAtomicWaitTestCase: test_file = "resources/wasm/memory-atomic-wait.js" extra_jsc_options = ["--useDollarVM=1"] @@ -2799,6 +2835,8 @@ def execute(self): SystemCallTestCase, MultiVMSameModuleSameFunctionTestCase, MultiVMSameModuleDifferentFunctionsTestCase, + MultiVMStepFollowsContinueThreadTestCase, + ThreadContinueRunsOneVMTestCase, MemoryAtomicWaitTestCase, MemoryAtomicWaitNoTimeoutTestCase, ThreadStopInfoUnknownThreadTestCase, diff --git a/JSTests/wasm/gc/rec.js b/JSTests/wasm/gc/rec.js index 5a3138e48dd1a..53b78d921854f 100644 --- a/JSTests/wasm/gc/rec.js +++ b/JSTests/wasm/gc/rec.js @@ -294,6 +294,87 @@ function testRecDeclaration() { ) `); + // A self-referential type written without rec is a one-type rec group. + { + const bytes = new Uint8Array([0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x11, 0x03, 0x5f, 0x01, 0x63, 0x00, 0x00, 0x4e, 0x01, 0x5f, 0x01, 0x63, 0x01, 0x00, 0x60, 0x00, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x02, 0x07, 0x07, 0x01, 0x03, 0x72, 0x75, 0x6e, 0x00, 0x00, 0x0a, 0x0c, 0x01, 0x0a, 0x00, 0xd0, 0x00, 0xfb, 0x00, 0x00, 0xfb, 0x14, 0x01, 0x0b]); + assert.eq(new WebAssembly.Instance(new WebAssembly.Module(bytes)).exports.run(), 1); + } + + assert.eq(instantiate(` + (module + (type $l (struct (field (ref null $l)))) + (rec (type $m (struct (field (ref null $m))))) + (func (export "run") (result i32) + (ref.test (ref $m) (struct.new $l (ref.null $l))))) + `).exports.run(), 1); + + assert.eq(instantiate(` + (module + (rec (type $m (struct (field (ref null $m))))) + (type $l (struct (field (ref null $l)))) + (func (export "run") (result i32) + (ref.test (ref $l) (struct.new $m (ref.null $m))))) + `).exports.run(), 1); + + instantiate(` + (module + (type $l (struct (field (ref null $l)))) + (rec (type $m (struct (field (ref null $m))))) + (func (param (ref null $l)) (result (ref null $m)) + (local.get 0))) + `); + + assert.eq(instantiate(` + (module + (type $l (array (ref null $l))) + (rec (type $m (array (ref null $m)))) + (func (export "run") (result i32) + (ref.test (ref $m) (array.new $l (ref.null $l) (i32.const 1))))) + `).exports.run(), 1); + + assert.eq(instantiate(` + (module + (type $l (func (param (ref null $l)))) + (rec (type $m (func (param (ref null $m))))) + (elem declare funcref (ref.func $f)) + (func $f (type $l)) + (func (export "run") (result i32) + (ref.test (ref $m) (ref.func $f)))) + `).exports.run(), 1); + + assert.eq(instantiate(` + (module + (type $l (sub (struct (field (ref null $l))))) + (rec (type $m (sub (struct (field (ref null $m)))))) + (func (export "run") (result i32) + (ref.test (ref $m) (struct.new $l (ref.null $l))))) + `).exports.run(), 1); + + assert.eq(instantiate(` + (module + (type $base (sub (struct))) + (type $l (sub $base (struct (field (ref null $l))))) + (rec (type $m (sub $base (struct (field (ref null $m)))))) + (func (export "run") (result i32) + (ref.test (ref $m) (struct.new $l (ref.null $l))))) + `).exports.run(), 1); + + assert.eq(instantiate(` + (module + (type $l (struct (field (ref null $l)))) + (rec (type $m (struct (field i32 (ref null $m))))) + (func (export "run") (result i32) + (ref.test (ref $m) (struct.new $l (ref.null $l))))) + `).exports.run(), 0); + + assert.eq(instantiate(` + (module + (type $l (struct)) + (rec (type $m (struct))) + (func (export "run") (result i32) + (ref.test (ref $m) (struct.new $l)))) + `).exports.run(), 1); + // Ensure implicit rec groups are accounted for, and treated // correctly with regards to equality. instantiate(` diff --git a/JSTests/wasm/stress/bbq-argument-canonical-slots.js b/JSTests/wasm/stress/bbq-argument-canonical-slots.js new file mode 100644 index 0000000000000..a66eec9b8c847 --- /dev/null +++ b/JSTests/wasm/stress/bbq-argument-canonical-slots.js @@ -0,0 +1,35 @@ +import Builder from '../Builder.js' +import * as assert from '../assert.js' + +const argumentCount = 8; +const counter = argumentCount; + +let f = new Builder() + .Type().End() + .Function().End() + .Export().Function("readArgumentsLate").End() + .Code() + .Function("readArgumentsLate", { params: new Array(argumentCount).fill("i32"), ret: "i32" }, ["i32"]) + .I32Const(0) + .SetLocal(counter) + .Loop("void") + .Block("void", b => b + .GetLocal(counter).I32Const(64).I32Eq().BrIf(0) + .GetLocal(counter).I32Const(1).I32Add().SetLocal(counter) + .Br(1)) + .End(); + +f = f.GetLocal(0); +for (let i = 1; i < argumentCount; ++i) + f = f.GetLocal(i).I32Const(i + 1).I32Mul().I32Add(); + +const bin = f.Return().End().End().WebAssembly().get(); +const instance = new WebAssembly.Instance(new WebAssembly.Module(bin)); + +const args = [11, 22, 33, 44, 55, 66, 77, 88]; +let expected = args[0]; +for (let i = 1; i < argumentCount; ++i) + expected += args[i] * (i + 1); + +for (let i = 0; i < wasmTestLoopCount; ++i) + assert.eq(expected, instance.exports.readArgumentsLate(...args)); diff --git a/JSTests/wasm/stress/bbq-i64-bitwise-op-with-blinded-constant.js b/JSTests/wasm/stress/bbq-i64-bitwise-op-with-blinded-constant.js new file mode 100644 index 0000000000000..2d314fff63c48 --- /dev/null +++ b/JSTests/wasm/stress/bbq-i64-bitwise-op-with-blinded-constant.js @@ -0,0 +1,37 @@ +import { instantiate } from "../wabt-wrapper.js" +import * as assert from "../assert.js" + +const count = 256; +const input = 0x0fedcba987654321n; + +function constant(index) +{ + return -0x12345600n - BigInt(index) * 0x10101n; +} + +const operations = { + and: (a, b) => a & b, + or: (a, b) => a | b, + xor: (a, b) => a ^ b, +}; + +let wat = `(module`; +for (const name in operations) { + wat += `(func (export "${name}") (param i64) (result i64) i64.const 0`; + for (let i = 0; i < count; ++i) + wat += ` local.get 0 i64.const ${constant(i)} i64.${name} i64.add`; + wat += `)`; +} +wat += `)`; + +const instance = await instantiate(wat); + +for (const name in operations) { + let expected = 0n; + for (let i = 0; i < count; ++i) + expected += operations[name](input, constant(i)); + expected = BigInt.asIntN(64, expected); + + for (let i = 0; i < wasmTestLoopCount; ++i) + assert.eq(instance.exports[name](input), expected); +} diff --git a/JSTests/wasm/stress/bbq-multi-value-block-local-result-above-enclosing-stack.js b/JSTests/wasm/stress/bbq-multi-value-block-local-result-above-enclosing-stack.js new file mode 100644 index 0000000000000..6a66b684ac873 --- /dev/null +++ b/JSTests/wasm/stress/bbq-multi-value-block-local-result-above-enclosing-stack.js @@ -0,0 +1,147 @@ +import { instantiate } from "../wabt-wrapper.js" +import * as assert from "../assert.js" + +const instance = await instantiate(` +(module + (tag $e) + (func $nop) + (func $identity (param externref) (result externref) + (local.get 0)) + + (func (export "block") (param i32 i32) (result i32) + (i32.const 100) + (block (result i32 i32) + (local.get 0) + (i32.add (local.get 1) (i32.const 3))) + (i32.sub) + (i32.add)) + + (func (export "loop") (param i32 i32) (result i32) + (i32.const 100) + (loop (result i32 i32) + (local.get 0) + (i32.add (local.get 1) (i32.const 3))) + (i32.sub) + (i32.add)) + + (func (export "else") (param i32 i32) (result i32) + (i32.const 100) + (if (result i32 i32) (i32.eqz (local.get 0)) + (then + (i32.const 1) + (i32.const 2)) + (else + (local.get 0) + (i32.add (local.get 1) (i32.const 3)))) + (i32.sub) + (i32.add)) + + (func (export "catch") (param i32 i32) (result i32) + (i32.const 100) + (try (result i32 i32) + (do + (throw $e)) + (catch $e + (local.get 0) + (i32.add (local.get 1) (i32.const 3)))) + (i32.sub) + (i32.add)) + + (func (export "delegate") (param i32 i32) (result i32) + (i32.const 100) + (try (result i32 i32) + (do + (local.get 0) + (i32.add (local.get 1) (i32.const 3))) + (delegate 0)) + (i32.sub) + (i32.add)) + + (func (export "spilledTemp") (param i32 i32) (result i32) + (i32.const 100) + (block (result i32 i32) + (local.get 0) + (i32.add (local.get 1) (i32.const 3)) + (call $nop)) + (i32.sub) + (i32.add)) + + (func (export "pinnedLocal") (param i32 i32) (result i32) + (local i32) + (loop + (local.set 0 (i32.add (local.get 0) (i32.const 1))) + (local.set 2 (i32.add (local.get 2) (i32.const 1))) + (br_if 0 (i32.lt_u (local.get 2) (i32.const 4)))) + (i32.const 100) + (block (result i32 i32) + (local.get 0) + (i32.add (local.get 1) (i32.const 3))) + (i32.sub) + (i32.add)) + + (func (export "twoEnclosingValues") (param i32 i32) (result i32) + (i32.const 100) + (i32.const 200) + (block (result i32 i32 i32) + (local.get 0) + (local.get 1) + (i32.add (local.get 1) (i32.const 3))) + (i32.sub) + (i32.sub) + (i32.add) + (i32.add)) + + (func (export "f64") (param f64 f64) (result f64) + (f64.const 100) + (block (result f64 f64) + (local.get 0) + (f64.add (local.get 1) (f64.const 0.5))) + (f64.sub) + (f64.add)) + + (func (export "externref") (param i64 externref) (result externref) + (i32.const 100) + (block (result i64 externref) + (local.get 0) + (call $identity (local.get 1))) + (local.set 1) + (drop) + (drop) + (local.get 1)) +) +`, {}, { exceptions: true, reference_types: true }); + +/* +(module + (func (export "tryTable") (param i32 i32) (result i32) + (i32.const 100) + (try_table (result i32 i32) + (local.get 0) + (i32.add (local.get 1) (i32.const 3))) + (i32.sub) + (i32.add)) +) +*/ +const tryTableInstance = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x0c, 0x02, 0x60, 0x02, 0x7f, 0x7f, 0x01, 0x7f, 0x60, 0x00, 0x02, 0x7f, 0x7f, + 0x03, 0x02, 0x01, 0x00, + 0x07, 0x0c, 0x01, 0x08, 0x74, 0x72, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x00, + 0x0a, 0x14, 0x01, 0x12, 0x00, 0x41, 0xe4, 0x00, 0x1f, 0x01, 0x00, 0x20, 0x00, 0x20, 0x01, 0x41, 0x03, 0x6a, 0x0b, 0x6b, 0x6a, 0x0b, +]))); + +const object = { }; + +for (let i = 0; i < wasmTestLoopCount; ++i) { + assert.eq(instance.exports.block(7, 5), 99); + assert.eq(instance.exports.loop(7, 5), 99); + assert.eq(instance.exports.else(7, 5), 99); + assert.eq(instance.exports.catch(7, 5), 99); + assert.eq(instance.exports.delegate(7, 5), 99); + assert.eq(instance.exports.spilledTemp(7, 5), 99); + assert.eq(instance.exports.pinnedLocal(7, 5), 103); + assert.eq(instance.exports.twoEnclosingValues(7, 5), 310); + assert.eq(instance.exports.f64(7, 5), 101.5); + assert.eq(instance.exports.externref(6n, object), object); + assert.eq(tryTableInstance.exports.tryTable(7, 5), 99); +} diff --git a/JSTests/wasm/stress/bbq-tail-call-indirect-evicted-local-argument.js b/JSTests/wasm/stress/bbq-tail-call-indirect-evicted-local-argument.js new file mode 100644 index 0000000000000..2e1a584c1ff06 --- /dev/null +++ b/JSTests/wasm/stress/bbq-tail-call-indirect-evicted-local-argument.js @@ -0,0 +1,73 @@ +//@ requireOptions("--useWasmTailCalls=true") +import { instantiate } from "../wabt-wrapper.js" +import * as assert from "../assert.js" + +// A cross-instance return_call_indirect whose arguments are locals held in registers. Every +// allocatable GPR holds a local, so making the restore frame needs a scratch that evicts one of +// them. Locals are set in register allocation order (ARM64: x0-x7, x9-x15). The high-index locals +// land in the registers freed before the frame is copied, so only high-index slots bound the copy; +// local 0 lands in the first register the scratch can take, and its slot is far above that bound. +const argumentCount = 15; +const setOrder = [14, 13, 11, 10, 9, 8, 7, 6, 12, 0, 1, 2, 3, 4, 5]; +const params = Array(argumentCount).fill("i32").join(" "); + +function weightedSum(values) +{ + let sum = 0; + for (let i = 0; i < values.length; ++i) + sum = (sum + Math.imul(values[i], i + 1)) | 0; + return sum; +} + +const calleeBody = []; +for (let i = 0; i < argumentCount; ++i) + calleeBody.push(`(local.get ${i}) (i32.const ${i + 1}) (i32.mul)`, i ? "(i32.add)" : ""); + +const watCallee = ` +(module + (type $sig (func (param ${params}) (result i32))) + (func (export "weightedSum") (type $sig) + ${calleeBody.join("\n ")} + ) +)`; + +const locals = []; +const sets = []; +const gets = []; +for (let i = 0; i < argumentCount; ++i) { + locals.push(`(local $l${i} i32)`); + gets.push(`(local.get $l${i})`); +} +for (let i of setOrder) + sets.push(`(local.set $l${i} (i32.add (global.get $base) (i32.const ${(i + 1) * 7})))`); + +const watCaller = ` +(module + (type $sig (func (param ${params}) (result i32))) + (import "m" "weightedSum" (func $weightedSum (type $sig))) + (import "m" "base" (global $base i32)) + (table 1 funcref) + (elem (i32.const 0) $weightedSum) + (func (export "test") (result i32) + ${locals.join(" ")} + ${sets.join("\n ")} + ${gets.join(" ")} + (i32.const 0) + (return_call_indirect (type $sig)) + ) +)`; + +async function test() +{ + const base = 1000; + const callee = await instantiate(watCallee, { }, { tail_call: true }); + const caller = await instantiate(watCaller, { + m: { weightedSum: callee.exports.weightedSum, base: new WebAssembly.Global({ value: "i32" }, base) }, + }, { tail_call: true }); + + const expected = weightedSum(Array.from({ length: argumentCount }, (_, i) => base + (i + 1) * 7)); + for (let i = 0; i < wasmTestLoopCount; ++i) + assert.eq(caller.exports.test(), expected); +} + +await assert.asyncTest(test()); diff --git a/JSTests/wasm/stress/get-local-repeated-on-stack.js b/JSTests/wasm/stress/get-local-repeated-on-stack.js new file mode 100644 index 0000000000000..afe93e473cd7a --- /dev/null +++ b/JSTests/wasm/stress/get-local-repeated-on-stack.js @@ -0,0 +1,121 @@ +import * as assert from '../assert.js' +import { instantiate } from '../wabt-wrapper.js'; + +async function test() { + // The same local reaching a call twice, so the parallel move has to fan one source out to two + // parameter registers. + { + const instance = await instantiate(` + (func $sub (param i32) (param i32) (result i32) + (i32.sub (local.get 0) (local.get 1))) + + (func (export "foo") (param i32) (result i32) + (call $sub (local.get 0) (local.get 0))) + `); + assert.eq(instance.exports.foo(7), 0); + } + + // Fan-out and a swap in the same move: the third argument shares a source with the first, while + // the first two are passed in the opposite order to the one they arrive in. + { + const instance = await instantiate(` + (func $mix (param i32) (param i32) (param i32) (result i32) + (i32.add (i32.mul (local.get 0) (i32.const 100)) + (i32.add (i32.mul (local.get 1) (i32.const 10)) (local.get 2)))) + + (func (export "foo") (param i32) (param i32) (result i32) + (call $mix (local.get 1) (local.get 0) (local.get 1))) + `); + assert.eq(instance.exports.foo(2, 3), 323); + } + + // One local filling every parameter, to exercise a source that is already-moved by the time the + // later copies are emitted. + { + const instance = await instantiate(` + (func $sum4 (param i32) (param i32) (param i32) (param i32) (result i32) + (i32.add (i32.add (local.get 0) (local.get 1)) + (i32.add (local.get 2) (local.get 3)))) + + (func (export "foo") (param i32) (result i32) + (call $sum4 (local.get 0) (local.get 0) (local.get 0) (local.get 0))) + `); + assert.eq(instance.exports.foo(5), 20); + } + + // The same local as two return values. + { + const instance = await instantiate(` + (func (export "foo") (param i32) (result i32 i32) + (local.get 0) (local.get 0)) + `); + assert.eq(instance.exports.foo(11), [11, 11]); + } + + // Floats, so the fan-out runs through the FPR side of the move. + { + const instance = await instantiate(` + (func $fsub (param f64) (param f64) (result f64) + (f64.sub (local.get 0) (local.get 1))) + + (func (export "foo") (param f64) (result f64 f64) + (call $fsub (local.get 0) (local.get 0)) + (local.get 0)) + `); + assert.eq(instance.exports.foo(1.5), [0, 1.5]); + } + + // Several entries naming one local when a write to it lands: each needs the old value, and the + // reads afterwards need the new one. + { + const instance = await instantiate(` + (func (export "foo") (param i32) (result i32 i32 i32 i32) + (local.get 0) + (local.get 0) + (local.get 0) + (local.set 0 (i32.const 42)) + (local.get 0)) + `); + assert.eq(instance.exports.foo(3), [3, 3, 3, 42]); + } + + // A write inside a nested block, with the readers sitting on the enclosing stack. + { + const instance = await instantiate(` + (func (export "foo") (param i32) (result i32 i32 i32) + (local.get 0) + (local.get 0) + (block (local.set 0 (i32.const 0xbbadbeef))) + (local.get 0)) + `); + assert.eq(instance.exports.foo(3), [3, 3, 0xbbadbeef | 0]); + } + + // Duplicate namers crossing a block boundary as that block's results. + { + const instance = await instantiate(` + (func (export "foo") (param i32) (result i32 i32) + (block (result i32 i32) + (local.get 0) + (local.get 0))) + `); + assert.eq(instance.exports.foo(9), [9, 9]); + } + + // Duplicate namers live across a loop back edge. + { + const instance = await instantiate(` + (func (export "foo") (param i32) (result i32) + (local i32) + (local.set 1 (i32.const 0)) + (loop $l + (local.set 1 (i32.add (local.get 1) (i32.add (local.get 0) (local.get 0)))) + (local.set 0 (i32.sub (local.get 0) (i32.const 1))) + (br_if $l (local.get 0))) + (local.get 1)) + `); + assert.eq(instance.exports.foo(4), 20); + } +} + +await assert.asyncTest(test()); diff --git a/JSTests/wasm/stress/struct-get-forwarding-across-dead-arm.js b/JSTests/wasm/stress/struct-get-forwarding-across-dead-arm.js new file mode 100644 index 0000000000000..0ac22bb82b17e --- /dev/null +++ b/JSTests/wasm/stress/struct-get-forwarding-across-dead-arm.js @@ -0,0 +1,94 @@ +//@ runDefaultWasm("-m", "--useConcurrentJIT=0", "--thresholdForBBQOptimizeAfterWarmUp=0", "--thresholdForBBQOptimizeSoon=0", "--thresholdForOMGOptimizeAfterWarmUp=0", "--thresholdForOMGOptimizeSoon=0") + +// The store in deadArm's then-arm never runs because its condition folds to 0, so the second +// struct.get may reuse the first. In liveArm the store runs on odd iterations and must be seen by +// the second struct.get. In foldedArm the condition folds to non-zero, so the arm merges with the +// code after it and the second struct.get must read the stored value. + +import { instantiate } from "../gc/wast-wrapper.js" +import * as assert from "../assert.js" + +const wat = ` +(module + (type $S (struct (field (mut i32)))) + + (func (export "make") (param $value i32) (result (ref $S)) + (struct.new $S (local.get $value))) + + (func $deadArm (param $s (ref $S)) (param $x i32) (result i32) + (local $t i32) + (local.set $t (struct.get $S 0 (local.get $s))) + (if (i32.and (local.get $x) (i32.const 0)) + (then + (struct.set $S 0 (local.get $s) (i32.add (local.get $t) (i32.const 1))))) + (i32.add (local.get $t) (struct.get $S 0 (local.get $s)))) + + (func $liveArm (param $s (ref $S)) (param $x i32) (result i32) + (local $t i32) + (local.set $t (struct.get $S 0 (local.get $s))) + (if (i32.and (local.get $x) (i32.const 1)) + (then + (struct.set $S 0 (local.get $s) (i32.add (local.get $t) (i32.const 1))))) + (i32.add (local.get $t) (struct.get $S 0 (local.get $s)))) + + (func $foldedArm (param $s (ref $S)) (param $x i32) (result i32) + (local $t i32) + (local.set $t (struct.get $S 0 (local.get $s))) + (if (i32.or (local.get $x) (i32.const -1)) + (then + (struct.set $S 0 (local.get $s) (i32.const 5)))) + (i32.add (local.get $t) (struct.get $S 0 (local.get $s)))) + + (func (export "runDeadArm") (param $s (ref $S)) (param $n i32) (result i32) + (local $i i32) (local $acc i32) + (loop $l + (local.set $acc (i32.add (local.get $acc) (call $deadArm (local.get $s) (local.get $i)))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br_if $l (i32.lt_u (local.get $i) (local.get $n)))) + (local.get $acc)) + + (func (export "runLiveArm") (param $s (ref $S)) (param $n i32) (result i32) + (local $i i32) (local $acc i32) + (loop $l + (local.set $acc (i32.add (local.get $acc) (call $liveArm (local.get $s) (local.get $i)))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br_if $l (i32.lt_u (local.get $i) (local.get $n)))) + (local.get $acc)) + + (func (export "runFoldedArm") (param $s (ref $S)) (param $n i32) (result i32) + (local $i i32) (local $acc i32) + (loop $l + (local.set $acc (i32.add (local.get $acc) (call $foldedArm (local.get $s) (local.get $i)))) + (local.set $i (i32.add (local.get $i) (i32.const 1))) + (br_if $l (i32.lt_u (local.get $i) (local.get $n)))) + (local.get $acc)) +) +` + +async function test() { + const instance = await instantiate(wat) + const { make, runDeadArm, runLiveArm, runFoldedArm } = instance.exports + + const iterations = 1000 + + // The field starts at 3 and every odd iteration stores the value it read plus one, so + // iteration k reads v(k) = 3 + floor(k / 2) first. + let liveExpected = 0 + for (let k = 0, v = 3; k < iterations; ++k) { + liveExpected += (k & 1) ? 2 * v + 1 : 2 * v + if (k & 1) + ++v + } + + // The first call reads 3 and every later one reads 5, and each returns that plus 5. + const foldedExpected = 8 + 10 * (iterations - 1) + + // The calls inside each run tier their callee up, so a few runs are enough to check OMG code. + for (let i = 0; i < 10; ++i) { + assert.eq(runDeadArm(make(3), iterations), 6 * iterations) + assert.eq(runLiveArm(make(3), iterations), liveExpected) + assert.eq(runFoldedArm(make(3), iterations), foldedExpected) + } +} + +await assert.asyncTest(test()) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.js b/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.js index 674a0b2065913..8245225876f56 100644 --- a/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.js +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.js @@ -1,25 +1,9 @@ -//@ skip if $architecture == "arm64" && $hostOS == "linux" -//@ slow! -// https://bugs.webkit.org/show_bug.cgi?id=247454 -// https://bugs.webkit.org/show_bug.cgi?id=325270 import * as assert from "../assert.js"; -import { compile, instantiate } from "../gc/wast-wrapper.js"; + +const binary = read("type-index-abstract-heap-types-concrete-vs-abstract.wasm", "binary"); function testConcreteVsAbstract() { - const m = instantiate(` - (module - (type $S (sub (struct (field i32)))) - (type $T (sub $S (struct (field i32) (field i64)))) - (func (export "asAny") (result anyref) - (struct.new $T (i32.const 1) (i64.const 2))) - (func (export "asStruct") (result structref) - (struct.new $S (i32.const 3))) - (func (export "castToS") (param anyref) (result (ref null $S)) - (ref.cast (ref null $S) (local.get 0))) - (func (export "testIsS") (param anyref) (result i32) - (ref.test (ref null $S) (local.get 0))) - ) - `).exports; + const m = new WebAssembly.Instance(new WebAssembly.Module(binary)).exports; const v = m.asAny(); assert.eq(m.testIsS(v), 1); diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wasm new file mode 100644 index 0000000000000..cfeda4768fea0 Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wat new file mode 100644 index 0000000000000..734034b8a758c --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wat @@ -0,0 +1,13 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-concrete-vs-abstract.wat\")))'" +(module + (type $S (sub (struct (field i32)))) + (type $T (sub $S (struct (field i32) (field i64)))) + (func (export "asAny") (result anyref) + (struct.new $T (i32.const 1) (i64.const 2))) + (func (export "asStruct") (result structref) + (struct.new $S (i32.const 3))) + (func (export "castToS") (param anyref) (result (ref null $S)) + (ref.cast (ref null $S) (local.get 0))) + (func (export "testIsS") (param anyref) (result i32) + (ref.test (ref null $S) (local.get 0))) +) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.js b/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.js index 484b5ad8295bd..862b9bc6be717 100644 --- a/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.js +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.js @@ -1,29 +1,9 @@ -//@ skip if $architecture == "arm64" && $hostOS == "linux" -//@ slow! -// https://bugs.webkit.org/show_bug.cgi?id=247454 -// https://bugs.webkit.org/show_bug.cgi?id=325270 import * as assert from "../assert.js"; -import { compile, instantiate } from "../gc/wast-wrapper.js"; + +const binary = read("type-index-abstract-heap-types-globals-and-tables.wasm", "binary"); function testGlobalsAndTables() { - const m = instantiate(` - (module - (global $g (mut anyref) (ref.null any)) - (global $gf (export "gf") funcref (ref.null func)) - (table $t 2 anyref) - (func (export "setGlobal") (param anyref) - (global.set $g (local.get 0))) - (func (export "getGlobal") (result anyref) - (global.get $g)) - (func (export "setTable") (param i32 anyref) - (table.set $t (local.get 0) (local.get 1))) - (func (export "getTable") (param i32) (result anyref) - (table.get $t (local.get 0))) - (func (export "nullInTable") (result i32) - (table.set $t (i32.const 0) (ref.null none)) - (ref.is_null (table.get $t (i32.const 0)))) - ) - `).exports; + const m = new WebAssembly.Instance(new WebAssembly.Module(binary)).exports; assert.eq(m.gf.value, null); m.setGlobal(null); diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wasm new file mode 100644 index 0000000000000..8da5a823c3acc Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wat new file mode 100644 index 0000000000000..7c8cbe25cd77e --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wat @@ -0,0 +1,17 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-globals-and-tables.wat\")))'" +(module + (global $g (mut anyref) (ref.null any)) + (global $gf (export "gf") funcref (ref.null func)) + (table $t 2 anyref) + (func (export "setGlobal") (param anyref) + (global.set $g (local.get 0))) + (func (export "getGlobal") (result anyref) + (global.get $g)) + (func (export "setTable") (param i32 anyref) + (table.set $t (local.get 0) (local.get 1))) + (func (export "getTable") (param i32) (result anyref) + (table.get $t (local.get 0))) + (func (export "nullInTable") (result i32) + (table.set $t (i32.const 0) (ref.null none)) + (ref.is_null (table.get $t (i32.const 0)))) +) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.js b/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.js index dce4876e4f152..ad1705fde3e4f 100644 --- a/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.js +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.js @@ -1,42 +1,9 @@ -//@ skip if $architecture == "arm64" && $hostOS == "linux" -//@ slow! -// https://bugs.webkit.org/show_bug.cgi?id=247454 -// https://bugs.webkit.org/show_bug.cgi?id=325270 import * as assert from "../assert.js"; -import { compile, instantiate } from "../gc/wast-wrapper.js"; -function testAbstractNullsAndCasts() { - const m = instantiate(` - (module - (type $S (struct (field i32))) - (type $A (array i32)) - (func (export "nullFuncref") (result funcref) (ref.null func)) - (func (export "nullExternref") (result externref) (ref.null extern)) - (func (export "nullAnyref") (result anyref) (ref.null any)) - (func (export "nullEqref") (result eqref) (ref.null eq)) - (func (export "nullI31ref") (result i31ref) (ref.null i31)) - (func (export "nullStructref") (result structref) (ref.null struct)) - (func (export "nullArrayref") (result arrayref) (ref.null array)) - (func (export "nullNone") (result nullref) (ref.null none)) - (func (export "nullNofunc") (result nullfuncref) (ref.null nofunc)) - (func (export "nullNoextern") (result nullexternref) (ref.null noextern)) +const binary = read("type-index-abstract-heap-types-nulls-and-casts.wasm", "binary"); - (func (export "castI31ToAny") (param i32) (result anyref) - (ref.cast anyref (ref.i31 (local.get 0)))) - (func (export "testI31IsEq") (param i32) (result i32) - (ref.test eqref (ref.i31 (local.get 0)))) - (func (export "testStructIsAny") (result i32) - (ref.test anyref (struct.new $S (i32.const 1)))) - (func (export "testArrayIsStruct") (result i32) - (ref.test structref (array.new_default $A (i32.const 1)))) - (func (export "castStructToStructref") (result structref) - (ref.cast structref (struct.new $S (i32.const 7)))) - (func (export "castArrayToArrayref") (result arrayref) - (ref.cast arrayref (array.new_default $A (i32.const 2)))) - (func (export "castFailAnyToStruct") (param anyref) (result (ref null $S)) - (ref.cast (ref null $S) (local.get 0))) - ) - `).exports; +function testAbstractNullsAndCasts() { + const m = new WebAssembly.Instance(new WebAssembly.Module(binary)).exports; assert.eq(m.nullFuncref(), null); assert.eq(m.nullExternref(), null); diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wasm new file mode 100644 index 0000000000000..0cb161dfafd06 Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wat new file mode 100644 index 0000000000000..da120ebc5bb26 --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wat @@ -0,0 +1,30 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-nulls-and-casts.wat\")))'" +(module + (type $S (struct (field i32))) + (type $A (array i32)) + (func (export "nullFuncref") (result funcref) (ref.null func)) + (func (export "nullExternref") (result externref) (ref.null extern)) + (func (export "nullAnyref") (result anyref) (ref.null any)) + (func (export "nullEqref") (result eqref) (ref.null eq)) + (func (export "nullI31ref") (result i31ref) (ref.null i31)) + (func (export "nullStructref") (result structref) (ref.null struct)) + (func (export "nullArrayref") (result arrayref) (ref.null array)) + (func (export "nullNone") (result nullref) (ref.null none)) + (func (export "nullNofunc") (result nullfuncref) (ref.null nofunc)) + (func (export "nullNoextern") (result nullexternref) (ref.null noextern)) + + (func (export "castI31ToAny") (param i32) (result anyref) + (ref.cast anyref (ref.i31 (local.get 0)))) + (func (export "testI31IsEq") (param i32) (result i32) + (ref.test eqref (ref.i31 (local.get 0)))) + (func (export "testStructIsAny") (result i32) + (ref.test anyref (struct.new $S (i32.const 1)))) + (func (export "testArrayIsStruct") (result i32) + (ref.test structref (array.new_default $A (i32.const 1)))) + (func (export "castStructToStructref") (result structref) + (ref.cast structref (struct.new $S (i32.const 7)))) + (func (export "castArrayToArrayref") (result arrayref) + (ref.cast arrayref (array.new_default $A (i32.const 2)))) + (func (export "castFailAnyToStruct") (param anyref) (result (ref null $S)) + (ref.cast (ref null $S) (local.get 0))) +) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wasm new file mode 100644 index 0000000000000..97400ad334a6d Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wat new file mode 100644 index 0000000000000..772e0dfda20ce --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wat @@ -0,0 +1,7 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-concrete-cast.wat\")))'" +(module + (type $S (struct)) + (func (param (ref null $S)) (result) + (drop (local.get 0))) + (func (param anyref) (result) + (call 0 (ref.cast (ref null $S) (local.get 0))))) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wasm new file mode 100644 index 0000000000000..68d0102af5c6f Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wat new file mode 100644 index 0000000000000..57a0ae66c5c7d --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wat @@ -0,0 +1,4 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wat\")))'" +(module + (func (param externref) (result anyref) + (ref.cast anyref (local.get 0)))) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wasm new file mode 100644 index 0000000000000..08a4e03f3d7bf Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wat new file mode 100644 index 0000000000000..e7de53101f036 --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wat @@ -0,0 +1,4 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wat\")))'" +(module + (func (param funcref) (result) + (drop (ref.cast externref (local.get 0))))) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wasm new file mode 100644 index 0000000000000..734be572585d7 Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wat new file mode 100644 index 0000000000000..58ec0f8fb3fb3 --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wat @@ -0,0 +1,4 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wat\")))'" +(module + (func (param i31ref) (result anyref) + (ref.cast anyref (local.get 0)))) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wasm b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wasm new file mode 100644 index 0000000000000..647b846b5e110 Binary files /dev/null and b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wasm differ diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wat b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wat new file mode 100644 index 0000000000000..359fbf3da28f7 --- /dev/null +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wat @@ -0,0 +1,4 @@ +;; Tools/Scripts/run-jsc -e "'load(\"JSTests/wasm/gc/wast.js\"); writeFile(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wasm\", WebAssemblyText.encode(read(\"JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wat\")))'" +(module + (func (param structref) (result eqref) + (ref.cast eqref (local.get 0)))) diff --git a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation.js b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation.js index 07bc298b69687..2d1f3313e1c9f 100644 --- a/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation.js +++ b/JSTests/wasm/stress/type-index-abstract-heap-types-subtype-validation.js @@ -1,51 +1,29 @@ -//@ skip if $architecture == "arm64" && $hostOS == "linux" -//@ slow! -// https://bugs.webkit.org/show_bug.cgi?id=247454 -// https://bugs.webkit.org/show_bug.cgi?id=325270 import * as assert from "../assert.js"; -import { compile, instantiate } from "../gc/wast-wrapper.js"; + +const concreteCast = read("type-index-abstract-heap-types-subtype-validation-concrete-cast.wasm", "binary"); +const funcrefToExternref = read("type-index-abstract-heap-types-subtype-validation-funcref-to-externref.wasm", "binary"); +const externrefToAnyref = read("type-index-abstract-heap-types-subtype-validation-externref-to-anyref.wasm", "binary"); +const i31refToAnyref = read("type-index-abstract-heap-types-subtype-validation-i31ref-to-anyref.wasm", "binary"); +const structrefToEqref = read("type-index-abstract-heap-types-subtype-validation-structref-to-eqref.wasm", "binary"); function testSubtypeValidation() { - compile(` - (module - (type $S (struct)) - (func (param (ref null $S)) (result) - (drop (local.get 0))) - (func (param anyref) (result) - (call 0 (ref.cast (ref null $S) (local.get 0))))) - `); + new WebAssembly.Module(concreteCast); assert.throws( - () => compile(` - (module - (func (param funcref) (result) - (drop (ref.cast externref (local.get 0))))) - `), + () => new WebAssembly.Module(funcrefToExternref), WebAssembly.CompileError, "ref.cast" ); assert.throws( - () => compile(` - (module - (func (param externref) (result anyref) - (ref.cast anyref (local.get 0)))) - `), + () => new WebAssembly.Module(externrefToAnyref), WebAssembly.CompileError, "ref.cast" ); - compile(` - (module - (func (param i31ref) (result anyref) - (ref.cast anyref (local.get 0)))) - `); + new WebAssembly.Module(i31refToAnyref); - compile(` - (module - (func (param structref) (result eqref) - (ref.cast eqref (local.get 0)))) - `); + new WebAssembly.Module(structrefToEqref); } for (let i = 0; i < wasmTestLoopCount; ++i) diff --git a/LayoutTests/TestExpectations b/LayoutTests/TestExpectations index 92b80785802c4..b96ae3c7e1ca3 100644 --- a/LayoutTests/TestExpectations +++ b/LayoutTests/TestExpectations @@ -90,6 +90,7 @@ http/tests/site-isolation/magnify-gesture-over-cross-origin-pdf-iframe.html [ Sk # expectations. http/tests/site-isolation/magnify-gesture-coordinates.html [ Skip ] fast/viewport/ios [ Skip ] +fast/quirks/ios [ Skip ] fast/visual-viewport/ios/ [ Skip ] http/tests/visual-viewport/ios/ [ Skip ] fast/device-orientation [ Skip ] @@ -137,6 +138,7 @@ spatial-css [ Skip ] http/tests/model [ Skip ] http/wpt/model-element [ Skip ] http/tests/security/model-element [ Skip ] +fast/quirks/model-element-fallback-content-quirk.html [ Skip ] http/tests/security/registerBlobURL.html [ Skip ] system-preview [ Skip ] editing/pasteboard/dom-paste [ Skip ] @@ -149,6 +151,7 @@ interaction-region [ Skip ] overlay-region [ Skip ] pdf [ Skip ] ipc/cocoa [ Skip ] +http/tests/ipc/cocoa [ Skip ] ipc/ios [ Skip ] ipc/mac [ Skip ] ipc/restrictedendpoints/mac [ Skip ] @@ -331,7 +334,10 @@ imported/w3c/web-platform-tests/html/cross-origin-opener-policy/reporting/access imported/w3c/web-platform-tests/html/cross-origin-opener-policy/reporting/document-reporting/ imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-frame-owner.https.html imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-worker-owner.https.html +imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html [ Skip ] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html [ Skip ] +imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-service-worker.https.html [ Skip ] +imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html [ Skip ] fast/frames/frame-append-body-child-crash.html [ Slow ] [ Debug ] fast/frames/lots-of-objects.html [ Slow ] @@ -557,6 +563,7 @@ imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall- imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.html [ Skip ] imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.html [ Skip ] imported/w3c/web-platform-tests/html/webappapis/scripting/event-loops/fully_active_document.window.html [ Skip ] +webkit.org/b/323750 imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-runScripts.html [ Skip ] # Skip WPT webaudio tests that are timing out. imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/setSinkId-with-MediaElementAudioSourceNode.https.html [ Skip ] @@ -656,6 +663,8 @@ imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video [ ImageOnlyFail imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_down.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/2_tracks.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/3_tracks.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50_size_gt_maximum_size.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_end.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_start.html [ Pass ] @@ -687,9 +696,27 @@ imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-mode imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/navigate_cue_position.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/one_line_cue_plus_wrapped_cue.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/size_50.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_background_properties.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_background_shorthand.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/bold_object/bold_namespace.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_background_properties.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_background_shorthand.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/class_object/class_text-decoration_line-through.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_hex.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/color_hsla.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/id_color.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_background_properties.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_background_shorthand.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/italic_object/italic_namespace.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/lang_object/lang_attribute.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/lang_object/lang_color.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_background_properties.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_background_shorthand.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_namespace.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/underline_object/underline_text-decoration_line-through.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_background_properties.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_background_shorthand.html [ Pass ] +imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/voice_object/voice_text-decoration_line-through.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_normal_wrapped.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_nowrap_wrapped.html [ Pass ] imported/w3c/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/selectors/cue_function/white-space_pre.html [ Pass ] @@ -902,18 +929,11 @@ imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-s webkit.org/b/250171 imported/w3c/web-platform-tests/html/semantics/popovers/popover-anchor-nested-display.tentative.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/inert/inert-with-fullscreen-element.html [ Pass Failure ] imported/w3c/web-platform-tests/screen-orientation/active-lock.html [ Pass Failure ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/charset-2.html [ Skip ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/charset-bom.html [ Skip ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/referrer-policies.sub.html [ Skip ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/relative-urls.html [ Skip ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-no-referrer.sub.html [ Skip ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-origin-when-cross-origin.sub.html [ Skip ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-origin.sub.html [ Skip ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-same-origin.sub.html [ Skip ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/referrer-unsafe-url.sub.html [ Skip ] -# Timing-dependent fetch-count tests that are flaky under stress testing. -webkit.org/b/319548 imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/shared-dependency-repeated-import.html [ Skip ] -webkit.org/b/319548 imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/shared-dependency-repeated-import.html [ Skip ] imported/w3c/web-platform-tests/html/user-activation/activation-trigger-keyboard-enter.html [ Skip ] imported/w3c/web-platform-tests/html/user-activation/activation-trigger-keyboard-escape.html [ Skip ] imported/w3c/web-platform-tests/html/user-activation/activation-trigger-mouse-left.html [ Skip ] @@ -999,7 +1019,6 @@ imported/w3c/web-platform-tests/html/rendering/widgets/button-layout/input-type- imported/w3c/web-platform-tests/html/rendering/widgets/the-select-element/option-checked-styling.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/html/rendering/widgets/input-checkbox-zero-size.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/html/rendering/widgets/input-number-text-size.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/html/rendering/the-details-element/details-content-pseudo-attr.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/html/rendering/widgets/the-select-element/option-add-label-quirks.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-painting-order.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/input-image-inline-alt.html [ ImageOnlyFailure ] @@ -1033,6 +1052,7 @@ imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/credentialless # Document-Isolation-Policy requires site isolation and is partially implemented. webkit.org/b/325516 imported/w3c/web-platform-tests/html/document-isolation-policy [ Skip ] +webkit.org/b/325516 http/tests/document-isolation-policy [ Skip ] # Times out. webkit.org/b/214155 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html [ Skip ] @@ -1106,6 +1126,14 @@ imported/w3c/web-platform-tests/html/browsers/windows/targeting-cross-origin-nes imported/w3c/web-platform-tests/html/webappapis/update-rendering/child-document-raf-order.html [ Failure Pass ] imported/w3c/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio-lazy.html [ Failure Pass ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/muted-errors.sub.html [ Failure Pass ] +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-static-import.any.worker.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-nothrow-static-import.any.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-static-import.any.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-1-throw-static-import.any.worker.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.any.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-2.any.worker.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.any.html [ Skip ] # Does not generate proper output +imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/evaluation-order-3.any.worker.html [ Skip ] # Does not generate proper output imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.html [ Failure Pass ] imported/w3c/web-platform-tests/fetch/content-length/parsing.window.html [ Failure Pass ] imported/w3c/web-platform-tests/fetch/redirects/subresource-fragments.html [ Failure Pass ] @@ -1123,8 +1151,6 @@ imported/w3c/web-platform-tests/user-timing/mark.html [ Failure Pass ] imported/w3c/web-platform-tests/user-timing/measure_associated_with_navigation_timing.html [ Failure Pass ] imported/w3c/web-platform-tests/service-workers/service-worker/navigation-timing-extended.https.html [ Failure Pass ] -webkit.org/b/222750 imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test.html [ Pass Failure Crash ] - [ Debug ] imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-order.https.html [ Slow Pass Failure ] webkit.org/b/217617 [ Release ] imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-order.https.html [ Pass Failure ] webkit.org/b/217617 imported/w3c/web-platform-tests/service-workers/service-worker/navigate-window.https.html [ Pass Failure ] @@ -1149,7 +1175,6 @@ imported/w3c/web-platform-tests/content-security-policy/font-src/font-match-allo # These tests are slow in debug and may flakily time out. [ Debug ] imported/w3c/web-platform-tests/html/dom/idlharness.https.html [ Skip ] -[ Debug ] imported/w3c/web-platform-tests/html/dom/idlharness.worker.html [ Skip ] [ Debug ] accessibility/visible-character-range-scrolling.html [ Skip ] # This test does too much work (and thus runs too slowly) to work in debug. [ Debug ] accessibility/aria-owns-deep-chain-no-timeout.html [ Skip ] @@ -1698,6 +1723,11 @@ http/tests/inspector/page/get-cookies.html [ Failure ] webkit.org/b/161951 [ Debug ] inspector/debugger/stepping [ Skip ] webkit.org/b/161951 [ Release ] inspector/debugger/stepping [ Slow Pass Failure ] +# Flaky again after reverting the deferred CapturingStateChanged dispatch (303033@main), +# which had masked the flakiness at the cost of a Timeline recording regression. Skip until +# the underlying capturing-state event ordering is fixed forward. +webkit.org/b/302413 inspector/timeline/timeline-event-TimerInstall.html [ Skip ] + # Source map tests produce a lot of output. inspector/formatting/source-map-css-1.html [ Slow ] inspector/formatting/source-map-javascript-1.html [ Slow ] @@ -1716,6 +1746,8 @@ webkit.org/b/129639 inspector/dom/dom-search-crash.html [ Skip ] webkit.org/b/134982 inspector/debugger/setBreakpoint-dfg-and-modify-local.html [ Failure Pass ] +webkit.org/b/326767 [ Debug ] http/tests/site-isolation/inspector/canvas/console-record-canvas-moved-from-iframe.html [ Crash ] + # These tests are fast enough in release but quite slow in debug builds. [ Debug ] inspector/console/queryHolders.html [ Skip ] [ Debug ] inspector/debugger/debugger-stack-overflow.html [ Skip ] @@ -2680,10 +2712,7 @@ imported/w3c/web-platform-tests/scroll-to-text-fragment/non-html-documents.html # Imported W3C SVG failed tests imported/w3c/web-platform-tests/svg/animations/beginelement-instance-time-1.html [ Skip ] imported/w3c/web-platform-tests/svg/animations/correct-events-for-short-animations-with-syncbases.html [ Skip ] -imported/w3c/web-platform-tests/svg/animations/conditional-processing-01.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/animations/stop-animation-01.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/svg/animations/switch-animation-01.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/svg/animations/switch-animation-02.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/embedded/image-crossorigin.sub.html [ Skip ] imported/w3c/web-platform-tests/svg/embedded/image-fractional-width-vertical-fidelity.svg [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/interact/scripted/tabindex-focus-flag.svg [ Skip ] @@ -2874,14 +2903,12 @@ webkit.org/b/139116 imported/mozilla/svg/conditions-07.svg [ ImageOnlyFailure ] webkit.org/b/139118 imported/mozilla/svg/cssComment-in-attribute-01.svg [ ImageOnlyFailure ] imported/mozilla/svg/dynamic-conditions-08.svg [ Pass ImageOnlyFailure ] imported/mozilla/svg/dynamic-conditions-12.svg [ Pass ImageOnlyFailure ] -webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-rtl.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-holes-rtl.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-multiple-dx-anchor-end-bidi.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-bidi.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-holes-bidi.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-multiple-dx-anchor-end-rtl.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-anchor-end-bidi.svg [ ImageOnlyFailure ] -webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-anchor-end-rtl.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-multiple-dx-bidi.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/multiple-x-multiple-dx-rtl.svg [ ImageOnlyFailure ] webkit.org/b/139119 imported/mozilla/svg/text/simple-multiple-dx-anchor-end-bidi.svg [ ImageOnlyFailure ] @@ -2960,7 +2987,6 @@ imported/w3c/web-platform-tests/svg/text/reftests/text-multiline-003.svg [ Image imported/w3c/web-platform-tests/svg/text/reftests/text-shape-inside-001.svg [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/text/reftests/text-shape-inside-002.svg [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/text/reftests/text-xml-space-001.svg [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/svg/text/reftests/textpath-side-001.svg [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/text/reftests/text-font-face-load-image.html [ Skip ] # webkit.org/b/61855: textLength with lengthAdjust="spacing" and a list-valued @@ -3332,8 +3358,6 @@ webkit.org/b/155028 storage/indexeddb/modern/256-open-databases.html [ Skip ] webkit.org/b/208656 storage/indexeddb/modern/transactions-stop-on-navigation.html [ Pass Failure ] -webkit.org/b/325521 http/tests/IndexedDB/transaction-commit-pending-requests-stop.html [ Pass Failure ] - ### END OF IndexedDB failures ######################################## @@ -3383,7 +3407,6 @@ workers/bomb-with-v8.html [ Skip ] # Disable the SharedArrayBuffers tests imported/blink/fast/beacon/beacon-basic.html [ Skip ] -js/shared-array-buffer-webgl.html [ Skip ] workers/sab/cascade_lock.html [ Skip ] workers/sab/multi-memory-multi-buffer.html [ Skip ] workers/sab/multi-memory.html [ Skip ] @@ -4155,13 +4178,6 @@ imported/w3c/web-platform-tests/css/css-display/display-flow-root-002.html [ Ima imported/w3c/web-platform-tests/css/mediaqueries/viewport-script-dynamic.html [ ImageOnlyFailure ] # Initial failures on the initial import of css-overflow -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-024.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-025.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-015.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-021.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-022.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-023.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-024.tentative.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-008.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-011.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-012.html [ ImageOnlyFailure ] @@ -4186,20 +4202,12 @@ imported/w3c/web-platform-tests/css/css-overflow/text-overflow-string-in-textare imported/w3c/web-platform-tests/css/css-overflow/text-overflow-string-in-textarea-field-sizing-content.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/text-overflow-string-in-textarea-multiline.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/text-overflow-string-in-textarea-scrolled-back.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-048.html [ ImageOnlyFailure ] webkit.org/b/324326 imported/w3c/web-platform-tests/css/css-overflow/scroll-axis-lock-none-touch.html [ Skip ] webkit.org/b/324326 imported/w3c/web-platform-tests/css/css-overflow/scroll-axis-lock-none-wheel.html [ Skip ] # Tests that failed on the 2026-09-24 import of css-overflow imported/w3c/web-platform-tests/css/css-overflow/scroll-markers/scroll-buttons-contents-appearance.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/scroll-markers/scroll-buttons-counter-appearance.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-008.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-009.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-013.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-014.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-text-overflow-string-006.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-text-overflow-string-007.html [ ImageOnlyFailure ] -webkit.org/b/206748 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-text-overflow-string-009.html [ ImageOnlyFailure ] webkit.org/b/324326 imported/w3c/web-platform-tests/css/css-overflow/scroll-axis-lock-dynamic-change.html [ Skip ] webkit.org/b/324326 imported/w3c/web-platform-tests/css/css-overflow/scroll-axis-lock-none-touch-viewport.html [ Skip ] webkit.org/b/324326 imported/w3c/web-platform-tests/css/css-overflow/scroll-axis-lock-none-wheel-viewport.html [ Skip ] @@ -4209,45 +4217,12 @@ webkit.org/b/324326 imported/w3c/web-platform-tests/css/css-overflow/scroll-axis imported/w3c/web-platform-tests/css/css-overflow/clip-008.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/column-style-change-triggers-relayout.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/block-ellipsis-030.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/continue-001.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/discard/discard-multicol-001.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/discard/discard-multicol-002.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/discard/discard-multicol-003.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/discard/discard-multicol-004.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-008.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-009.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-019.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-021.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-036.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-016.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-027.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-031.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-032.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-033.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-034.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-035.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-036.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-039.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-040.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-with-ruby-005.tentative.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-balance-003.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-balance-006.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-balance-010.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-balance-011.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-011.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-012.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-015.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-017.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-019.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-020.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-021.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-022.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-abspos-023.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-fixed-pos-011.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-fixed-pos-012.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-fixed-pos-015.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-fixed-pos-016.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-fixed-pos-017.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-024.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-036.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-040.html [ ImageOnlyFailure ] @@ -4259,21 +4234,7 @@ imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-05 imported/w3c/web-platform-tests/css/css-overflow/line-clamp/webkit-line-clamp-053.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/block-ellipsis-bidi-004.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/block-ellipsis-quirk-002.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-033.html [ Skip ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-042.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-043.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-044.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-045.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-046.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-auto-047.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-004.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-005.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-006.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-007.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-010.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-011.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-overflow/line-clamp/line-clamp-with-floats-012.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/overflow-clip-margin-013.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/overflow-clip-margin-014.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/overflow-clip-margin-015.html [ ImageOnlyFailure ] @@ -4319,7 +4280,6 @@ webkit.org/b/179176 svg/wicd/test-rightsizing-a.xhtml [ Pass Failure ] webkit.org/b/187183 http/tests/security/pasteboard-file-url.html [ Skip ] [ Debug ] fast/multicol/last-set-crash.html [ Skip ] -[ Debug ] fast/inline/line-clamp-discard-assert.html [ Skip ] webkit.org/b/202805 [ Debug ] fast/multicol/fragflow-gains-new-in-flow-descendant-crash.html [ Skip ] [ Debug ] fast/multicol/out-of-flow-child-crash-with-fragments.html [ Skip ] @@ -4344,11 +4304,6 @@ webkit.org/b/190032 compositing/layer-creation/mismatched-transform-transition-o webkit.org/b/190032 compositing/layer-creation/translate-scale-transition-overlap.html [ Failure ] webkit.org/b/190032 compositing/layer-creation/translate-transition-overlap.html [ Failure ] -# FIXME: Need to implement MediaRecorder dataavailable event to support these testcases -fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext.html [ Skip ] -fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0.html [ Skip ] -fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element.html [ Skip ] - # These test ResizeObserverEntry.devicePixelContentBoxSize, which is not implemented yet. webkit.org/b/219005 imported/w3c/web-platform-tests/resize-observer/devicepixel.html [ Skip ] webkit.org/b/219005 imported/w3c/web-platform-tests/resize-observer/devicepixel2.html [ Skip ] @@ -4599,7 +4554,6 @@ imported/w3c/web-platform-tests/css/css-images/cross-fade-basic.html [ ImageOnly imported/w3c/web-platform-tests/css/css-images/cross-fade-cross-origin-orientation.sub.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/cross-fade-natural-size.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/cross-fade-premultiplied-alpha.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-images/cross-fade-target-alpha.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/image-color-cross-fade.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/gradient/gradient-eval-004.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/gradient/gradient-none-interpolation.html [ ImageOnlyFailure ] @@ -4654,13 +4608,9 @@ imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-001o.html [ I imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-002e.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-002o.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-003e.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-003i.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-003o.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-003p.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-004e.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-004i.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-004o.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-004p.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-005e.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-005o.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-images/object-fit-none-svg-006e.html [ ImageOnlyFailure ] @@ -5057,10 +5007,6 @@ webgl/2.0.y/conformance/uniforms [ Slow ] webgl/2.0.y/conformance/textures/misc [ Slow ] webgl/2.0.y/conformance2/glsl3 [ Slow ] -# ANGLE does not support this yet. Mark as Skip since it is a long test and may time out. -webkit.org/b/251514 webgl/1.0.x/conformance/extensions/khr-parallel-shader-compile.html [ Skip ] -webkit.org/b/251514 webgl/2.0.y/conformance/extensions/khr-parallel-shader-compile.html [ Skip ] - # https://github.com/KhronosGroup/WebGL/issues/3341 webgl/1.0.x/conformance/textures/misc/texture-corner-case-videos.html [ Failure ] webgl/2.0.y/conformance/textures/misc/texture-corner-case-videos.html [ Failure ] @@ -5228,7 +5174,6 @@ webkit.org/b/234706 imported/w3c/web-platform-tests/css/css-writing-modes/text-c webkit.org/b/234706 imported/w3c/web-platform-tests/css/css-writing-modes/text-combine-upright-value-digits3-002.html [ ImageOnlyFailure ] webkit.org/b/234706 imported/w3c/web-platform-tests/css/css-writing-modes/text-combine-upright-value-digits4-001.html [ ImageOnlyFailure ] webkit.org/b/234706 imported/w3c/web-platform-tests/css/css-writing-modes/text-combine-upright-value-digits4-002.html [ ImageOnlyFailure ] -webkit.org/b/234705 imported/w3c/web-platform-tests/css/css-pseudo/marker-text-combine-upright.html [ ImageOnlyFailure ] webkit.org/b/234704 imported/w3c/web-platform-tests/css/css-writing-modes/text-combine-upright-compression-001.html [ ImageOnlyFailure ] webkit.org/b/234704 imported/w3c/web-platform-tests/css/css-writing-modes/text-combine-upright-compression-002.html [ ImageOnlyFailure ] webkit.org/b/234704 imported/w3c/web-platform-tests/css/css-writing-modes/text-combine-upright-compression-003.html [ ImageOnlyFailure ] @@ -5369,9 +5314,6 @@ imported/w3c/web-platform-tests/css/css-overflow/text-overflow-scroll-vertical-l imported/w3c/web-platform-tests/css/css-overflow/text-overflow-scroll-vertical-rl-001.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-overflow/text-overflow-scroll-vertical-rl-rtl-001.html [ ImageOnlyFailure ] -# text-overflow should take in account unicode-bidi to determine ellipsis position. -imported/w3c/web-platform-tests/css/css-overflow/text-overflow-string-008.html - webkit.org/b/214387 imported/w3c/web-platform-tests/svg/animations/seeking-events-4.html [ Pass Failure ] webkit.org/b/214453 imported/w3c/web-platform-tests/css/css-align/baseline-rules/grid-item-input-type-number.html [ ImageOnlyFailure ] @@ -5397,11 +5339,6 @@ webkit.org/b/214456 imported/w3c/web-platform-tests/css/css-images/image-orienta webkit.org/b/214456 imported/w3c/web-platform-tests/css/css-images/image-orientation/svg-image-orientation.html [ ImageOnlyFailure ] webkit.org/b/214456 imported/w3c/web-platform-tests/css/css-images/image-orientation/svg-image-orientation-none.html [ ImageOnlyFailure ] -# Crashes -imported/w3c/web-platform-tests/css/css-images/animation/image-slice-interpolation-math-functions-tentative.html [ Skip ] -imported/w3c/web-platform-tests/css/css-images/repeating-conic-gradient.html [ Skip ] -imported/w3c/web-platform-tests/css/css-images/tiled-conic-gradients.html [ Skip ] - # Untriaged counter failures webkit.org/b/214457 imported/w3c/web-platform-tests/css/css-lists/inline-block-list.html [ ImageOnlyFailure ] webkit.org/b/214457 imported/w3c/web-platform-tests/css/css-lists/inline-block-list-marker.html [ ImageOnlyFailure ] @@ -6332,10 +6269,6 @@ imported/mozilla/svg/blend-color-burn.svg [ Pass ImageOnlyFailure ] webkit.org/b/233267 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_block_downloads.tentative.html [ Pass Failure ] -# Flaky because of network ordering -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/charset.html [ Pass Failure ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/cors-crossorigin-requests.html [ Pass Failure ] - # modulepreload is not supported imported/w3c/web-platform-tests/import-maps/acquiring/modulepreload.html [ Skip ] imported/w3c/web-platform-tests/import-maps/acquiring/modulepreload-link-header.html [ Skip ] @@ -6499,10 +6432,6 @@ imported/w3c/web-platform-tests/uievents/mouse/mouse_buttons_back_forward.html [ imported/w3c/web-platform-tests/uievents/order-of-events/focus-events/focus-management-expectations.html [ Skip ] imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-before-xr-session.https.html [ Skip ] imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-during-xr-session.https.html [ Skip ] -imported/w3c/web-platform-tests/wasm/serialization/module/cross-origin-module-sharing-fails.html [ Skip ] -imported/w3c/web-platform-tests/wasm/serialization/module/share-module-cross-origin-fails.sub.html [ Skip ] -imported/w3c/web-platform-tests/wasm/serialization/module/window-domain-success.sub.html [ Skip ] -imported/w3c/web-platform-tests/wasm/serialization/module/window-similar-but-cross-origin-success.sub.html [ Skip ] imported/w3c/web-platform-tests/webrtc/RTCConfiguration-iceTransportPolicy.html [ Skip ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-onicecandidateerror.https.html [ Skip ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-remote-track-mute.https.html [ Skip ] @@ -6531,12 +6460,6 @@ js/dom/Promise-reject-large-string.html [ DumpJSConsoleLogInStdErr ] webkit.org/b/251624 fast/images/animated-heics-verify.html [ Skip ] -# Import-assertion gets reverted to stage-2. -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/content-type-checking.html [ Skip ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html [ Skip ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/integrity.html [ Skip ] -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/load-error-events.html [ Skip ] - # Early hints require network callbacks that are only present in macOS 12 / iOS 15 or greater. http/wpt/loading/early-hints [ Skip ] @@ -6619,9 +6542,6 @@ webkit.org/b/242658 http/tests/media/user-gesture-preserved-across-xmlhttpreques webkit.org/b/263438 imported/w3c/web-platform-tests/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html [ Skip ] webkit.org/b/293821 imported/w3c/web-platform-tests/dom/events/scrolling/wheel-event-transactions-basic.html?include=transaction-not-bound-to-scroll-frame [ Skip ] -# New faliure after re-importing mediacapture-streams. -webkit.org/b/274091 imported/w3c/web-platform-tests/mediacapture-streams/idlharness.https.window.html - # Recent WPT update webkit.org/b/255101 imported/w3c/web-platform-tests/css/css-backgrounds/background-attachment-fixed-inside-transform-1.html [ ImageOnlyFailure ] webkit.org/b/255101 imported/w3c/web-platform-tests/css/css-backgrounds/background-attachment-local-hidden.html [ ImageOnlyFailure ] @@ -6762,7 +6682,6 @@ imported/w3c/web-platform-tests/css/css-tables/fixup-dynamic-anonymous-inline-ta imported/w3c/web-platform-tests/css/css-tables/fixup-dynamic-anonymous-table-001.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-tables/min-max-size-table-content-box.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-tables/rules-groups.html [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/css/css-tables/table-has-box-sizing-border-box-002.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-tables/tentative/paint/background-image-column-collapsed.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-tables/tentative/paint/background-image-column.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/css/css-tables/tentative/paint/background-image-row-collapsed.html [ ImageOnlyFailure ] @@ -6972,9 +6891,6 @@ webkit.org/b/290526 imported/w3c/web-platform-tests/html/canvas/element/text/2d. webkit.org/b/290526 imported/w3c/web-platform-tests/html/canvas/element/text/2d.text.measure.strokeTextCluster-baseline.tentative.html [ ImageOnlyFailure ] webkit.org/b/290526 imported/w3c/web-platform-tests/html/canvas/element/text/2d.text.measure.strokeTextCluster-drawing-styles-change.tentative.html [ ImageOnlyFailure ] -# We only support import-attributes and do not support import-assertions. -imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/import-assertions - # webkit.org/b/260546 [ Debug ] imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html [ Pass Failure ] @@ -7101,9 +7017,6 @@ imported/w3c/web-platform-tests/navigation-api/navigate-event/defer/tentative/de imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/opaque-origin.html [ Skip ] imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-opaque-origin.html [ Skip ] -# Crashing. rdar://179168475 -imported/w3c/web-platform-tests/navigation-api/navigate-event/dangling-navigate-event-after-bfcache-restore.html [ Skip ] - # Out of target of Interop 2025. imported/w3c/web-platform-tests/navigation-api/navigate-event/replaceState-inside-back-handler-infinite.optional.html [ Skip ] @@ -7676,12 +7589,8 @@ imported/w3c/web-platform-tests/webrtc-encoded-transform/RTCEncodedFrame-copy-co imported/w3c/web-platform-tests/dom/observable/tentative/observable-from.any.html [ Skip ] # Dump `rendertree` rather than proper test expectation as `testharness` test -imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/global-mutable-prototype.any.html [ Skip ] -imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/global-mutable-prototype.any.worker.html [ Skip ] - -# Below tests give `Error fetching /interfaces/webidl.idl` in test output -imported/w3c/web-platform-tests/WebIDL/idlharness.any.html [ Skip ] -imported/w3c/web-platform-tests/WebIDL/idlharness.any.worker.html [ Skip ] +imported/w3c/web-platform-tests/webidl/ecmascript-binding/global-mutable-prototype.any.html [ Skip ] +imported/w3c/web-platform-tests/webidl/ecmascript-binding/global-mutable-prototype.any.worker.html [ Skip ] # Platform-specific tests enabled on macOS and iOS separately. webanimations/scroll-timeline-clamped-current-time-while-rubber-banding-mac.html [ Skip ] @@ -7915,8 +7824,6 @@ imported/w3c/web-platform-tests/mixed-content/gen/top.meta/opt-in/audio-tag.http imported/w3c/web-platform-tests/mixed-content/gen/top.meta/opt-in/beacon.https.html imported/w3c/web-platform-tests/mixed-content/gen/top.meta/opt-in/video-tag.https.html -webkit.org/b/293973 [ Debug ] http/tests/ipc/gpu-load-error-empty-user-info-crssh.html [ Skip ] - webkit.org/b/297505 ipc/LocalSampleBufferDisplayLayer-LogIdentifier-data-race-uaf.html [ Skip ] imported/w3c/web-platform-tests/css/css-pseudo/first-line-line-height-003.html [ ImageOnlyFailure ] @@ -8133,8 +8040,6 @@ imported/w3c/web-platform-tests/svg/path/distance/path-length-css-property.tenta imported/w3c/web-platform-tests/svg/path/distance/path-length-css-zero.tentative.svg [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/struct/reftests/use-foreignObject.html [ ImageOnlyFailure ] imported/w3c/web-platform-tests/svg/text/reftests/textpath-pathlength-css-display-none.tentative.svg [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/svg/text/reftests/textpath-side-003.svg [ ImageOnlyFailure ] -imported/w3c/web-platform-tests/svg/text/reftests/textpath-side-005.svg [ ImageOnlyFailure ] webkit.org/b/312264 imported/w3c/web-platform-tests/css/cssom-view/interrupt-hidden-smooth-scroll.html [ Pass Failure ] @@ -8388,3 +8293,5 @@ http/tests/media/media-controls-context-menu-anchor-in-iframe.html [ Skip ] # webkit.org/b/324231 accessibility/line-clamp-text.html [ Skip ] accessibility/isolated-tree/line-clamp-text.html [ Skip ] + +webkit.org/b/327137 imported/w3c/web-platform-tests/resource-timing/resource-timing-failed-fetch.html [ Failure Pass ] diff --git a/LayoutTests/accessibility/base-select-list-box-content-expected.txt b/LayoutTests/accessibility/base-select-list-box-content-expected.txt new file mode 100644 index 0000000000000..530198faaf1bc --- /dev/null +++ b/LayoutTests/accessibility/base-select-list-box-content-expected.txt @@ -0,0 +1,19 @@ +This test verifies that a base appearance list box exposes all of its content where it is in the composed tree. + +PASS: axSelect.role === 'AXRole: AXList' +PASS: parentMismatches(axSelect).join() === '' +PASS: accessibilityController.accessibleElementById('apple').parentElement().isEqual(axSelect) === true +PASS: accessibilityController.accessibleElementById('separator').role === 'AXRole: AXSplitter' +PASS: axSelect.childAtIndex(2)?.stringValue === 'AXValue: More' +PASS: accessibilityController.accessibleElementById('banana').parentElement().isEqual(axSelect) === true +PASS: accessibilityController.accessibleElementById('cherry').parentElement().isEqual(axSelect) === true +PASS: accessibilityController.accessibleElementById('date').parentElement().isEqual(axSelect) === true +PASS: axSelect.selectedChildrenCount === 1 +PASS: axSelect.selectedChildAtIndex(0).isEqual(accessibilityController.accessibleElementById('banana')) === true +PASS: accessibilityController.focusedElement.isEqual(accessibilityController.accessibleElementById('button')) === true +PASS: accessibilityController.focusedElement.parentElement().isEqual(axSelect) === true + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/base-select-list-box-content.html b/LayoutTests/accessibility/base-select-list-box-content.html new file mode 100644 index 0000000000000..6f07827529590 --- /dev/null +++ b/LayoutTests/accessibility/base-select-list-box-content.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/base-select-list-box-expected.txt b/LayoutTests/accessibility/base-select-list-box-expected.txt index a84514d71b45d..047c02f8b5bda 100644 --- a/LayoutTests/accessibility/base-select-list-box-expected.txt +++ b/LayoutTests/accessibility/base-select-list-box-expected.txt @@ -1,15 +1,20 @@ -This test verifies that a base-appearance list box exposes its options as list box options, also after size changes. +This test verifies that a base-appearance list box exposes its options as list box options and the label of its optgroup as an item, as a native list box does, also after size changes. PASS: axSelect.role === 'AXRole: AXList' PASS: axSelect.childrenCount === 4 PASS: platformTextAlternatives(axSelect.childAtIndex(0)).includes('Apple') === true PASS: axSelect.childAtIndex(1).isSelected === true -PASS: platformTextAlternatives(axSelect.childAtIndex(2)).includes('More') === true -PASS: platformTextAlternatives(axSelect.childAtIndex(3)).includes('Cherry') === true -PASS: axSelect.childAtIndex(3).parentElement().isEqual(axSelect) === true +PASS: axSelect.childAtIndex(2)?.stringValue === 'AXValue: More' +PASS: axSelect.childAtIndex(2)?.isEnabled === false +PASS: platformTextAlternatives(axCherry).includes('Cherry') === true +PASS: axCherry.parentElement().isEqual(axSelect) === true size=1 PASS: accessibilityController.accessibleElementById('select').role.toLowerCase().includes('popup') === true +PASS: findBaseSelectMenu(axSelect) != null === true +PASS: axSelect.isExpanded === true +PASS: findBaseSelectMenu(axSelect) != null === true +PASS: axSelect.isExpanded === false size=4 PASS: accessibilityController.accessibleElementById('select').role === 'AXRole: AXList' @@ -17,9 +22,10 @@ PASS: axSelect.role === 'AXRole: AXList' PASS: axSelect.childrenCount === 4 PASS: platformTextAlternatives(axSelect.childAtIndex(0)).includes('Apple') === true PASS: axSelect.childAtIndex(1).isSelected === true -PASS: platformTextAlternatives(axSelect.childAtIndex(2)).includes('More') === true -PASS: platformTextAlternatives(axSelect.childAtIndex(3)).includes('Cherry') === true -PASS: axSelect.childAtIndex(3).parentElement().isEqual(axSelect) === true +PASS: axSelect.childAtIndex(2)?.stringValue === 'AXValue: More' +PASS: axSelect.childAtIndex(2)?.isEnabled === false +PASS: platformTextAlternatives(axCherry).includes('Cherry') === true +PASS: axCherry.parentElement().isEqual(axSelect) === true PASS successfullyParsed is true diff --git a/LayoutTests/accessibility/base-select-list-box.html b/LayoutTests/accessibility/base-select-list-box.html index 3b9c152908a43..887660b3d6b5c 100644 --- a/LayoutTests/accessibility/base-select-list-box.html +++ b/LayoutTests/accessibility/base-select-list-box.html @@ -15,12 +15,12 @@ - + + + + + +
+
+
+
+


+ +
+ + + + diff --git a/LayoutTests/accessibility/ios-simulator/media-captions-displayed-notification-expected.txt b/LayoutTests/accessibility/ios-simulator/media-captions-displayed-notification-expected.txt new file mode 100644 index 0000000000000..addfa6d9db569 --- /dev/null +++ b/LayoutTests/accessibility/ios-simulator/media-captions-displayed-notification-expected.txt @@ -0,0 +1,18 @@ +This test verifies that the captions displayed for a video are sent to assistive technology as plain text, once each time the displayed set changes. + +PASS: notifications.length === 1 +PASS: formatNotification(0) === '["Hello, world!"]' +PASS: notifications.length === 2 +PASS: formatNotification(1) === '["Hello, world!","Second line"]' +PASS: notifications.length === 3 +PASS: formatNotification(2) === '["Hello, world!","Second line, edited"]' +PASS: notifications.length === 4 +PASS: formatNotification(3) === '["Second line, edited"]' +PASS: notifications.length === 4 +PASS: notifications.length === 5 +PASS: formatNotification(4) === '["Second line, edited"]' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/ios-simulator/media-captions-displayed-notification.html b/LayoutTests/accessibility/ios-simulator/media-captions-displayed-notification.html new file mode 100644 index 0000000000000..2f785a756519a --- /dev/null +++ b/LayoutTests/accessibility/ios-simulator/media-captions-displayed-notification.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/ios-simulator/select-base-list-box-expected.txt b/LayoutTests/accessibility/ios-simulator/select-base-list-box-expected.txt new file mode 100644 index 0000000000000..6a9b6702fd9a0 --- /dev/null +++ b/LayoutTests/accessibility/ios-simulator/select-base-list-box-expected.txt @@ -0,0 +1,13 @@ +This test ensures that a base appearance list box is exposed as a list box with its options, while a native select with the multiple attribute is a dropdown box on iOS. + +PASS: axListBox?.role === 'ListBox' +PASS: axListBox?.supportsExpanded === false +PASS: axBanana?.role === 'ListBoxOption' +PASS: axBanana?.isSelected === true +PASS: axMultiple?.role === 'PopUpButton' +PASS: axMultiple?.stringValue === 'AXValue: 2 Items' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/ios-simulator/select-base-list-box.html b/LayoutTests/accessibility/ios-simulator/select-base-list-box.html new file mode 100644 index 0000000000000..3d24b51132b3c --- /dev/null +++ b/LayoutTests/accessibility/ios-simulator/select-base-list-box.html @@ -0,0 +1,52 @@ + + + + + + + + + +
+ + + +
+ + + + diff --git a/LayoutTests/accessibility/isolated-tree/base-select-list-box-content-expected.txt b/LayoutTests/accessibility/isolated-tree/base-select-list-box-content-expected.txt new file mode 100644 index 0000000000000..530198faaf1bc --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/base-select-list-box-content-expected.txt @@ -0,0 +1,19 @@ +This test verifies that a base appearance list box exposes all of its content where it is in the composed tree. + +PASS: axSelect.role === 'AXRole: AXList' +PASS: parentMismatches(axSelect).join() === '' +PASS: accessibilityController.accessibleElementById('apple').parentElement().isEqual(axSelect) === true +PASS: accessibilityController.accessibleElementById('separator').role === 'AXRole: AXSplitter' +PASS: axSelect.childAtIndex(2)?.stringValue === 'AXValue: More' +PASS: accessibilityController.accessibleElementById('banana').parentElement().isEqual(axSelect) === true +PASS: accessibilityController.accessibleElementById('cherry').parentElement().isEqual(axSelect) === true +PASS: accessibilityController.accessibleElementById('date').parentElement().isEqual(axSelect) === true +PASS: axSelect.selectedChildrenCount === 1 +PASS: axSelect.selectedChildAtIndex(0).isEqual(accessibilityController.accessibleElementById('banana')) === true +PASS: accessibilityController.focusedElement.isEqual(accessibilityController.accessibleElementById('button')) === true +PASS: accessibilityController.focusedElement.parentElement().isEqual(axSelect) === true + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/base-select-list-box-content.html b/LayoutTests/accessibility/isolated-tree/base-select-list-box-content.html new file mode 100644 index 0000000000000..26cd2712b0531 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/base-select-list-box-content.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/base-select-list-box-expected.txt b/LayoutTests/accessibility/isolated-tree/base-select-list-box-expected.txt new file mode 100644 index 0000000000000..047c02f8b5bda --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/base-select-list-box-expected.txt @@ -0,0 +1,37 @@ +This test verifies that a base-appearance list box exposes its options as list box options and the label of its optgroup as an item, as a native list box does, also after size changes. + +PASS: axSelect.role === 'AXRole: AXList' +PASS: axSelect.childrenCount === 4 +PASS: platformTextAlternatives(axSelect.childAtIndex(0)).includes('Apple') === true +PASS: axSelect.childAtIndex(1).isSelected === true +PASS: axSelect.childAtIndex(2)?.stringValue === 'AXValue: More' +PASS: axSelect.childAtIndex(2)?.isEnabled === false +PASS: platformTextAlternatives(axCherry).includes('Cherry') === true +PASS: axCherry.parentElement().isEqual(axSelect) === true + +size=1 +PASS: accessibilityController.accessibleElementById('select').role.toLowerCase().includes('popup') === true +PASS: findBaseSelectMenu(axSelect) != null === true +PASS: axSelect.isExpanded === true +PASS: findBaseSelectMenu(axSelect) != null === true +PASS: axSelect.isExpanded === false + +size=4 +PASS: accessibilityController.accessibleElementById('select').role === 'AXRole: AXList' +PASS: axSelect.role === 'AXRole: AXList' +PASS: axSelect.childrenCount === 4 +PASS: platformTextAlternatives(axSelect.childAtIndex(0)).includes('Apple') === true +PASS: axSelect.childAtIndex(1).isSelected === true +PASS: axSelect.childAtIndex(2)?.stringValue === 'AXValue: More' +PASS: axSelect.childAtIndex(2)?.isEnabled === false +PASS: platformTextAlternatives(axCherry).includes('Cherry') === true +PASS: axCherry.parentElement().isEqual(axSelect) === true + +PASS successfullyParsed is true + +TEST COMPLETE + +Apple +Banana +Cherry + diff --git a/LayoutTests/accessibility/isolated-tree/base-select-list-box-removal-expected.txt b/LayoutTests/accessibility/isolated-tree/base-select-list-box-removal-expected.txt new file mode 100644 index 0000000000000..6561ee5b79878 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/base-select-list-box-removal-expected.txt @@ -0,0 +1,10 @@ +This test verifies that destroying the options of a base appearance list box does not crash with the isolated tree. + +PASS: accessibilityController.accessibleElementById('single').childrenCount === 2 +PASS: accessibilityController.accessibleElementById('multiple').childrenCount === 2 +PASS: accessibilityController.accessibleElementById('single').childrenCount === 1 + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/base-select-list-box-removal.html b/LayoutTests/accessibility/isolated-tree/base-select-list-box-removal.html new file mode 100644 index 0000000000000..e915e277c0311 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/base-select-list-box-removal.html @@ -0,0 +1,47 @@ + + + + + + + + + +
+ + +
+ + + + diff --git a/LayoutTests/accessibility/isolated-tree/base-select-list-box.html b/LayoutTests/accessibility/isolated-tree/base-select-list-box.html new file mode 100644 index 0000000000000..8d0474199666b --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/base-select-list-box.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/detected-form-error-typed-text-is-not-a-message-expected.txt b/LayoutTests/accessibility/isolated-tree/detected-form-error-typed-text-is-not-a-message-expected.txt new file mode 100644 index 0000000000000..5fc1d839ec523 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/detected-form-error-typed-text-is-not-a-message-expected.txt @@ -0,0 +1,16 @@ +This tests that what the user types into a text area, or into an editor the page built, is not taken for an error message while a failed submission is being watched. + +PASS: axElement('name').stringAttributeValue('AXInvalid') === 'false' +PASS: payload === 'AXFormValidationUnannouncedText: Enter your name.\nAXFormValidationErrorFieldCount: 1\n' +PASS: errorMessageText(axElement('message')) === 'no error messages' +PASS: errorMessageText(axElement('notes')) === 'no error messages' + +PASS successfullyParsed is true + +TEST COMPLETE +Name +Enter your name. +Message +Please call after five. + +Send diff --git a/LayoutTests/accessibility/isolated-tree/detected-form-error-typed-text-is-not-a-message.html b/LayoutTests/accessibility/isolated-tree/detected-form-error-typed-text-is-not-a-message.html new file mode 100644 index 0000000000000..1b69d83dca6ac --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/detected-form-error-typed-text-is-not-a-message.html @@ -0,0 +1,64 @@ + + + + + + + + +
+
+
+
+


+ +
+ + + + diff --git a/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-nested-content-expected.txt b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-nested-content-expected.txt new file mode 100644 index 0000000000000..f434a7389644d --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-nested-content-expected.txt @@ -0,0 +1,14 @@ +This test ensures that when a presentational (accessibility-ignored) iframe hosts a document that itself contains an iframe, the nested iframe's content is reachable from the host, and the hoisted children's parents are consistent with the host's children. + +PASS: host.childAtIndex(0).domIdentifier === 'before' +PASS: host.childAtIndex(host.childrenCount - 1).domIdentifier === 'after' +PASS: descendantsInclude(host, button, 0) === true +PASS: hostChildrenAreAllReachable() === true +PASS: hostChildrenParentsAreHost() === true +PASS: (button && host ? ancestryReaches(button, host) : false) === true +PASS: (button && root ? ancestryReaches(button, root) : false) === true + +PASS successfullyParsed is true + +TEST COMPLETE +Before After diff --git a/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-nested-content.html b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-nested-content.html new file mode 100644 index 0000000000000..33a68f1f7c695 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-nested-content.html @@ -0,0 +1,88 @@ + + + + + + + + +
+ + + +
+ + + + diff --git a/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-role-removed-expected.txt b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-role-removed-expected.txt new file mode 100644 index 0000000000000..9b8600f4dee35 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-role-removed-expected.txt @@ -0,0 +1,14 @@ +This test ensures that removing role="none" from an iframe that hosts a document containing another iframe exposes the iframe again, with the nested content reachable and the hoisted parent-child relationships consistent. + +PASS: host.childAtIndex(0).domIdentifier === 'before' +PASS: host.childAtIndex(host.childrenCount - 1).domIdentifier === 'after' +PASS: scrollAreasBetween(button, host) === 2 +PASS: hostChildrenAreAllReachable() === true +PASS: hostChildrenParentsAreHost() === true +PASS: (button && host ? ancestryReaches(button, host) : false) === true +PASS: (button && root ? ancestryReaches(button, root) : false) === true + +PASS successfullyParsed is true + +TEST COMPLETE +Before After diff --git a/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-role-removed.html b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-role-removed.html new file mode 100644 index 0000000000000..571b6126d3e17 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/local-frame-presentational-iframe-role-removed.html @@ -0,0 +1,105 @@ + + + + + + + + +
+ + + +
+ + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-expected.txt new file mode 100644 index 0000000000000..5acd239c45c34 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-expected.txt @@ -0,0 +1,12 @@ +This test ensures that a base appearance multi-select dropdown box is exposed as a pop-up button, like a single-select one. + +PASS: axDropdown?.role === 'AXRole: AXPopUpButton' +PASS: axDropdown?.isExpanded === false +PASS: axDropdown.isExpanded === true +PASS: axDropdown?.childAtIndex(0)?.role === 'AXRole: AXMenu' +PASS: axListBox?.role === 'AXRole: AXList' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-without-native-dropdown-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-without-native-dropdown-expected.txt new file mode 100644 index 0000000000000..5acd239c45c34 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-without-native-dropdown-expected.txt @@ -0,0 +1,12 @@ +This test ensures that a base appearance multi-select dropdown box is exposed as a pop-up button, like a single-select one. + +PASS: axDropdown?.role === 'AXRole: AXPopUpButton' +PASS: axDropdown?.isExpanded === false +PASS: axDropdown.isExpanded === true +PASS: axDropdown?.childAtIndex(0)?.role === 'AXRole: AXMenu' +PASS: axListBox?.role === 'AXRole: AXList' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-without-native-dropdown.html b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-without-native-dropdown.html new file mode 100644 index 0000000000000..615e19abe21bf --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role-without-native-dropdown.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role.html b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role.html new file mode 100644 index 0000000000000..9eaf9e2fdf28b --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-multiple-dropdown-role.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-hit-test-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-hit-test-expected.txt new file mode 100644 index 0000000000000..a69cf0c297eb8 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-hit-test-expected.txt @@ -0,0 +1,10 @@ +This test ensures that hit testing finds the options of an open base appearance picker, which are outside the bounds of the select. + +PASS: hitTest('apple')?.domIdentifier === 'apple' +PASS: hitTest('banana')?.domIdentifier === 'banana' +PASS: hitTest('cherry')?.domIdentifier === 'cherry' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-hit-test.html b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-hit-test.html new file mode 100644 index 0000000000000..b1b1956172df9 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-hit-test.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-option-set-selected-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-option-set-selected-expected.txt new file mode 100644 index 0000000000000..1c91abfb43d92 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-option-set-selected-expected.txt @@ -0,0 +1,12 @@ +This test ensures that setting AXSelected on an option of a base appearance picker works like activating the option. + +PASS: selectedOptions('multiple') === 'cheese,ham,olives' +PASS: selectedOptions('multiple') === 'ham,olives' +PASS: document.getElementById('multiple').matches(':open') === true +PASS: selectedOptions('single') === 'banana' +PASS: document.getElementById('single').matches(':open') === false + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-option-set-selected.html b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-option-set-selected.html new file mode 100644 index 0000000000000..07a89cb626902 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/base-select-picker-option-set-selected.html @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-line-boundaries.html b/LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-line-boundaries.html index cd61c81c5a632..6efee4ef77db9 100644 --- a/LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-line-boundaries.html +++ b/LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-line-boundaries.html @@ -17,6 +17,9 @@ function lineTextFrom(offset) { var target = accessibilityController.accessibleElementById("target").childAtIndex(0); + // The text child is briefly missing after its text is replaced, so let expectAsync keep polling. + if (!target) + return null; var textStart = target.startTextMarkerForTextMarkerRange(target.textMarkerRangeForElement(target)); var marker = target.textMarkerForIndex(target.indexForTextMarker(textStart) + offset); var lineEnd = target.nextLineEndTextMarkerForTextMarker(marker); diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-option-set-selected-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/listbox-option-set-selected-expected.txt new file mode 100644 index 0000000000000..2b7a5a268ae7e --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-option-set-selected-expected.txt @@ -0,0 +1,25 @@ +This test ensures that setting AXSelected on an option of a list box changes the selection as users can, and is not otherwise observable. + +PASS: selectedOptions('single') === 'singleGreen' +single: events after setting AXSelected to true on singleGreen: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('single') === 'singleGreen' +single: events after setting AXSelected to false on singleGreen: none +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('multiple') === 'multipleRed,multipleGreen' +multiple: events after setting AXSelected to true on multipleGreen: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('multiple') === 'multipleGreen' +multiple: events after setting AXSelected to false on multipleRed: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('base') === 'baseGreen' +base: events after setting AXSelected to true on baseGreen: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('base') === 'baseGreen' +base: events after setting AXSelected to false on baseGreen: none +PASS: document.activeElement.id === 'start' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-option-set-selected.html b/LayoutTests/accessibility/isolated-tree/mac/listbox-option-set-selected.html new file mode 100644 index 0000000000000..ae3a11ce611b9 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-option-set-selected.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-options-added-and-removed-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/listbox-options-added-and-removed-expected.txt new file mode 100644 index 0000000000000..956e79e463ac2 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-options-added-and-removed-expected.txt @@ -0,0 +1,16 @@ +This test ensures that a list box exposes options that are added to it or removed from it, also inside an optgroup or a div. + +PASS: axSelect.childrenCount === 4 +PASS: axSelect.childrenCount === 5 +PASS: axSelect.childAtIndex(4)?.domIdentifier === 'cherry' +PASS: axSelect.childrenCount === 6 +PASS: axSelect.childAtIndex(3)?.domIdentifier === 'date' +PASS: axSelect.childrenCount === 7 +PASS: axSelect.childAtIndex(5)?.domIdentifier === 'elderberry' +PASS: axSelect.childrenCount === 6 +PASS: axSelect.childAtIndex(0)?.domIdentifier === 'group' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-options-added-and-removed.html b/LayoutTests/accessibility/isolated-tree/mac/listbox-options-added-and-removed.html new file mode 100644 index 0000000000000..7fe97c7492765 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-options-added-and-removed.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-selected-children-changed-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/listbox-selected-children-changed-expected.txt new file mode 100644 index 0000000000000..4ddca97ad25f2 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-selected-children-changed-expected.txt @@ -0,0 +1,25 @@ +This test ensures that a list box posts AXSelectedChildrenChanged when its selection changes, with and without base appearance. + +native: +PASS: notifications.includes('nativeSingle') === true +PASS: [...new Set(notifications)].join() === 'nativeSingle' +PASS: notifications.includes('nativeSingle') === true +PASS: [...new Set(notifications)].join() === 'nativeSingle' +PASS: document.getElementById('nativeSingle').value === 'Cherry' +PASS: document.getElementById('nativeSingle').value === 'Cherry' +PASS: notifications.includes('nativeMultiple') === true +PASS: [...new Set(notifications)].join() === 'nativeMultiple' +base: +PASS: notifications.includes('baseSingle') === true +PASS: [...new Set(notifications)].join() === 'baseSingle' +PASS: notifications.includes('baseSingle') === true +PASS: [...new Set(notifications)].join() === 'baseSingle' +PASS: document.getElementById('baseSingle').value === 'Cherry' +PASS: document.getElementById('baseSingle').value === 'Cherry' +PASS: notifications.includes('baseMultiple') === true +PASS: [...new Set(notifications)].join() === 'baseMultiple' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-selected-children-changed.html b/LayoutTests/accessibility/isolated-tree/mac/listbox-selected-children-changed.html new file mode 100644 index 0000000000000..e04255b61c389 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-selected-children-changed.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-set-selected-children-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/listbox-set-selected-children-expected.txt new file mode 100644 index 0000000000000..8124948e43cf5 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-set-selected-children-expected.txt @@ -0,0 +1,15 @@ +This test ensures that an AX user changing the selected children of a list box only changes the options whose selectedness changes, as for a non-AX user. + +PASS: selection('native') === 'Red,Green' +native: input (Red,Green), change (Red,Green) +PASS: selection('native') === 'Green' +native: input (Green), change (Green) +PASS: selection('base') === 'Red,Green' +base: input (Red,Green), change (Red,Green) +PASS: selection('base') === 'Green' +base: input (Green), change (Green) + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/listbox-set-selected-children.html b/LayoutTests/accessibility/isolated-tree/mac/listbox-set-selected-children.html new file mode 100644 index 0000000000000..3bcadee94057d --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/listbox-set-selected-children.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/select-appearance-switch-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/select-appearance-switch-expected.txt new file mode 100644 index 0000000000000..c7b56f5b4d71b --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/select-appearance-switch-expected.txt @@ -0,0 +1,22 @@ +This test ensures that a select gets new accessibility objects when it switches appearance or box type, so that it exposes its base appearance picker, and that focus moves to the new object. + +PASS: axSelect?.role === 'AXRole: AXPopUpButton' +PASS: pickerMenu() === null +PASS: accessibilityController.focusedElement?.isEqual(axSelect) === true +PASS: focusNotifications.includes('select') === true +PASS: accessibilityController.focusedElement?.isEqual(axSelect) === true +PASS: select.matches(':open') === true +PASS: pickerMenu()?.childrenCount === 2 +PASS: pickerMenu()?.childAtIndex(0)?.role === 'AXRole: AXMenuItem' +PASS: select.matches(':open') === false +PASS: axSelect?.role === 'AXRole: AXPopUpButton' +PASS: axSelect?.stringValue === 'AXValue: Apple' +PASS: pickerMenu() === null +PASS: axSelect?.role === 'AXRole: AXList' +PASS: axSelect?.childrenCount === 2 +PASS: axSelect?.role === 'AXRole: AXPopUpButton' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/select-appearance-switch.html b/LayoutTests/accessibility/isolated-tree/mac/select-appearance-switch.html new file mode 100644 index 0000000000000..da8c1d5796289 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/select-appearance-switch.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/select-dropdown-box-value-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/select-dropdown-box-value-expected.txt new file mode 100644 index 0000000000000..eb008cc05a737 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/select-dropdown-box-value-expected.txt @@ -0,0 +1,33 @@ +This test ensures that the value of a dropdown box is the text its button shows. + +nativeMultiple: +PASS: axSelect.stringValue === 'AXValue: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Cheese' +PASS: axSelect.stringValue === 'AXValue: Ham' +PASS: axSelect.stringValue === 'AXValue: 0 Items' +baseMultiple: +PASS: axSelect.stringValue === 'AXValue: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Cheese' +PASS: axSelect.stringValue === 'AXValue: Ham' +PASS: axSelect.stringValue === 'AXValue: 0 Items' +nativeButton: +PASS: axSelect.stringValue === 'AXValue: Fruit: Apple' +PASS: axSelect.stringValue === 'AXValue: Fruit: Banana' +PASS: axSelect.stringValue === 'AXValue: Pick: Banana' +baseButton: +PASS: axSelect.stringValue === 'AXValue: Fruit: Apple' +PASS: axSelect.stringValue === 'AXValue: Fruit: Banana' +PASS: axSelect.stringValue === 'AXValue: Pick: Banana' +nativeMultipleButton: +PASS: axSelect.stringValue === 'AXValue: Toppings: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Toppings: Ham' +PASS: axSelect.stringValue === 'AXValue: Toppings: 0 Items' +baseMultipleButton: +PASS: axSelect.stringValue === 'AXValue: Toppings: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Toppings: Ham' +PASS: axSelect.stringValue === 'AXValue: Toppings: 0 Items' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/select-dropdown-box-value.html b/LayoutTests/accessibility/isolated-tree/mac/select-dropdown-box-value.html new file mode 100644 index 0000000000000..5769358f03c28 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/select-dropdown-box-value.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/mac/select-optgroup-labels-expected.txt b/LayoutTests/accessibility/isolated-tree/mac/select-optgroup-labels-expected.txt new file mode 100644 index 0000000000000..e595a3e1bb1a9 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/select-optgroup-labels-expected.txt @@ -0,0 +1,11 @@ +This test ensures that the label of an optgroup is exposed as a disabled item before its options, regardless of appearance. + +PASS: items(axNative) === 'AXStaticText Fruit (disabled), AXStaticText Apple, AXStaticText Nuts (disabled), AXStaticText Almond, AXStaticText Gone (disabled), AXStaticText Durian (disabled)' +PASS: items(axBase) === 'AXStaticText Fruit (disabled), AXStaticText Apple, AXStaticText Nuts (disabled), AXStaticText Almond, AXStaticText Gone (disabled), AXStaticText Durian (disabled)' +PASS: axPicker.isExpanded === true +PASS: items(findBaseSelectMenu(axPicker)) === 'AXMenuItem Fruit (disabled), AXMenuItem Apple, AXMenuItem Nuts (disabled), AXMenuItem Almond, AXMenuItem Gone (disabled), AXMenuItem Durian (disabled)' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/isolated-tree/mac/select-optgroup-labels.html b/LayoutTests/accessibility/isolated-tree/mac/select-optgroup-labels.html new file mode 100644 index 0000000000000..d23c5931f3517 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/mac/select-optgroup-labels.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/press-events-mimic-mouse-click-expected.txt b/LayoutTests/accessibility/isolated-tree/press-events-mimic-mouse-click-expected.txt new file mode 100644 index 0000000000000..4561fd884400f --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/press-events-mimic-mouse-click-expected.txt @@ -0,0 +1,32 @@ +This test ensures that pressing an element via accessibility (e.g. with VoiceOver) dispatches the same events as a click of the primary mouse button, while keyboard activation and element.click() still dispatch a click that no pointing device produced. + +Accessibility press: +pointerdown: detail 1, button 0, buttons 1, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mousedown: detail 1, button 0, buttons 1, isTrusted true +pointerup: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mouseup: detail 1, button 0, buttons 0, isTrusted true +click: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true + +Accessibility press, with pointerdown canceled: +pointerdown: detail 1, button 0, buttons 1, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +pointerup: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +click: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true + +element.click(): +click: detail 0, button 0, buttons 0, isTrusted false, pointerId -1, pointerType "", isPrimary true + +Enter key: +click: detail 0, button 0, buttons 0, isTrusted true, pointerId -1, pointerType "", isPrimary true + +Mouse click, for comparison: +pointerdown: detail 1, button 0, buttons 1, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mousedown: detail 1, button 0, buttons 1, isTrusted true +pointerup: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mouseup: detail 1, button 0, buttons 0, isTrusted true +click: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true + + +PASS successfullyParsed is true + +TEST COMPLETE +Button Cancels pointerdown diff --git a/LayoutTests/accessibility/isolated-tree/press-events-mimic-mouse-click.html b/LayoutTests/accessibility/isolated-tree/press-events-mimic-mouse-click.html new file mode 100644 index 0000000000000..c83edf9cc5145 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/press-events-mimic-mouse-click.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/isolated-tree/radio-group-required-expected.txt b/LayoutTests/accessibility/isolated-tree/radio-group-required-expected.txt new file mode 100644 index 0000000000000..c7f4decc05708 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/radio-group-required-expected.txt @@ -0,0 +1,30 @@ +This tests that every radio button in a group is required when any button in it has the required attribute, since that makes the whole group required. + +PASS: isRequired('small') === true +PASS: isRequired('medium') === true +PASS: isRequired('large') === true +PASS: isRequired('red') === false +PASS: isRequired('blue') === false +PASS: isRequired('standard') === false +PASS: isRequired('express') === false +document.getElementById('blue').required = true; +PASS: isRequired('red') === true +PASS: isRequired('blue') === true +document.getElementById('small').required = false; +PASS: isRequired('medium') === false +PASS: isRequired('small') === false +PASS: isRequired('large') === false +document.getElementById('shipping').insertAdjacentHTML('beforeend', ' Pickup'); +PASS: isRequired('standard') === true +PASS: isRequired('express') === true +PASS: isRequired('pickup') === true + +PASS successfullyParsed is true + +TEST COMPLETE +Size + Small Medium Large +Color + Red Blue +Shipping + Standard Express Pickup diff --git a/LayoutTests/accessibility/isolated-tree/radio-group-required.html b/LayoutTests/accessibility/isolated-tree/radio-group-required.html new file mode 100644 index 0000000000000..8cdef53a0e7e4 --- /dev/null +++ b/LayoutTests/accessibility/isolated-tree/radio-group-required.html @@ -0,0 +1,65 @@ + + + + + + + + +
+ Size + + + +
+
+ Color + + +
+
+ Shipping + + +
+ + + + diff --git a/LayoutTests/accessibility/list-marker-content-text-expected.txt b/LayoutTests/accessibility/list-marker-content-text-expected.txt new file mode 100644 index 0000000000000..8d34f5c02cc57 --- /dev/null +++ b/LayoutTests/accessibility/list-marker-content-text-expected.txt @@ -0,0 +1,18 @@ +This test makes sure the text of a ::marker with content is part of its list item's text, the way the text of a list-style-type marker is. + +PASS: textOf('outsideContent') === 'foobar' +PASS: textOf('outsideType') === 'foobar' +PASS: textOf('insideContent') === 'foobar' +PASS: textOf('insideType') === 'foobar' +PASS: textOf('outsideAlt') === 'foobar' +PASS: textOf('insideAlt') === 'foobar' + +PASS successfullyParsed is true + +TEST COMPLETE +bar +bar +bar +bar +bar +bar diff --git a/LayoutTests/accessibility/list-marker-content-text.html b/LayoutTests/accessibility/list-marker-content-text.html new file mode 100644 index 0000000000000..ae0613b414f4a --- /dev/null +++ b/LayoutTests/accessibility/list-marker-content-text.html @@ -0,0 +1,45 @@ + + + + + + + + + +
    +
  • bar
  • +
  • bar
  • +
  • bar
  • +
  • bar
  • +
  • bar
  • +
  • bar
  • +
+ + + + diff --git a/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-expected.txt b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-expected.txt new file mode 100644 index 0000000000000..5acd239c45c34 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-expected.txt @@ -0,0 +1,12 @@ +This test ensures that a base appearance multi-select dropdown box is exposed as a pop-up button, like a single-select one. + +PASS: axDropdown?.role === 'AXRole: AXPopUpButton' +PASS: axDropdown?.isExpanded === false +PASS: axDropdown.isExpanded === true +PASS: axDropdown?.childAtIndex(0)?.role === 'AXRole: AXMenu' +PASS: axListBox?.role === 'AXRole: AXList' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-without-native-dropdown-expected.txt b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-without-native-dropdown-expected.txt new file mode 100644 index 0000000000000..5acd239c45c34 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-without-native-dropdown-expected.txt @@ -0,0 +1,12 @@ +This test ensures that a base appearance multi-select dropdown box is exposed as a pop-up button, like a single-select one. + +PASS: axDropdown?.role === 'AXRole: AXPopUpButton' +PASS: axDropdown?.isExpanded === false +PASS: axDropdown.isExpanded === true +PASS: axDropdown?.childAtIndex(0)?.role === 'AXRole: AXMenu' +PASS: axListBox?.role === 'AXRole: AXList' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-without-native-dropdown.html b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-without-native-dropdown.html new file mode 100644 index 0000000000000..645d5dcffa547 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role-without-native-dropdown.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role.html b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role.html new file mode 100644 index 0000000000000..58db4651b7043 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-multiple-dropdown-role.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/base-select-picker-hit-test-expected.txt b/LayoutTests/accessibility/mac/base-select-picker-hit-test-expected.txt new file mode 100644 index 0000000000000..a69cf0c297eb8 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-picker-hit-test-expected.txt @@ -0,0 +1,10 @@ +This test ensures that hit testing finds the options of an open base appearance picker, which are outside the bounds of the select. + +PASS: hitTest('apple')?.domIdentifier === 'apple' +PASS: hitTest('banana')?.domIdentifier === 'banana' +PASS: hitTest('cherry')?.domIdentifier === 'cherry' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/base-select-picker-hit-test.html b/LayoutTests/accessibility/mac/base-select-picker-hit-test.html new file mode 100644 index 0000000000000..c77638445ec05 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-picker-hit-test.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/base-select-picker-option-set-selected-expected.txt b/LayoutTests/accessibility/mac/base-select-picker-option-set-selected-expected.txt new file mode 100644 index 0000000000000..1c91abfb43d92 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-picker-option-set-selected-expected.txt @@ -0,0 +1,12 @@ +This test ensures that setting AXSelected on an option of a base appearance picker works like activating the option. + +PASS: selectedOptions('multiple') === 'cheese,ham,olives' +PASS: selectedOptions('multiple') === 'ham,olives' +PASS: document.getElementById('multiple').matches(':open') === true +PASS: selectedOptions('single') === 'banana' +PASS: document.getElementById('single').matches(':open') === false + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/base-select-picker-option-set-selected.html b/LayoutTests/accessibility/mac/base-select-picker-option-set-selected.html new file mode 100644 index 0000000000000..017ffd2dbceb7 --- /dev/null +++ b/LayoutTests/accessibility/mac/base-select-picker-option-set-selected.html @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/client/focus-changed-notification-expected.txt b/LayoutTests/accessibility/mac/client/focus-changed-notification-expected.txt new file mode 100644 index 0000000000000..a37332f8300df --- /dev/null +++ b/LayoutTests/accessibility/mac/client/focus-changed-notification-expected.txt @@ -0,0 +1,10 @@ +Tests that a client-side accessibility notification listener receives AXFocusedUIElementChanged as focus moves. + +PASS: accessibilityController.addNotificationListener(notificationCallback) === true +PASS: Received AXFocusedUIElementChanged for #first +PASS: Received AXFocusedUIElementChanged for #second + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/client/focus-changed-notification.html b/LayoutTests/accessibility/mac/client/focus-changed-notification.html new file mode 100644 index 0000000000000..7ba61ecd541cf --- /dev/null +++ b/LayoutTests/accessibility/mac/client/focus-changed-notification.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/listbox-option-set-selected-expected.txt b/LayoutTests/accessibility/mac/listbox-option-set-selected-expected.txt new file mode 100644 index 0000000000000..2b7a5a268ae7e --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-option-set-selected-expected.txt @@ -0,0 +1,25 @@ +This test ensures that setting AXSelected on an option of a list box changes the selection as users can, and is not otherwise observable. + +PASS: selectedOptions('single') === 'singleGreen' +single: events after setting AXSelected to true on singleGreen: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('single') === 'singleGreen' +single: events after setting AXSelected to false on singleGreen: none +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('multiple') === 'multipleRed,multipleGreen' +multiple: events after setting AXSelected to true on multipleGreen: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('multiple') === 'multipleGreen' +multiple: events after setting AXSelected to false on multipleRed: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('base') === 'baseGreen' +base: events after setting AXSelected to true on baseGreen: input, change +PASS: document.activeElement.id === 'start' +PASS: selectedOptions('base') === 'baseGreen' +base: events after setting AXSelected to false on baseGreen: none +PASS: document.activeElement.id === 'start' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/listbox-option-set-selected.html b/LayoutTests/accessibility/mac/listbox-option-set-selected.html new file mode 100644 index 0000000000000..619facdda61b0 --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-option-set-selected.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/listbox-options-added-and-removed-expected.txt b/LayoutTests/accessibility/mac/listbox-options-added-and-removed-expected.txt new file mode 100644 index 0000000000000..956e79e463ac2 --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-options-added-and-removed-expected.txt @@ -0,0 +1,16 @@ +This test ensures that a list box exposes options that are added to it or removed from it, also inside an optgroup or a div. + +PASS: axSelect.childrenCount === 4 +PASS: axSelect.childrenCount === 5 +PASS: axSelect.childAtIndex(4)?.domIdentifier === 'cherry' +PASS: axSelect.childrenCount === 6 +PASS: axSelect.childAtIndex(3)?.domIdentifier === 'date' +PASS: axSelect.childrenCount === 7 +PASS: axSelect.childAtIndex(5)?.domIdentifier === 'elderberry' +PASS: axSelect.childrenCount === 6 +PASS: axSelect.childAtIndex(0)?.domIdentifier === 'group' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/listbox-options-added-and-removed.html b/LayoutTests/accessibility/mac/listbox-options-added-and-removed.html new file mode 100644 index 0000000000000..6f721c631f72e --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-options-added-and-removed.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/listbox-selected-children-changed-expected.txt b/LayoutTests/accessibility/mac/listbox-selected-children-changed-expected.txt new file mode 100644 index 0000000000000..4ddca97ad25f2 --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-selected-children-changed-expected.txt @@ -0,0 +1,25 @@ +This test ensures that a list box posts AXSelectedChildrenChanged when its selection changes, with and without base appearance. + +native: +PASS: notifications.includes('nativeSingle') === true +PASS: [...new Set(notifications)].join() === 'nativeSingle' +PASS: notifications.includes('nativeSingle') === true +PASS: [...new Set(notifications)].join() === 'nativeSingle' +PASS: document.getElementById('nativeSingle').value === 'Cherry' +PASS: document.getElementById('nativeSingle').value === 'Cherry' +PASS: notifications.includes('nativeMultiple') === true +PASS: [...new Set(notifications)].join() === 'nativeMultiple' +base: +PASS: notifications.includes('baseSingle') === true +PASS: [...new Set(notifications)].join() === 'baseSingle' +PASS: notifications.includes('baseSingle') === true +PASS: [...new Set(notifications)].join() === 'baseSingle' +PASS: document.getElementById('baseSingle').value === 'Cherry' +PASS: document.getElementById('baseSingle').value === 'Cherry' +PASS: notifications.includes('baseMultiple') === true +PASS: [...new Set(notifications)].join() === 'baseMultiple' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/listbox-selected-children-changed.html b/LayoutTests/accessibility/mac/listbox-selected-children-changed.html new file mode 100644 index 0000000000000..1153d44ca2d15 --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-selected-children-changed.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/listbox-set-selected-children-expected.txt b/LayoutTests/accessibility/mac/listbox-set-selected-children-expected.txt new file mode 100644 index 0000000000000..8124948e43cf5 --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-set-selected-children-expected.txt @@ -0,0 +1,15 @@ +This test ensures that an AX user changing the selected children of a list box only changes the options whose selectedness changes, as for a non-AX user. + +PASS: selection('native') === 'Red,Green' +native: input (Red,Green), change (Red,Green) +PASS: selection('native') === 'Green' +native: input (Green), change (Green) +PASS: selection('base') === 'Red,Green' +base: input (Red,Green), change (Red,Green) +PASS: selection('base') === 'Green' +base: input (Green), change (Green) + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/listbox-set-selected-children.html b/LayoutTests/accessibility/mac/listbox-set-selected-children.html new file mode 100644 index 0000000000000..d51c6b873ed81 --- /dev/null +++ b/LayoutTests/accessibility/mac/listbox-set-selected-children.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/local-frame-presentational-iframe-nested-content-expected.txt b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-nested-content-expected.txt new file mode 100644 index 0000000000000..f434a7389644d --- /dev/null +++ b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-nested-content-expected.txt @@ -0,0 +1,14 @@ +This test ensures that when a presentational (accessibility-ignored) iframe hosts a document that itself contains an iframe, the nested iframe's content is reachable from the host, and the hoisted children's parents are consistent with the host's children. + +PASS: host.childAtIndex(0).domIdentifier === 'before' +PASS: host.childAtIndex(host.childrenCount - 1).domIdentifier === 'after' +PASS: descendantsInclude(host, button, 0) === true +PASS: hostChildrenAreAllReachable() === true +PASS: hostChildrenParentsAreHost() === true +PASS: (button && host ? ancestryReaches(button, host) : false) === true +PASS: (button && root ? ancestryReaches(button, root) : false) === true + +PASS successfullyParsed is true + +TEST COMPLETE +Before After diff --git a/LayoutTests/accessibility/mac/local-frame-presentational-iframe-nested-content.html b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-nested-content.html new file mode 100644 index 0000000000000..ab3ac7308ac09 --- /dev/null +++ b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-nested-content.html @@ -0,0 +1,88 @@ + + + + + + + + +
+ + + +
+ + + + diff --git a/LayoutTests/accessibility/mac/local-frame-presentational-iframe-role-removed-expected.txt b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-role-removed-expected.txt new file mode 100644 index 0000000000000..9b8600f4dee35 --- /dev/null +++ b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-role-removed-expected.txt @@ -0,0 +1,14 @@ +This test ensures that removing role="none" from an iframe that hosts a document containing another iframe exposes the iframe again, with the nested content reachable and the hoisted parent-child relationships consistent. + +PASS: host.childAtIndex(0).domIdentifier === 'before' +PASS: host.childAtIndex(host.childrenCount - 1).domIdentifier === 'after' +PASS: scrollAreasBetween(button, host) === 2 +PASS: hostChildrenAreAllReachable() === true +PASS: hostChildrenParentsAreHost() === true +PASS: (button && host ? ancestryReaches(button, host) : false) === true +PASS: (button && root ? ancestryReaches(button, root) : false) === true + +PASS successfullyParsed is true + +TEST COMPLETE +Before After diff --git a/LayoutTests/accessibility/mac/local-frame-presentational-iframe-role-removed.html b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-role-removed.html new file mode 100644 index 0000000000000..0c0b36f9373e0 --- /dev/null +++ b/LayoutTests/accessibility/mac/local-frame-presentational-iframe-role-removed.html @@ -0,0 +1,105 @@ + + + + + + + + +
+ + + +
+ + + + diff --git a/LayoutTests/accessibility/mac/select-appearance-switch-expected.txt b/LayoutTests/accessibility/mac/select-appearance-switch-expected.txt new file mode 100644 index 0000000000000..c7b56f5b4d71b --- /dev/null +++ b/LayoutTests/accessibility/mac/select-appearance-switch-expected.txt @@ -0,0 +1,22 @@ +This test ensures that a select gets new accessibility objects when it switches appearance or box type, so that it exposes its base appearance picker, and that focus moves to the new object. + +PASS: axSelect?.role === 'AXRole: AXPopUpButton' +PASS: pickerMenu() === null +PASS: accessibilityController.focusedElement?.isEqual(axSelect) === true +PASS: focusNotifications.includes('select') === true +PASS: accessibilityController.focusedElement?.isEqual(axSelect) === true +PASS: select.matches(':open') === true +PASS: pickerMenu()?.childrenCount === 2 +PASS: pickerMenu()?.childAtIndex(0)?.role === 'AXRole: AXMenuItem' +PASS: select.matches(':open') === false +PASS: axSelect?.role === 'AXRole: AXPopUpButton' +PASS: axSelect?.stringValue === 'AXValue: Apple' +PASS: pickerMenu() === null +PASS: axSelect?.role === 'AXRole: AXList' +PASS: axSelect?.childrenCount === 2 +PASS: axSelect?.role === 'AXRole: AXPopUpButton' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/select-appearance-switch.html b/LayoutTests/accessibility/mac/select-appearance-switch.html new file mode 100644 index 0000000000000..9d7ac9110b7f1 --- /dev/null +++ b/LayoutTests/accessibility/mac/select-appearance-switch.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/select-dropdown-box-value-expected.txt b/LayoutTests/accessibility/mac/select-dropdown-box-value-expected.txt new file mode 100644 index 0000000000000..eb008cc05a737 --- /dev/null +++ b/LayoutTests/accessibility/mac/select-dropdown-box-value-expected.txt @@ -0,0 +1,33 @@ +This test ensures that the value of a dropdown box is the text its button shows. + +nativeMultiple: +PASS: axSelect.stringValue === 'AXValue: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Cheese' +PASS: axSelect.stringValue === 'AXValue: Ham' +PASS: axSelect.stringValue === 'AXValue: 0 Items' +baseMultiple: +PASS: axSelect.stringValue === 'AXValue: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Cheese' +PASS: axSelect.stringValue === 'AXValue: Ham' +PASS: axSelect.stringValue === 'AXValue: 0 Items' +nativeButton: +PASS: axSelect.stringValue === 'AXValue: Fruit: Apple' +PASS: axSelect.stringValue === 'AXValue: Fruit: Banana' +PASS: axSelect.stringValue === 'AXValue: Pick: Banana' +baseButton: +PASS: axSelect.stringValue === 'AXValue: Fruit: Apple' +PASS: axSelect.stringValue === 'AXValue: Fruit: Banana' +PASS: axSelect.stringValue === 'AXValue: Pick: Banana' +nativeMultipleButton: +PASS: axSelect.stringValue === 'AXValue: Toppings: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Toppings: Ham' +PASS: axSelect.stringValue === 'AXValue: Toppings: 0 Items' +baseMultipleButton: +PASS: axSelect.stringValue === 'AXValue: Toppings: 2 Items' +PASS: axSelect.stringValue === 'AXValue: Toppings: Ham' +PASS: axSelect.stringValue === 'AXValue: Toppings: 0 Items' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/select-dropdown-box-value.html b/LayoutTests/accessibility/mac/select-dropdown-box-value.html new file mode 100644 index 0000000000000..b9495dfe0afa1 --- /dev/null +++ b/LayoutTests/accessibility/mac/select-dropdown-box-value.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/mac/select-optgroup-labels-expected.txt b/LayoutTests/accessibility/mac/select-optgroup-labels-expected.txt new file mode 100644 index 0000000000000..e595a3e1bb1a9 --- /dev/null +++ b/LayoutTests/accessibility/mac/select-optgroup-labels-expected.txt @@ -0,0 +1,11 @@ +This test ensures that the label of an optgroup is exposed as a disabled item before its options, regardless of appearance. + +PASS: items(axNative) === 'AXStaticText Fruit (disabled), AXStaticText Apple, AXStaticText Nuts (disabled), AXStaticText Almond, AXStaticText Gone (disabled), AXStaticText Durian (disabled)' +PASS: items(axBase) === 'AXStaticText Fruit (disabled), AXStaticText Apple, AXStaticText Nuts (disabled), AXStaticText Almond, AXStaticText Gone (disabled), AXStaticText Durian (disabled)' +PASS: axPicker.isExpanded === true +PASS: items(findBaseSelectMenu(axPicker)) === 'AXMenuItem Fruit (disabled), AXMenuItem Apple, AXMenuItem Nuts (disabled), AXMenuItem Almond, AXMenuItem Gone (disabled), AXMenuItem Durian (disabled)' + +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/accessibility/mac/select-optgroup-labels.html b/LayoutTests/accessibility/mac/select-optgroup-labels.html new file mode 100644 index 0000000000000..1b52b13c839f8 --- /dev/null +++ b/LayoutTests/accessibility/mac/select-optgroup-labels.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/parent-delete-expected.txt b/LayoutTests/accessibility/parent-delete-expected.txt index c332c713885a7..b0b9342274357 100644 --- a/LayoutTests/accessibility/parent-delete-expected.txt +++ b/LayoutTests/accessibility/parent-delete-expected.txt @@ -1,33 +1,5 @@ +PASS successfullyParsed is true + +TEST COMPLETE This test passes if there is no crash. -AXRole: AXWebArea -AXRoleDescription: HTML content -AXChildren: -AXHelp: -AXParent: -AXSize: NSSize: {800, 600} -AXTitle: -AXDescription: -AXValue: -AXFocused: 0 -AXEnabled: 1 -AXWindow: -AXSelectedTextMarkerRange: (null) -AXStartTextMarker: -AXEndTextMarker: -AXVisited: 0 -AXLinkedUIElements: -AXSelected: 0 -AXBlockQuoteLevel: 0 -AXTopLevelUIElement: -AXLanguage: -AXDOMIdentifier: -AXDOMClassList: -AXLinkUIElements: -AXLoaded: 1 -AXLayoutCount: 2 -AXLoadingProgress: 1 -AXURL: LayoutTests/accessibility/parent-delete.html -AXCaretBrowsingEnabled: 0 -AXPreventKeyboardDOMEventDispatch: 0 -AXElementBusy: 0 diff --git a/LayoutTests/accessibility/press-events-mimic-mouse-click-expected.txt b/LayoutTests/accessibility/press-events-mimic-mouse-click-expected.txt new file mode 100644 index 0000000000000..4561fd884400f --- /dev/null +++ b/LayoutTests/accessibility/press-events-mimic-mouse-click-expected.txt @@ -0,0 +1,32 @@ +This test ensures that pressing an element via accessibility (e.g. with VoiceOver) dispatches the same events as a click of the primary mouse button, while keyboard activation and element.click() still dispatch a click that no pointing device produced. + +Accessibility press: +pointerdown: detail 1, button 0, buttons 1, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mousedown: detail 1, button 0, buttons 1, isTrusted true +pointerup: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mouseup: detail 1, button 0, buttons 0, isTrusted true +click: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true + +Accessibility press, with pointerdown canceled: +pointerdown: detail 1, button 0, buttons 1, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +pointerup: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +click: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true + +element.click(): +click: detail 0, button 0, buttons 0, isTrusted false, pointerId -1, pointerType "", isPrimary true + +Enter key: +click: detail 0, button 0, buttons 0, isTrusted true, pointerId -1, pointerType "", isPrimary true + +Mouse click, for comparison: +pointerdown: detail 1, button 0, buttons 1, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mousedown: detail 1, button 0, buttons 1, isTrusted true +pointerup: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true +mouseup: detail 1, button 0, buttons 0, isTrusted true +click: detail 1, button 0, buttons 0, isTrusted true, pointerId 1, pointerType "mouse", isPrimary true + + +PASS successfullyParsed is true + +TEST COMPLETE +Button Cancels pointerdown diff --git a/LayoutTests/accessibility/press-events-mimic-mouse-click.html b/LayoutTests/accessibility/press-events-mimic-mouse-click.html new file mode 100644 index 0000000000000..b6cf1764981f8 --- /dev/null +++ b/LayoutTests/accessibility/press-events-mimic-mouse-click.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + diff --git a/LayoutTests/accessibility/radio-group-required-expected.txt b/LayoutTests/accessibility/radio-group-required-expected.txt new file mode 100644 index 0000000000000..c7f4decc05708 --- /dev/null +++ b/LayoutTests/accessibility/radio-group-required-expected.txt @@ -0,0 +1,30 @@ +This tests that every radio button in a group is required when any button in it has the required attribute, since that makes the whole group required. + +PASS: isRequired('small') === true +PASS: isRequired('medium') === true +PASS: isRequired('large') === true +PASS: isRequired('red') === false +PASS: isRequired('blue') === false +PASS: isRequired('standard') === false +PASS: isRequired('express') === false +document.getElementById('blue').required = true; +PASS: isRequired('red') === true +PASS: isRequired('blue') === true +document.getElementById('small').required = false; +PASS: isRequired('medium') === false +PASS: isRequired('small') === false +PASS: isRequired('large') === false +document.getElementById('shipping').insertAdjacentHTML('beforeend', ' Pickup'); +PASS: isRequired('standard') === true +PASS: isRequired('express') === true +PASS: isRequired('pickup') === true + +PASS successfullyParsed is true + +TEST COMPLETE +Size + Small Medium Large +Color + Red Blue +Shipping + Standard Express Pickup diff --git a/LayoutTests/accessibility/radio-group-required.html b/LayoutTests/accessibility/radio-group-required.html new file mode 100644 index 0000000000000..ab232e1f367a1 --- /dev/null +++ b/LayoutTests/accessibility/radio-group-required.html @@ -0,0 +1,65 @@ + + + + + + + + +
+ Size + + + +
+
+ Color + + +
+
+ Shipping + + +
+ + + + diff --git a/LayoutTests/accessibility/resources/presentational-iframe-nested-middle.html b/LayoutTests/accessibility/resources/presentational-iframe-nested-middle.html new file mode 100644 index 0000000000000..c179963c42897 --- /dev/null +++ b/LayoutTests/accessibility/resources/presentational-iframe-nested-middle.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/LayoutTests/compositing/clipping/descendant-clipping-layer-added-repositions-clipped-child-expected.html b/LayoutTests/compositing/clipping/descendant-clipping-layer-added-repositions-clipped-child-expected.html new file mode 100644 index 0000000000000..ddacbe0536b57 --- /dev/null +++ b/LayoutTests/compositing/clipping/descendant-clipping-layer-added-repositions-clipped-child-expected.html @@ -0,0 +1,21 @@ + + +
+
+
+ diff --git a/LayoutTests/compositing/clipping/descendant-clipping-layer-added-repositions-clipped-child.html b/LayoutTests/compositing/clipping/descendant-clipping-layer-added-repositions-clipped-child.html new file mode 100644 index 0000000000000..6ed78279e6d33 --- /dev/null +++ b/LayoutTests/compositing/clipping/descendant-clipping-layer-added-repositions-clipped-child.html @@ -0,0 +1,36 @@ + + + +
+
+
+
+ + + diff --git a/LayoutTests/compositing/geometry/ancestor-overflow-change-expected.txt b/LayoutTests/compositing/geometry/ancestor-overflow-change-expected.txt index f83892d64a6be..1dbe122dc7569 100644 --- a/LayoutTests/compositing/geometry/ancestor-overflow-change-expected.txt +++ b/LayoutTests/compositing/geometry/ancestor-overflow-change-expected.txt @@ -7,8 +7,9 @@ (contentsOpaque 1) (children 1 (GraphicsLayer - (position 6.00 6.00) - (bounds 104.00 104.00) + (position 8.00 8.00) + (bounds 100.00 100.00) + (contentsOpaque 1) (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) ) ) diff --git a/LayoutTests/compositing/geometry/fixed-position-composited-switch-expected.txt b/LayoutTests/compositing/geometry/fixed-position-composited-switch-expected.txt index 2336896ad11fb..f7c7b2c03cf11 100644 --- a/LayoutTests/compositing/geometry/fixed-position-composited-switch-expected.txt +++ b/LayoutTests/compositing/geometry/fixed-position-composited-switch-expected.txt @@ -1,7 +1,30 @@ Before (should be empty): +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 495.00 30.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 300.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) +) After (should not be empty): (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,9 +33,13 @@ After (should not be empty): (children 1 (GraphicsLayer (position 495.00 30.00) - (bounds 300.00 100.00) - (contentsOpaque 1) - (drawsContent 1) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 300.00 100.00) + (contentsOpaque 1) + ) + ) ) ) ) diff --git a/LayoutTests/compositing/images/direct-image-object-fit-expected.txt b/LayoutTests/compositing/images/direct-image-object-fit-expected.txt index 8d7a1a3d977dd..a6fabaf215c92 100644 --- a/LayoutTests/compositing/images/direct-image-object-fit-expected.txt +++ b/LayoutTests/compositing/images/direct-image-object-fit-expected.txt @@ -1,5 +1,6 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-inside-inner-scroller-expected.txt b/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-inside-inner-scroller-expected.txt new file mode 100644 index 0000000000000..f29b75992fd8a --- /dev/null +++ b/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-inside-inner-scroller-expected.txt @@ -0,0 +1,95 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 3 + (GraphicsLayer + (position 18.00 10.00) + (bounds 402.00 302.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds 385.00 300.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (anchor 0.00 0.00) + (bounds 385.00 722.00) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 19.00 11.00) + (bounds 385.00 300.00) + (children 1 + (GraphicsLayer + (children 1 + (GraphicsLayer + (position 10.00 10.00) + (bounds 302.00 202.00) + (drawsContent 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds 285.00 200.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (anchor 0.00 0.00) + (bounds 285.00 720.00) + (children 2 + (GraphicsLayer + (position 10.00 10.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + (GraphicsLayer + (position 50.00 60.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 1.00 1.00) + (bounds 300.00 200.00) + (children 1 + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 200.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 19.00 11.00) + (bounds 400.00 300.00) + (children 1 + (GraphicsLayer + (position 385.00 0.00) + (bounds 15.00 300.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-inside-inner-scroller.html b/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-inside-inner-scroller.html new file mode 100644 index 0000000000000..76ea65daae4cd --- /dev/null +++ b/LayoutTests/compositing/layer-creation/clipping-scope/nested-scroller-overlap-inside-inner-scroller.html @@ -0,0 +1,63 @@ + + + + + + + + +
+
+
+
+
+
+
+
+
Layer tree goes here
+ + diff --git a/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt b/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt index e2d3f19f844f5..eda550d5957a4 100644 --- a/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt +++ b/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -8,30 +9,36 @@ (GraphicsLayer (position 8.00 8.00) (bounds 300.00 300.00) - (children 4 + (children 2 (GraphicsLayer - (bounds 300.00 300.00) + (bounds 285.00 285.00) (children 1 (GraphicsLayer + (anchor 0.00 0.00) (bounds 1000.00 1000.00) (drawsContent 1) ) ) ) (GraphicsLayer - (position 0.00 285.00) - (bounds 285.00 15.00) - (drawsContent 1) - ) - (GraphicsLayer - (position 285.00 0.00) - (bounds 15.00 285.00) - (drawsContent 1) - ) - (GraphicsLayer - (position 285.00 285.00) - (bounds 15.00 15.00) - (drawsContent 1) + (bounds 300.00 300.00) + (children 3 + (GraphicsLayer + (position 0.00 285.00) + (bounds 285.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 285.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 285.00 285.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) ) ) ) diff --git a/LayoutTests/platform/glib/compositing/repaint/become-overlay-composited-layer-expected.txt b/LayoutTests/compositing/repaint/become-overlay-composited-layer-expected.txt similarity index 81% rename from LayoutTests/platform/glib/compositing/repaint/become-overlay-composited-layer-expected.txt rename to LayoutTests/compositing/repaint/become-overlay-composited-layer-expected.txt index 05a6d998106d6..ecc172b3add2e 100644 --- a/LayoutTests/platform/glib/compositing/repaint/become-overlay-composited-layer-expected.txt +++ b/LayoutTests/compositing/repaint/become-overlay-composited-layer-expected.txt @@ -4,10 +4,10 @@ layer at (0,0) size 800x600 RenderBlock {HTML} at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {P} at (0,0) size 784x18 - RenderInline {A} at (0,0) size 149x17 [color=#0000EE] - RenderText {#text} at (0,0) size 149x17 + RenderInline {A} at (0,0) size 149x18 [color=#0000EE] + RenderText {#text} at (0,0) size 149x18 text run at (0,0) width 149: "rdar://problem/6983207" - RenderText {#text} at (149,0) size 396x17 + RenderText {#text} at (149,0) size 396x18 text run at (149,0) width 396: "Should not leave blue box behind after moving to the top right." layer at (8,42) size 502x102 RenderBlock (relative positioned) {DIV} at (0,34) size 502x102 [border: (1px solid #000000)] diff --git a/LayoutTests/compositing/repaint/invalidations-on-composited-layers-expected.txt b/LayoutTests/compositing/repaint/invalidations-on-composited-layers-expected.txt index ea67a3ee24115..045a4ded3ba19 100644 --- a/LayoutTests/compositing/repaint/invalidations-on-composited-layers-expected.txt +++ b/LayoutTests/compositing/repaint/invalidations-on-composited-layers-expected.txt @@ -1,9 +1,10 @@ (repaint rects - (rect 8 13 784 16) - (rect 8 413 784 29) - (rect 0 421 800 29) + (rect 8 13 784 15) + (rect 8 413 784 28) + (rect 0 421 800 28) ) (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -11,12 +12,13 @@ (contentsOpaque 1) (children 1 (GraphicsLayer - (position 8.00 42.00) + (position 8.00 41.00) (bounds 400.00 400.00) (contentsOpaque 1) (children 1 (GraphicsLayer (position 50.00 50.00) + (anchor 0.51 0.51) (bounds 75.00 75.00) (contentsOpaque 1) ) diff --git a/LayoutTests/compositing/tiling/backface-preserve-3d-tiled-expected.txt b/LayoutTests/compositing/tiling/backface-preserve-3d-tiled-expected.txt index b5ef80b4533da..d2f94e997110a 100644 --- a/LayoutTests/compositing/tiling/backface-preserve-3d-tiled-expected.txt +++ b/LayoutTests/compositing/tiling/backface-preserve-3d-tiled-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 204.00 204.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 200.00 200.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00]) @@ -20,7 +22,7 @@ (preserves3D 1) (drawsContent 1) (backfaceVisibility hidden) - (transform [-1.00 0.00 -0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) + (transform [-1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) ) ) ) @@ -31,6 +33,7 @@ (bounds 204.00 204.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 200.00 200.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00]) @@ -41,7 +44,7 @@ (preserves3D 1) (drawsContent 1) (backfaceVisibility hidden) - (transform [-1.00 0.00 -0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) + (transform [-1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) ) ) ) diff --git a/LayoutTests/compositing/tiling/crash-reparent-tiled-layer-expected.txt b/LayoutTests/compositing/tiling/crash-reparent-tiled-layer-expected.txt index aa520200a2e92..44980ff9084e8 100644 --- a/LayoutTests/compositing/tiling/crash-reparent-tiled-layer-expected.txt +++ b/LayoutTests/compositing/tiling/crash-reparent-tiled-layer-expected.txt @@ -1,6 +1,7 @@ From https://bugs.webkit.org/show_bug.cgi?id=44629. The parent is a tiled layer. When the child is a non-tiled layer and it is switched to a tiled layer, a crash occurs. This test should not crash. (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 5111.00) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/tiling/huge-layer-img-expected.txt b/LayoutTests/compositing/tiling/huge-layer-img-expected.txt index 2de81b39ecaef..49f6bb0e58c6b 100644 --- a/LayoutTests/compositing/tiling/huge-layer-img-expected.txt +++ b/LayoutTests/compositing/tiling/huge-layer-img-expected.txt @@ -1,5 +1,6 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 20053.00) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/tiling/huge-layer-with-layer-children-expected.txt b/LayoutTests/compositing/tiling/huge-layer-with-layer-children-expected.txt index 4d81d06853da3..0b2c61995c88f 100644 --- a/LayoutTests/compositing/tiling/huge-layer-with-layer-children-expected.txt +++ b/LayoutTests/compositing/tiling/huge-layer-with-layer-children-expected.txt @@ -2,6 +2,7 @@ The yellow box should be large enough to scroll off the bottom. There should be This is some text (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 5129.00) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize-expected.txt b/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize-expected.txt index 9038922b41ebe..d85f10bf205f6 100644 --- a/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize-expected.txt +++ b/LayoutTests/compositing/tiling/huge-layer-with-layer-children-resize-expected.txt @@ -2,6 +2,7 @@ The yellow box should be 500 x 500 on startup. Then it should stretch to be 500 First (small layer): (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 611.00) (children 1 (GraphicsLayer @@ -34,6 +35,7 @@ First (small layer): Second (huge layer): (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 5111.00) (children 1 (GraphicsLayer @@ -66,6 +68,7 @@ Second (huge layer): Third (small layer): (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 611.00) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/tiling/tile-cache-zoomed-expected.txt b/LayoutTests/compositing/tiling/tile-cache-zoomed-expected.txt index e910c978d534f..16ce6242c8a7d 100644 --- a/LayoutTests/compositing/tiling/tile-cache-zoomed-expected.txt +++ b/LayoutTests/compositing/tiling/tile-cache-zoomed-expected.txt @@ -1,24 +1,17 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 1932.00 4150.00) - (visible rect 0.00, 0.00 785.00 x 585.00) (children 1 (GraphicsLayer - (anchor 0.00 0.00) (bounds 1208.00 2594.00) (contentsOpaque 1) (transform [1.60 0.00 0.00 0.00] [0.00 1.60 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) - (visible rect 0.00, 0.00 490.63 x 365.63) (children 1 (GraphicsLayer (position 8.00 8.00) (bounds 700.00 2500.00) - (usingTiledLayer 1) (contentsOpaque 1) - (drawsContent 1) (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) - (visible rect 0.00, 0.00 482.63 x 357.63) - (tile cache coverage 0, 0 640 x 640) - (tile size 512 x 512) ) ) ) diff --git a/LayoutTests/compositing/tiling/tiled-layer-resize-expected.txt b/LayoutTests/compositing/tiling/tiled-layer-resize-expected.txt index ff0dcc880a5bf..c542460b892f9 100644 --- a/LayoutTests/compositing/tiling/tiled-layer-resize-expected.txt +++ b/LayoutTests/compositing/tiling/tiled-layer-resize-expected.txt @@ -1,5 +1,6 @@ Tiled layer (GraphicsLayer + (anchor 0.00 0.00) (bounds 808.00 2121.00) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/visible-rect/2d-transformed-expected.txt b/LayoutTests/compositing/visible-rect/2d-transformed-expected.txt index 5d4fa169b05c3..de5f2bac89d09 100644 --- a/LayoutTests/compositing/visible-rect/2d-transformed-expected.txt +++ b/LayoutTests/compositing/visible-rect/2d-transformed-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 502.00 202.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=1 height=1) (position 1.00 1.00) (bounds 500.00 200.00) (children 3 diff --git a/LayoutTests/compositing/visible-rect/3d-transform-style-expected.txt b/LayoutTests/compositing/visible-rect/3d-transform-style-expected.txt index 5703d5269f80f..d4870ede75028 100644 --- a/LayoutTests/compositing/visible-rect/3d-transform-style-expected.txt +++ b/LayoutTests/compositing/visible-rect/3d-transform-style-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,12 +11,12 @@ (bounds 204.00 204.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 200.00 200.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.07 0.07 1.00 -0.00] [0.00 0.00 0.00 1.00]) (children 1 (GraphicsLayer - (bounds 200.00 0.00) (preserves3D 1) (children 1 (GraphicsLayer @@ -34,12 +35,12 @@ (bounds 204.00 204.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 200.00 200.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.07 0.07 1.00 -0.00] [0.00 0.00 0.00 1.00]) (children 1 (GraphicsLayer - (bounds 200.00 0.00) (preserves3D 1) (children 1 (GraphicsLayer diff --git a/LayoutTests/compositing/visible-rect/3d-transformed-expected.txt b/LayoutTests/compositing/visible-rect/3d-transformed-expected.txt index e776f0f0a57a4..472d923165f65 100644 --- a/LayoutTests/compositing/visible-rect/3d-transformed-expected.txt +++ b/LayoutTests/compositing/visible-rect/3d-transformed-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 204.00 204.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 200.00 200.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.07 0.07 1.00 -0.00] [0.00 0.00 0.00 1.00]) @@ -29,6 +31,7 @@ (bounds 204.00 204.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 200.00 200.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.07 0.07 1.00 -0.00] [0.00 0.00 0.00 1.00]) diff --git a/LayoutTests/compositing/visible-rect/animated-expected.txt b/LayoutTests/compositing/visible-rect/animated-expected.txt index 7d5b805482dcd..2a89578402877 100644 --- a/LayoutTests/compositing/visible-rect/animated-expected.txt +++ b/LayoutTests/compositing/visible-rect/animated-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 502.00 202.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=1 height=1) (position 1.00 1.00) (bounds 500.00 200.00) (children 1 diff --git a/LayoutTests/compositing/visible-rect/animated-from-none-expected.txt b/LayoutTests/compositing/visible-rect/animated-from-none-expected.txt index 4ebb3b5158f1c..6aa439142f99a 100644 --- a/LayoutTests/compositing/visible-rect/animated-from-none-expected.txt +++ b/LayoutTests/compositing/visible-rect/animated-from-none-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 502.00 202.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=1 height=1) (position 1.00 1.00) (bounds 500.00 200.00) (children 1 @@ -17,6 +19,7 @@ (position -100.00 0.00) (bounds 200.00 200.00) (contentsOpaque 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) ) ) ) diff --git a/LayoutTests/compositing/visible-rect/clipped-visible-rect-expected.txt b/LayoutTests/compositing/visible-rect/clipped-visible-rect-expected.txt index d975a62cc8138..c78a39ebb96f7 100644 --- a/LayoutTests/compositing/visible-rect/clipped-visible-rect-expected.txt +++ b/LayoutTests/compositing/visible-rect/clipped-visible-rect-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 800.00 600.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 502.00 202.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=1 height=1) (position 1.00 1.00) (bounds 500.00 200.00) (children 3 diff --git a/LayoutTests/compositing/visible-rect/flipped-preserve-3d-expected.txt b/LayoutTests/compositing/visible-rect/flipped-preserve-3d-expected.txt index 9c3d7a453d6bf..7a07420d02318 100644 --- a/LayoutTests/compositing/visible-rect/flipped-preserve-3d-expected.txt +++ b/LayoutTests/compositing/visible-rect/flipped-preserve-3d-expected.txt @@ -5,6 +5,7 @@ Some text here. Description Some text here. (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 615.00) (children 1 (GraphicsLayer @@ -21,12 +22,12 @@ Some text here. (anchor 0.57 0.50) (bounds 440.00 440.00) (preserves3D 1) - (transform [-1.00 0.00 -0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) + (transform [-1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) (children 1 (GraphicsLayer (bounds 420.00 420.00) (contentsOpaque 1) - (transform [-1.00 0.00 -0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) + (transform [-1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 -1.00 0.00] [0.00 0.00 0.00 1.00]) (children 1 (GraphicsLayer (bounds 420.00 420.00) @@ -40,24 +41,24 @@ Some text here. (bounds 418.00 510.00) (children 3 (GraphicsLayer + (offsetFromRenderer width=-3000 height=0) (position -3000.00 0.00) (anchor 0.94 0.50) (bounds 3418.00 120.00) - (usingTiledLayer 1) (drawsContent 1) ) (GraphicsLayer + (offsetFromRenderer width=-3000 height=0) (position -3000.00 120.00) (anchor 0.94 0.50) (bounds 3418.00 120.00) - (usingTiledLayer 1) (drawsContent 1) ) (GraphicsLayer + (offsetFromRenderer width=-3000 height=0) (position -3000.00 240.00) (anchor 0.94 0.50) (bounds 3418.00 120.00) - (usingTiledLayer 1) (drawsContent 1) ) ) diff --git a/LayoutTests/compositing/visible-rect/iframe-no-layers-expected.txt b/LayoutTests/compositing/visible-rect/iframe-no-layers-expected.txt index 981b9437b181d..7dcf08faebe56 100644 --- a/LayoutTests/compositing/visible-rect/iframe-no-layers-expected.txt +++ b/LayoutTests/compositing/visible-rect/iframe-no-layers-expected.txt @@ -1,10 +1,11 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 1508.00 1516.00) (children 1 (GraphicsLayer (bounds 1508.00 1516.00) - (contentsOpaque 1) + (drawsContent 1) (children 1 (GraphicsLayer (position 8.00 8.00) diff --git a/LayoutTests/compositing/visible-rect/nested-transform-expected.txt b/LayoutTests/compositing/visible-rect/nested-transform-expected.txt index 0174c2e9144fe..77d0b2f766d1c 100644 --- a/LayoutTests/compositing/visible-rect/nested-transform-expected.txt +++ b/LayoutTests/compositing/visible-rect/nested-transform-expected.txt @@ -1,4 +1,5 @@ (GraphicsLayer + (anchor 0.00 0.00) (bounds 785.00 669.00) (children 1 (GraphicsLayer @@ -10,6 +11,7 @@ (bounds 304.00 304.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 300.00 300.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.26 0.26 1.00 -0.00] [0.00 0.00 0.00 1.00]) @@ -42,6 +44,7 @@ (bounds 304.00 304.00) (children 1 (GraphicsLayer + (offsetFromRenderer width=2 height=2) (position 2.00 2.00) (bounds 300.00 300.00) (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.26 0.26 1.00 -0.00] [0.00 0.00 0.00 1.00]) diff --git a/LayoutTests/compositing/webgl/webgl-nonpremultiplied-blend.html b/LayoutTests/compositing/webgl/webgl-nonpremultiplied-blend.html deleted file mode 100644 index cd8a43b4ce117..0000000000000 --- a/LayoutTests/compositing/webgl/webgl-nonpremultiplied-blend.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - diff --git a/LayoutTests/contentfiltering/blocked-page-opaque-origin-expected.txt b/LayoutTests/contentfiltering/blocked-page-opaque-origin-expected.txt new file mode 100644 index 0000000000000..f9acce384f757 --- /dev/null +++ b/LayoutTests/contentfiltering/blocked-page-opaque-origin-expected.txt @@ -0,0 +1,4 @@ + + +PASS The page shown in place of a blocked document has an opaque origin + diff --git a/LayoutTests/contentfiltering/blocked-page-opaque-origin.html b/LayoutTests/contentfiltering/blocked-page-opaque-origin.html new file mode 100644 index 0000000000000..a0a40717d04a6 --- /dev/null +++ b/LayoutTests/contentfiltering/blocked-page-opaque-origin.html @@ -0,0 +1,26 @@ + + + + + diff --git a/LayoutTests/crypto/subtle/rsa-oaep-import-key-decrypt-leading-zeros-expected.txt b/LayoutTests/crypto/subtle/rsa-oaep-import-key-decrypt-leading-zeros-expected.txt new file mode 100644 index 0000000000000..95d1ab23a9ebe --- /dev/null +++ b/LayoutTests/crypto/subtle/rsa-oaep-import-key-decrypt-leading-zeros-expected.txt @@ -0,0 +1,11 @@ +Test decrypting using RSA-OAEP SHA-1 plain texts that start with zero bytes + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS bytesToHexString(plainText) is expectedLeadingZerosPlainText +PASS bytesToHexString(plainText) is expectedAllZerosPlainText +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/crypto/subtle/rsa-oaep-import-key-decrypt-leading-zeros.html b/LayoutTests/crypto/subtle/rsa-oaep-import-key-decrypt-leading-zeros.html new file mode 100644 index 0000000000000..e3eefb07378b8 --- /dev/null +++ b/LayoutTests/crypto/subtle/rsa-oaep-import-key-decrypt-leading-zeros.html @@ -0,0 +1,56 @@ + + + + + + + +

+
+ + + + diff --git a/LayoutTests/css3/calc/cross-fade-calc.html b/LayoutTests/css3/calc/cross-fade-calc.html index 21b93ecf6cacb..376f74896c014 100644 --- a/LayoutTests/css3/calc/cross-fade-calc.html +++ b/LayoutTests/css3/calc/cross-fade-calc.html @@ -5,13 +5,13 @@
+ + + +

+
+
+
+ + diff --git a/LayoutTests/css3/color-filters/color-filter-scrollbar-color.html b/LayoutTests/css3/color-filters/color-filter-scrollbar-color.html new file mode 100644 index 0000000000000..1bcbb7fa4e5ad --- /dev/null +++ b/LayoutTests/css3/color-filters/color-filter-scrollbar-color.html @@ -0,0 +1,59 @@ + + + +-apple-color-filter is applied to scrollbar color + + + + + +

+
+ + diff --git a/LayoutTests/css3/color-filters/color-filter-solid-color-image-expected.html b/LayoutTests/css3/color-filters/color-filter-solid-color-image-expected.html new file mode 100644 index 0000000000000..64162ab81ebae --- /dev/null +++ b/LayoutTests/css3/color-filters/color-filter-solid-color-image-expected.html @@ -0,0 +1,11 @@ + + + + +
diff --git a/LayoutTests/css3/color-filters/color-filter-solid-color-image.html b/LayoutTests/css3/color-filters/color-filter-solid-color-image.html new file mode 100644 index 0000000000000..babb74cd3b1c1 --- /dev/null +++ b/LayoutTests/css3/color-filters/color-filter-solid-color-image.html @@ -0,0 +1,18 @@ + + + +-apple-color-filter is applied to solid color image + + + +
diff --git a/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-expected.txt b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-expected.txt new file mode 100644 index 0000000000000..9976b1209210c --- /dev/null +++ b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-expected.txt @@ -0,0 +1,3 @@ +PASS + + diff --git a/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-of-composited-box-expected.txt b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-of-composited-box-expected.txt new file mode 100644 index 0000000000000..9976b1209210c --- /dev/null +++ b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-of-composited-box-expected.txt @@ -0,0 +1,3 @@ +PASS + + diff --git a/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-of-composited-box.html b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-of-composited-box.html new file mode 100644 index 0000000000000..f963b2e25edaf --- /dev/null +++ b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color-of-composited-box.html @@ -0,0 +1,61 @@ + + + +-apple-color-filter is applied to scrollbar color of composited box (iOS version) + + + + + +

+
+
+
+ + diff --git a/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color.html b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color.html new file mode 100644 index 0000000000000..141ad362540f3 --- /dev/null +++ b/LayoutTests/css3/color-filters/ios/color-filter-scrollbar-color.html @@ -0,0 +1,50 @@ + + + +-apple-color-filter is applied to scrollbar color (iOS version) + + + + + +

+
+ + diff --git a/LayoutTests/css3/images/cross-fade-blending.html b/LayoutTests/css3/images/cross-fade-blending.html index b6183c3f2edf7..6498eac749692 100644 --- a/LayoutTests/css3/images/cross-fade-blending.html +++ b/LayoutTests/css3/images/cross-fade-blending.html @@ -8,12 +8,12 @@ .crossfade1 { - background-image: cross-fade(url(resources/green-10.png), url(resources/green-10.png), 50%); + background-image: cross-fade(url(resources/green-10.png) 50%, url(resources/green-10.png) 50%); } .crossfade2 { - background-image: cross-fade(url(resources/green-10.png), url(resources/green-10-2.png), 50%); + background-image: cross-fade(url(resources/green-10.png) 50%, url(resources/green-10-2.png) 50%); } diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-composited-descendant-expected.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-composited-descendant-expected.html new file mode 100644 index 0000000000000..4db532fe23e28 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-composited-descendant-expected.html @@ -0,0 +1,6 @@ + + + +
+ + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-composited-descendant.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-composited-descendant.html new file mode 100644 index 0000000000000..6e9306430c36a --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-composited-descendant.html @@ -0,0 +1,24 @@ + + + + + + +
+
+
+
+ + + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-nested-drawable-expected.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-nested-drawable-expected.html new file mode 100644 index 0000000000000..931cdb5ca4291 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-nested-drawable-expected.html @@ -0,0 +1,35 @@ + + + +

Test drawing nested drawable elements into a 2D canvas.

+
+
+
+
+
+
+ + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-nested-drawable.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-nested-drawable.html new file mode 100644 index 0000000000000..a9cec7ab9b4be --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-nested-drawable.html @@ -0,0 +1,58 @@ + + + + + +

Test drawing nested drawable elements into a 2D canvas.

+ +
+
+
+
+
+ + + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-redraw-expected.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-redraw-expected.html new file mode 100644 index 0000000000000..23e48929c77c4 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-redraw-expected.html @@ -0,0 +1,6 @@ + + + +
+ + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-redraw.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-redraw.html new file mode 100644 index 0000000000000..35b59f0c6e9f6 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-redraw.html @@ -0,0 +1,35 @@ + + + + +
+
+ + + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-rotated-text-expected.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-rotated-text-expected.html new file mode 100644 index 0000000000000..46f6c9b725d69 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-rotated-text-expected.html @@ -0,0 +1,37 @@ + + + + +

Test drawing a drawable element that contains text into a 2D canvas.

+
+
+ Hello from html-in-canvas! +
I'm multi-line, formatted, + rotated text with emoji (😀), RTL text + من فارسی صحبت میکنم, + vertical text, +

+ 这是垂直文本 +

+ an inline image (), and + + + + SVG + + ! +
+
+ diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-rotated-text.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-rotated-text.html new file mode 100644 index 0000000000000..cba23b43ddd43 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-rotated-text.html @@ -0,0 +1,60 @@ + + + + + + +

Test drawing a drawable element that contains text into a 2D canvas.

+ +
+ Hello from html-in-canvas! +
I'm multi-line, formatted, + rotated text with emoji (😀), RTL text + من فارسی صحبت میکنم, + vertical text, +

+ 这是垂直文本 +

+ an inline image (), and + + + + SVG + + ! +
+
+ + diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-transparent-rect-expected.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-transparent-rect-expected.html new file mode 100644 index 0000000000000..05d352c0fc041 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-transparent-rect-expected.html @@ -0,0 +1,28 @@ + + + +

Test drawing a drawable element with transparent background into a 2D canvas.

+
+
+
+
+ diff --git a/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-transparent-rect.html b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-transparent-rect.html new file mode 100644 index 0000000000000..0be66cdb44e35 --- /dev/null +++ b/LayoutTests/fast/canvas/draw-element-image/2d-drawElementImage-transparent-rect.html @@ -0,0 +1,49 @@ + + + + + +

Test drawing a drawable element with transparent background into a 2D canvas.

+ +
+
+
+ + diff --git a/LayoutTests/fast/canvas/draw-element-image/resources/wolf.jpg b/LayoutTests/fast/canvas/draw-element-image/resources/wolf.jpg new file mode 100644 index 0000000000000..bd060c1a90b76 Binary files /dev/null and b/LayoutTests/fast/canvas/draw-element-image/resources/wolf.jpg differ diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-display-p3-expected.txt b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-display-p3-expected.txt new file mode 100644 index 0000000000000..c1d118e465a91 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-display-p3-expected.txt @@ -0,0 +1,24 @@ +Tests that drawImage() of an HDR video element preserves its HDR values in a float16 canvas and clamps them in an SDR one, and that createImageBitmap() of the video behaves the same way. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +canvas.dataset.colorSpace: display-p3 +canvas.dataset.renderingMode: Accelerated +HDR video transfer function: hlg + +- drawImage() of a video element +PASS HDR video -> float16: peaks within the expected HDR range +PASS HDR video -> unorm8: is within the SDR range +PASS SDR video -> float16: is within the SDR range +PASS SDR video -> unorm8: is within the SDR range + +- drawImage() of an ImageBitmap made from a video element +PASS HDR ImageBitmap -> float16: peaks within the expected HDR range +PASS HDR ImageBitmap -> unorm8: is within the SDR range +PASS SDR ImageBitmap -> float16: is within the SDR range +PASS SDR ImageBitmap -> unorm8: is within the SDR range +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-display-p3.html b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-display-p3.html new file mode 100644 index 0000000000000..8292f7b8b850a --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-display-p3.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-expected.txt b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-expected.txt new file mode 100644 index 0000000000000..df63e1338def5 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-expected.txt @@ -0,0 +1,24 @@ +Tests that drawImage() of an HDR video element preserves its HDR values in a float16 canvas and clamps them in an SDR one, and that createImageBitmap() of the video behaves the same way. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +canvas.dataset.colorSpace: srgb +canvas.dataset.renderingMode: Accelerated +HDR video transfer function: hlg + +- drawImage() of a video element +PASS HDR video -> float16: peaks within the expected HDR range +PASS HDR video -> unorm8: is within the SDR range +PASS SDR video -> float16: is within the SDR range +PASS SDR video -> unorm8: is within the SDR range + +- drawImage() of an ImageBitmap made from a video element +PASS HDR ImageBitmap -> float16: peaks within the expected HDR range +PASS HDR ImageBitmap -> unorm8: is within the SDR range +PASS SDR ImageBitmap -> float16: is within the SDR range +PASS SDR ImageBitmap -> unorm8: is within the SDR range +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-no-gpu-process-expected.txt b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-no-gpu-process-expected.txt new file mode 100644 index 0000000000000..df63e1338def5 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-no-gpu-process-expected.txt @@ -0,0 +1,24 @@ +Tests that drawImage() of an HDR video element preserves its HDR values in a float16 canvas and clamps them in an SDR one, and that createImageBitmap() of the video behaves the same way. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +canvas.dataset.colorSpace: srgb +canvas.dataset.renderingMode: Accelerated +HDR video transfer function: hlg + +- drawImage() of a video element +PASS HDR video -> float16: peaks within the expected HDR range +PASS HDR video -> unorm8: is within the SDR range +PASS SDR video -> float16: is within the SDR range +PASS SDR video -> unorm8: is within the SDR range + +- drawImage() of an ImageBitmap made from a video element +PASS HDR ImageBitmap -> float16: peaks within the expected HDR range +PASS HDR ImageBitmap -> unorm8: is within the SDR range +PASS SDR ImageBitmap -> float16: is within the SDR range +PASS SDR ImageBitmap -> unorm8: is within the SDR range +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-no-gpu-process.html b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-no-gpu-process.html new file mode 100644 index 0000000000000..d09b0e03f870f --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated-no-gpu-process.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated.html b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated.html new file mode 100644 index 0000000000000..831041cfb4e4f --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-accelerated.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-expected.txt b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-expected.txt new file mode 100644 index 0000000000000..b3b0a001275b3 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-expected.txt @@ -0,0 +1,24 @@ +Tests that drawImage() of an HDR video element preserves its HDR values in a float16 canvas and clamps them in an SDR one, and that createImageBitmap() of the video behaves the same way. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +canvas.dataset.colorSpace: srgb +canvas.dataset.renderingMode: Unaccelerated +HDR video transfer function: hlg + +- drawImage() of a video element +PASS HDR video -> float16: peaks within the expected HDR range +PASS HDR video -> unorm8: is within the SDR range +PASS SDR video -> float16: is within the SDR range +PASS SDR video -> unorm8: is within the SDR range + +- drawImage() of an ImageBitmap made from a video element +PASS HDR ImageBitmap -> float16: peaks within the expected HDR range +PASS HDR ImageBitmap -> unorm8: is within the SDR range +PASS SDR ImageBitmap -> float16: is within the SDR range +PASS SDR ImageBitmap -> unorm8: is within the SDR range +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-no-gpu-process-expected.txt b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-no-gpu-process-expected.txt new file mode 100644 index 0000000000000..b3b0a001275b3 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-no-gpu-process-expected.txt @@ -0,0 +1,24 @@ +Tests that drawImage() of an HDR video element preserves its HDR values in a float16 canvas and clamps them in an SDR one, and that createImageBitmap() of the video behaves the same way. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +canvas.dataset.colorSpace: srgb +canvas.dataset.renderingMode: Unaccelerated +HDR video transfer function: hlg + +- drawImage() of a video element +PASS HDR video -> float16: peaks within the expected HDR range +PASS HDR video -> unorm8: is within the SDR range +PASS SDR video -> float16: is within the SDR range +PASS SDR video -> unorm8: is within the SDR range + +- drawImage() of an ImageBitmap made from a video element +PASS HDR ImageBitmap -> float16: peaks within the expected HDR range +PASS HDR ImageBitmap -> unorm8: is within the SDR range +PASS SDR ImageBitmap -> float16: is within the SDR range +PASS SDR ImageBitmap -> unorm8: is within the SDR range +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-no-gpu-process.html b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-no-gpu-process.html new file mode 100644 index 0000000000000..d2c71ab7e4b20 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated-no-gpu-process.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated.html b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated.html new file mode 100644 index 0000000000000..bdb14156f1c21 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video-unaccelerated.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video.js b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video.js new file mode 100644 index 0000000000000..e7933949fcae2 --- /dev/null +++ b/LayoutTests/fast/canvas/hdr/float16-canvas-drawimage-video.js @@ -0,0 +1,184 @@ +description("Tests that drawImage() of an HDR video element preserves its HDR values in a float16 canvas and clamps them in an SDR one, and that createImageBitmap() of the video behaves the same way."); + +// drawImage() of a video ignores globalCompositeOperation on the CG fast path, which passes no +// ImagePaintingOptions at all, so this only uses source-over. + +window.jsTestIsAsync = true; + +const colorSpace = canvas.dataset.colorSpace; +const renderingMode = canvas.dataset.renderingMode; +debug(`canvas.dataset.colorSpace: ${colorSpace}`); +debug(`canvas.dataset.renderingMode: ${renderingMode}`); + +const componentsPerPixel = 4; +// The HDR video is 4K and drawImage() scales the whole frame into the destination, so keep the +// destination large enough that averaging cannot wash the HDR region below the SDR range. +const canvasSize = 128; +const drawSize = canvasSize / 2; + +const hdrVideoURL = "../resources/hdr.mp4"; +const sdrVideoURL = "../../../media/content/test.mp4"; + +// The maximum component value an SDR (unorm8) buffer can represent, plus a small allowance for the +// color-space conversion that drawing performs. +const sdrMaximum = 1 + 1.5 / 255; + +// This video's HLG content peaks between 1.9971 and 2.3828 in the extended encoding getImageData() +// returns, measured across every configuration this test runs in: both destination color spaces, +// accelerated and unaccelerated, with and without the GPU process, and through both drawImage() and +// createImageBitmap(). These bounds leave room around that span, so they survive changes in how the +// platform applies the transfer function while still catching it being applied at the wrong +// strength, or not at all, which would land near 1.0. +const hdrMinimum = 1.6; +const hdrMaximum = 3.0; + +function createContext(colorType) +{ + const element = document.createElement("canvas"); + element.width = canvasSize; + element.height = canvasSize; + const settings = { colorSpace, colorType }; + if (renderingMode) + settings.renderingModeForTesting = renderingMode; + const context = element.getContext("2d", settings); + if (!context) { + testFailed(`Could not create a "${colorType}" 2D context`); + return null; + } + if (context.getContextAttributes().colorType != colorType) + testFailed(`Expected colorType "${colorType}", got "${context.getContextAttributes().colorType}"`); + return context; +} + +function loadVideo(url) +{ + const video = document.createElement("video"); + return new Promise((resolve, reject) => { + video.requestVideoFrameCallback(() => resolve(video)); + video.onerror = () => reject(new Error(`Failed to load ${url}`)); + video.src = url; + }); +} + +// There is no way to read a video element's transfer function from script, so borrow WebCodecs +// purely as an observation tool: a VideoFrame built from the element exposes it. Used only to make +// a failure legible, not as part of what is being tested. +function transferFunctionOf(video) +{ + const frame = new VideoFrame(video); + const transfer = frame.colorSpace.transfer; + frame.close(); + return transfer; +} + +function maxComponentInDrawnArea(context, drawnSize) +{ + const data = context.getImageData(0, 0, drawnSize, drawnSize, { pixelFormat: "rgba-float16" }).data; + let maxComponent = -Infinity; + let maxAlpha = -Infinity; + let brightestPixel = null; + for (let pixel = 0; pixel < drawnSize * drawnSize; ++pixel) { + // Ignore alpha, which is not extended-range. + for (let component = 0; component < componentsPerPixel - 1; ++component) { + const value = data[pixel * componentsPerPixel + component]; + if (value > maxComponent) { + maxComponent = value; + brightestPixel = Array.from(data.slice(pixel * componentsPerPixel, (pixel + 1) * componentsPerPixel)); + } + } + maxAlpha = Math.max(maxAlpha, data[pixel * componentsPerPixel + componentsPerPixel - 1]); + } + return { maxComponent, maxAlpha, brightestPixel }; +} + +function formatPixel(pixel) +{ + return pixel ? `[${pixel.map(v => v.toFixed(4)).join(", ")}]` : "(none)"; +} + +// Components can legitimately be negative: BT.2020 content converted into an extended sRGB or +// Display P3 space falls outside that gamut, so only the maximum is meaningful here. +function verifyDrawnArea(label, context, expectHDR) +{ + const { maxComponent, maxAlpha, brightestPixel } = maxComponentInDrawnArea(context, drawSize); + + if (!(maxComponent > 0)) { + testFailed(`${label}: no red, green or blue component is above 0 (maximum alpha ${maxAlpha.toFixed(4)}, first pixel ${formatPixel(brightestPixel)}).`); + return; + } + + if (expectHDR) { + if (maxComponent > hdrMinimum && maxComponent < hdrMaximum) + testPassed(`${label}: peaks within the expected HDR range`); + else + testFailed(`${label}: expected a maximum component in (${hdrMinimum}, ${hdrMaximum}), but it was ${maxComponent.toFixed(4)}, brightest pixel ${formatPixel(brightestPixel)}`); + return; + } + if (maxComponent <= sdrMaximum) + testPassed(`${label}: is within the SDR range`); + else + testFailed(`${label}: expected all components <= ${sdrMaximum.toFixed(4)}, but the maximum was ${maxComponent.toFixed(4)}, brightest pixel ${formatPixel(brightestPixel)}`); +} + +function drawAndVerify(label, source, destinationColorType, expectHDR) +{ + const destination = createContext(destinationColorType); + if (!destination) + return; + + destination.drawImage(source, 0, 0, drawSize, drawSize); + verifyDrawnArea(label, destination, expectHDR); +} + +const colorTypes = ["float16", "unorm8"]; + +async function runTests() +{ + let hdrVideo; + let sdrVideo; + try { + hdrVideo = await loadVideo(hdrVideoURL); + sdrVideo = await loadVideo(sdrVideoURL); + } catch (error) { + testFailed(`${error.message}`); + finishJSTest(); + return; + } + + const transfer = transferFunctionOf(hdrVideo); + if (transfer != "pq" && transfer != "hlg") { + testFailed(`The video decoded with transfer function "${transfer}", not "pq" or "hlg", so this platform cannot exercise the HDR video path.`); + finishJSTest(); + return; + } + debug(`HDR video transfer function: ${transfer}`); + + debug(`\n- drawImage() of a video element`); + for (const destinationColorType of colorTypes) + drawAndVerify(`HDR video -> ${destinationColorType}`, hdrVideo, destinationColorType, destinationColorType == "float16"); + for (const destinationColorType of colorTypes) + drawAndVerify(`SDR video -> ${destinationColorType}`, sdrVideo, destinationColorType, false); + + debug(`\n- drawImage() of an ImageBitmap made from a video element`); + const hdrImageBitmap = await createImageBitmap(hdrVideo); + for (const destinationColorType of colorTypes) + drawAndVerify(`HDR ImageBitmap -> ${destinationColorType}`, hdrImageBitmap, destinationColorType, destinationColorType == "float16"); + hdrImageBitmap.close(); + + const sdrImageBitmap = await createImageBitmap(sdrVideo); + for (const destinationColorType of colorTypes) + drawAndVerify(`SDR ImageBitmap -> ${destinationColorType}`, sdrImageBitmap, destinationColorType, false); + sdrImageBitmap.close(); + + finishJSTest(); +} + +if (window.internals) { + internals.clearMemoryCache(); + internals.setScreenContentsFormatsForTesting(["RGBA8", "RGBA16F"]); +} + +runTests().catch(error => { + testFailed(`Unexpected exception: ${error}`); + finishJSTest(); +}); diff --git a/LayoutTests/fast/css-grid-layout/subgrid-continue-collapse-expected.html b/LayoutTests/fast/css-grid-layout/subgrid-continue-collapse-expected.html new file mode 100644 index 0000000000000..44856f96f793b --- /dev/null +++ b/LayoutTests/fast/css-grid-layout/subgrid-continue-collapse-expected.html @@ -0,0 +1,11 @@ + + +

Test passes if there is a green square below, 50px from the left.

+
diff --git a/LayoutTests/fast/css-grid-layout/subgrid-continue-collapse.html b/LayoutTests/fast/css-grid-layout/subgrid-continue-collapse.html new file mode 100644 index 0000000000000..19cb969527b8a --- /dev/null +++ b/LayoutTests/fast/css-grid-layout/subgrid-continue-collapse.html @@ -0,0 +1,27 @@ + +continue: collapse does not apply to a grid container, so a subgrid with it is still a subgrid + + +

Test passes if there is a green square below, 50px from the left.

+
+
+
+
+
diff --git a/LayoutTests/fast/css-grid-layout/subgrid-continue-discard-expected.html b/LayoutTests/fast/css-grid-layout/subgrid-continue-discard-expected.html new file mode 100644 index 0000000000000..44856f96f793b --- /dev/null +++ b/LayoutTests/fast/css-grid-layout/subgrid-continue-discard-expected.html @@ -0,0 +1,11 @@ + + +

Test passes if there is a green square below, 50px from the left.

+
diff --git a/LayoutTests/fast/css-grid-layout/subgrid-continue-discard.html b/LayoutTests/fast/css-grid-layout/subgrid-continue-discard.html new file mode 100644 index 0000000000000..7480738fa4a83 --- /dev/null +++ b/LayoutTests/fast/css-grid-layout/subgrid-continue-discard.html @@ -0,0 +1,27 @@ + +continue: discard does not apply to a grid container, so a subgrid with it is still a subgrid + + +

Test passes if there is a green square below, 50px from the left.

+
+
+
+
+
diff --git a/LayoutTests/fast/css/custom-properties/at-property-initial-value-crash-expected.txt b/LayoutTests/fast/css/custom-properties/at-property-initial-value-crash-expected.txt new file mode 100644 index 0000000000000..730ebf66a0da4 --- /dev/null +++ b/LayoutTests/fast/css/custom-properties/at-property-initial-value-crash-expected.txt @@ -0,0 +1 @@ +This test passes if it doesn't crash. diff --git a/LayoutTests/fast/css/custom-properties/at-property-initial-value-crash.html b/LayoutTests/fast/css/custom-properties/at-property-initial-value-crash.html new file mode 100644 index 0000000000000..d829a2c75a757 --- /dev/null +++ b/LayoutTests/fast/css/custom-properties/at-property-initial-value-crash.html @@ -0,0 +1,12 @@ + + +This test passes if it doesn't crash. diff --git a/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt b/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt index 0b7188278c8ce..d17059457af70 100644 --- a/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt +++ b/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt @@ -23,24 +23,32 @@ PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png Unprefixed -PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image") is "cross-fade(url(\"dummy://example.png\"), url(\"dummy://example.png\"), 0.5)" -PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "cross-fade(url(\"dummy://example.png\"), url(\"dummy://example.png\"), 1)" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 25%, url(dummy://b.png) 75%)", "background-image") is "cross-fade(url(\"dummy://a.png\") 25%, url(\"dummy://b.png\") 75%)" +PASS testCrossfade("background-image: cross-fade(25% url(dummy://a.png), 75% url(dummy://b.png))", "background-image") is "cross-fade(url(\"dummy://a.png\") 25%, url(\"dummy://b.png\") 75%)" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png), url(dummy://b.png))", "background-image") is "cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"))" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png))", "background-image") is "cross-fade(url(\"dummy://a.png\"))" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 50%, url(dummy://b.png), url(dummy://c.png) 10%)", "background-image") is "cross-fade(url(\"dummy://a.png\") 50%, url(\"dummy://b.png\"), url(\"dummy://c.png\") 10%)" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 20%, url(dummy://b.png) 20%)", "background-image") is "cross-fade(url(\"dummy://a.png\") 20%, url(\"dummy://b.png\") 20%)" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 70%, url(dummy://b.png) 70%)", "background-image") is "cross-fade(url(\"dummy://a.png\") 70%, url(\"dummy://b.png\") 70%)" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 0%, url(dummy://b.png) 0%)", "background-image") is "cross-fade(url(\"dummy://a.png\") 0%, url(\"dummy://b.png\") 0%)" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) calc(150%), url(dummy://b.png))", "background-image") is "cross-fade(url(\"dummy://a.png\") 100%, url(\"dummy://b.png\"))" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) calc(-50%), url(dummy://b.png))", "background-image") is "cross-fade(url(\"dummy://a.png\") 0%, url(\"dummy://b.png\"))" Mixed -PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), url(\"dummy://example.png\"), 0.5)" -PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), 0.5)" -PASS testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "cross-fade(cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), -webkit-cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), 0.5)" +PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png) 25%, url(dummy://b.png) 75%), url(dummy://c.png), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(\"dummy://a.png\") 25%, url(\"dummy://b.png\") 75%), url(\"dummy://c.png\"), 0.5)" +PASS testCrossfade("background-image: cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%) 40%, url(dummy://c.png))", "background-image") is "cross-fade(-webkit-cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25) 40%, url(\"dummy://c.png\"))" Invalid values PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image") is "none" PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image") is "none" -PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image") is "none" PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image") is "none" -PASS testCrossfade("background-image: cross-fade(url(dummy://example.png))", "background-image") is "none" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png), url(dummy://b.png), 50%)", "background-image") is "none" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 50% 50%)", "background-image") is "none" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) 150%)", "background-image") is "none" +PASS testCrossfade("background-image: cross-fade(url(dummy://a.png) -10%)", "background-image") is "none" PASS testCrossfade("background-image: cross-fade(), url(dummy://example.png))", "background-image") is "none" -PASS testCrossfade("background-image: cross-fade(url(", "background-image") is "none" PASS testCrossfade("background-image: cross-fade(10px 20% 5px #bbb)", "background-image") is "none" PASS testCrossfade("background-image: cross-fade(cross-fade(cross-fade()))", "background-image") is "none" PASS testCrossfade("background-image: cross-fade(20%, url(dummy://a.png), url(dummy://b.png))", "background-image") is "none" diff --git a/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html b/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html index 388dbe555ce92..14e77a26319c4 100644 --- a/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html +++ b/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html @@ -58,28 +58,36 @@ debug('

Unprefixed

'); -shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image")', "cross-fade(url(\"dummy://example.png\"), url(\"dummy://example.png\"), 0.5)"); -shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', "cross-fade(url(\"dummy://example.png\"), url(\"dummy://example.png\"), 1)"); +// https://drafts.csswg.org/css-images-4/#funcdef-cross-fade +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) 25%, url(dummy://b.png) 75%)", "background-image")', "cross-fade(url(\"dummy://a.png\") 25%, url(\"dummy://b.png\") 75%)"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(25% url(dummy://a.png), 75% url(dummy://b.png))", "background-image")', "cross-fade(url(\"dummy://a.png\") 25%, url(\"dummy://b.png\") 75%)"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png), url(dummy://b.png))", "background-image")', "cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"))"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png))", "background-image")', "cross-fade(url(\"dummy://a.png\"))"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) 50%, url(dummy://b.png), url(dummy://c.png) 10%)", "background-image")', "cross-fade(url(\"dummy://a.png\") 50%, url(\"dummy://b.png\"), url(\"dummy://c.png\") 10%)"); + +// Percentages are kept as specified; normalizing them is only for sizing and painting. +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) 20%, url(dummy://b.png) 20%)", "background-image")', "cross-fade(url(\"dummy://a.png\") 20%, url(\"dummy://b.png\") 20%)"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) 70%, url(dummy://b.png) 70%)", "background-image")', "cross-fade(url(\"dummy://a.png\") 70%, url(\"dummy://b.png\") 70%)"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) 0%, url(dummy://b.png) 0%)", "background-image")', "cross-fade(url(\"dummy://a.png\") 0%, url(\"dummy://b.png\") 0%)"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) calc(150%), url(dummy://b.png))", "background-image")', "cross-fade(url(\"dummy://a.png\") 100%, url(\"dummy://b.png\"))"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(url(dummy://a.png) calc(-50%), url(dummy://b.png))", "background-image")', "cross-fade(url(\"dummy://a.png\") 0%, url(\"dummy://b.png\"))"); debug('

Mixed

'); -shouldBeEqualToString('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image")', - "-webkit-cross-fade(cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), url(\"dummy://example.png\"), 0.5)"); -shouldBeEqualToString('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")', - "-webkit-cross-fade(cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), 0.5)"); -shouldBeEqualToString('testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")', - "cross-fade(cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), -webkit-cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25), 0.5)"); +shouldBeEqualToString('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png) 25%, url(dummy://b.png) 75%), url(dummy://c.png), 50%)", "background-image")', "-webkit-cross-fade(cross-fade(url(\"dummy://a.png\") 25%, url(\"dummy://b.png\") 75%), url(\"dummy://c.png\"), 0.5)"); +shouldBeEqualToString('testCrossfade("background-image: cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%) 40%, url(dummy://c.png))", "background-image")', "cross-fade(-webkit-cross-fade(url(\"dummy://a.png\"), url(\"dummy://b.png\"), 0.25) 40%, url(\"dummy://c.png\"))"); debug('

Invalid values

'); shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image")', '"none"'); shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image")', '"none"'); -shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image")', '"none"'); shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image")', '"none"'); -shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png))", "background-image")', '"none"'); +shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png), url(dummy://b.png), 50%)", "background-image")', '"none"'); +shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png) 50% 50%)", "background-image")', '"none"'); +shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png) 150%)", "background-image")', '"none"'); +shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png) -10%)", "background-image")', '"none"'); shouldBe('testCrossfade("background-image: cross-fade(), url(dummy://example.png))", "background-image")', '"none"'); -shouldBe('testCrossfade("background-image: cross-fade(url(", "background-image")', '"none"'); shouldBe('testCrossfade("background-image: cross-fade(10px 20% 5px #bbb)", "background-image")', '"none"'); shouldBe('testCrossfade("background-image: cross-fade(cross-fade(cross-fade()))", "background-image")', '"none"'); shouldBe('testCrossfade("background-image: cross-fade(20%, url(dummy://a.png), url(dummy://b.png))", "background-image")', '"none"'); diff --git a/LayoutTests/fast/css/revert-layer-link-match-native-appearance-expected.html b/LayoutTests/fast/css/revert-layer-link-match-native-appearance-expected.html new file mode 100644 index 0000000000000..259a01c78beb0 --- /dev/null +++ b/LayoutTests/fast/css/revert-layer-link-match-native-appearance-expected.html @@ -0,0 +1,25 @@ + + + + +revert-layer rollback must use the per-link-match origin when disabling native appearance + + + + + + + + + diff --git a/LayoutTests/fast/css/revert-layer-link-match-native-appearance.html b/LayoutTests/fast/css/revert-layer-link-match-native-appearance.html new file mode 100644 index 0000000000000..d59cd64ebce8b --- /dev/null +++ b/LayoutTests/fast/css/revert-layer-link-match-native-appearance.html @@ -0,0 +1,36 @@ + + + + +revert-layer rollback must use the per-link-match origin when disabling native appearance + + + + + + + + + + diff --git a/LayoutTests/fast/css/text-scale/parsing-dynamic-expected.txt b/LayoutTests/fast/css/text-scale/parsing-dynamic-expected.txt new file mode 100644 index 0000000000000..15176c2f48741 --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-dynamic-expected.txt @@ -0,0 +1,18 @@ + +PASS Inserting and removing a meta in head +PASS Inserting and removing a meta in body +PASS Inserting and removing an ancestor of a meta +PASS Changing a disconnected meta has no effect until it is inserted +PASS Changing the content attribute +PASS Changing the name attribute +PASS Changing the name and content attributes of a meta that starts with no content +PASS Inserting a meta before the first one replaces it +PASS Only the first meta decides +PASS Removing a first meta with no content attribute lets the second meta apply +PASS Changing the name of the first meta lets the second meta apply +PASS Changing the name of a first meta with no content attribute lets the second meta apply +PASS Replacing the first meta +PASS Moving a meta between head and body +PASS Meta in a shadow tree is ignored +PASS Moving a meta from a frameless document into this document and back + diff --git a/LayoutTests/fast/css/text-scale/parsing-dynamic.html b/LayoutTests/fast/css/text-scale/parsing-dynamic.html new file mode 100644 index 0000000000000..08c6150b80f8d --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-dynamic.html @@ -0,0 +1,195 @@ + + + + + + + + + +
+ + + diff --git a/LayoutTests/fast/css/text-scale/parsing-flag-disabled-expected.txt b/LayoutTests/fast/css/text-scale/parsing-flag-disabled-expected.txt new file mode 100644 index 0000000000000..e18ddd13d5dea --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-flag-disabled-expected.txt @@ -0,0 +1,4 @@ + +PASS Parser-inserted meta with content=scale gives legacy when the feature is disabled +PASS Dynamic changes give legacy when the feature is disabled + diff --git a/LayoutTests/fast/css/text-scale/parsing-flag-disabled.html b/LayoutTests/fast/css/text-scale/parsing-flag-disabled.html new file mode 100644 index 0000000000000..63b5a20948cbd --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-flag-disabled.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/LayoutTests/fast/css/text-scale/parsing-flag-runtime-toggle-expected.txt b/LayoutTests/fast/css/text-scale/parsing-flag-runtime-toggle-expected.txt new file mode 100644 index 0000000000000..881bc213611a4 --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-flag-runtime-toggle-expected.txt @@ -0,0 +1,3 @@ + +PASS Toggling the flag at runtime updates the mode without a meta change + diff --git a/LayoutTests/fast/css/text-scale/parsing-flag-runtime-toggle.html b/LayoutTests/fast/css/text-scale/parsing-flag-runtime-toggle.html new file mode 100644 index 0000000000000..3869330485be5 --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-flag-runtime-toggle.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/LayoutTests/fast/css/text-scale/parsing-static-expected.txt b/LayoutTests/fast/css/text-scale/parsing-static-expected.txt new file mode 100644 index 0000000000000..e55def25924a2 --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-static-expected.txt @@ -0,0 +1,27 @@ + +PASS No text-scale meta gives legacy +PASS Unrelated meta gives legacy +PASS content=scale gives scale +PASS content=SCALE gives scale +PASS content=Scale gives scale +PASS content=legacy gives legacy +PASS content=LEGACY gives legacy +PASS Invalid content gives legacy +PASS content=scaled gives legacy +PASS Empty content gives legacy +PASS Missing content gives legacy +PASS name=TEXT-SCALE is matched +PASS name=Text-Scale is matched +PASS name=text-scale-foo is not matched +PASS name=textscale is not matched +PASS http-equiv=text-scale is not matched +PASS First meta wins: legacy then scale +PASS First meta wins: scale then legacy +PASS First meta wins even when its content is invalid +PASS First meta wins even when its content is empty +PASS First meta wins even when it has no content attribute +PASS Unrelated meta before a text-scale meta is ignored +PASS Meta in body counts +PASS Meta in head comes before meta in body +PASS Meta inside template content is ignored + diff --git a/LayoutTests/fast/css/text-scale/parsing-static.html b/LayoutTests/fast/css/text-scale/parsing-static.html new file mode 100644 index 0000000000000..b7f871d27bde6 --- /dev/null +++ b/LayoutTests/fast/css/text-scale/parsing-static.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + diff --git a/LayoutTests/fast/dom/HTMLLinkElement/link-expect-in-shadow-tree-removed-crash-expected.txt b/LayoutTests/fast/dom/HTMLLinkElement/link-expect-in-shadow-tree-removed-crash-expected.txt new file mode 100644 index 0000000000000..06e8735bef51e --- /dev/null +++ b/LayoutTests/fast/dom/HTMLLinkElement/link-expect-in-shadow-tree-removed-crash-expected.txt @@ -0,0 +1 @@ +PASS if the web process did not crash. diff --git a/LayoutTests/fast/dom/HTMLLinkElement/link-expect-in-shadow-tree-removed-crash.html b/LayoutTests/fast/dom/HTMLLinkElement/link-expect-in-shadow-tree-removed-crash.html new file mode 100644 index 0000000000000..548945f342be3 --- /dev/null +++ b/LayoutTests/fast/dom/HTMLLinkElement/link-expect-in-shadow-tree-removed-crash.html @@ -0,0 +1,40 @@ + + + +
+ + + diff --git a/LayoutTests/fast/dom/Range/range-end-moved-out-of-common-root-during-iframe-unload-expected.txt b/LayoutTests/fast/dom/Range/range-end-moved-out-of-common-root-during-iframe-unload-expected.txt new file mode 100644 index 0000000000000..4516dccca0862 --- /dev/null +++ b/LayoutTests/fast/dom/Range/range-end-moved-out-of-common-root-during-iframe-unload-expected.txt @@ -0,0 +1,4 @@ + +PASS deleteContents() should not remove nodes outside the common ancestor when an iframe unload handler moves the range end +PASS extractContents() should not remove nodes outside the common ancestor when an iframe unload handler moves the range end + diff --git a/LayoutTests/fast/dom/Range/range-end-moved-out-of-common-root-during-iframe-unload.html b/LayoutTests/fast/dom/Range/range-end-moved-out-of-common-root-during-iframe-unload.html new file mode 100644 index 0000000000000..f518efba20197 --- /dev/null +++ b/LayoutTests/fast/dom/Range/range-end-moved-out-of-common-root-during-iframe-unload.html @@ -0,0 +1,67 @@ + + + + + + + + + + diff --git a/LayoutTests/fast/dom/rangeIntersectsRange-expected.txt b/LayoutTests/fast/dom/rangeIntersectsRange-expected.txt index 38b43c4d7f6c0..459e23e7f036e 100644 --- a/LayoutTests/fast/dom/rangeIntersectsRange-expected.txt +++ b/LayoutTests/fast/dom/rangeIntersectsRange-expected.txt @@ -36,6 +36,12 @@ PASS internals.rangeIntersectsRange(contentsRange(body), contentsRange(f), 'Comp PASS internals.rangeIntersectsRange(contentsRange(f), contentsRange(body), 'ComposedTree') is false PASS internals.rangeIntersectsRange(contentsRange(body), contentsRange(h), 'ComposedTree') is true PASS internals.rangeIntersectsRange(contentsRange(h), contentsRange(body), 'ComposedTree') is true +PASS internals.rangeIntersectsRange(contentsRange(body), contentsRange(c), 'ComposedTreeIncludingPseudoElements') is true +PASS internals.rangeIntersectsRange(contentsRange(c), contentsRange(body), 'ComposedTreeIncludingPseudoElements') is true +PASS internals.rangeIntersectsRange(contentsRange(body), contentsRange(h), 'ComposedTreeIncludingPseudoElements') is true +PASS internals.rangeIntersectsRange(contentsRange(h), contentsRange(body), 'ComposedTreeIncludingPseudoElements') is true +PASS internals.rangeIntersectsRange(contentsRange(a), contentsRange(b), 'ComposedTreeIncludingPseudoElements') is false +PASS internals.rangeIntersectsRange(contentsRange(b), contentsRange(a), 'ComposedTreeIncludingPseudoElements') is false PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/fast/dom/rangeIntersectsRange.html b/LayoutTests/fast/dom/rangeIntersectsRange.html index bf7734a6c2005..c0de78ca980bb 100644 --- a/LayoutTests/fast/dom/rangeIntersectsRange.html +++ b/LayoutTests/fast/dom/rangeIntersectsRange.html @@ -19,21 +19,24 @@ return range(node, 0, node, node.childNodes.length) } -function shouldIntersectSelf(a) +function shouldIntersectSelf(a, treeType) { - shouldBeTrue("internals.rangeIntersectsRange(" + a + ", " + a + ", 'ComposedTree')") + treeType = treeType || 'ComposedTree' + shouldBeTrue("internals.rangeIntersectsRange(" + a + ", " + a + ", '" + treeType + "')") } -function shouldIntersect(a, b) +function shouldIntersect(a, b, treeType) { - shouldBeTrue("internals.rangeIntersectsRange(" + a + ", " + b + ", 'ComposedTree')") - shouldBeTrue("internals.rangeIntersectsRange(" + b + ", " + a + ", 'ComposedTree')") + treeType = treeType || 'ComposedTree' + shouldBeTrue("internals.rangeIntersectsRange(" + a + ", " + b + ", '" + treeType + "')") + shouldBeTrue("internals.rangeIntersectsRange(" + b + ", " + a + ", '" + treeType + "')") } -function shouldNotIntersect(a, b) +function shouldNotIntersect(a, b, treeType) { - shouldBeFalse("internals.rangeIntersectsRange(" + a + ", " + b + ", 'ComposedTree')") - shouldBeFalse("internals.rangeIntersectsRange(" + b + ", " + a + ", 'ComposedTree')") + treeType = treeType || 'ComposedTree' + shouldBeFalse("internals.rangeIntersectsRange(" + a + ", " + b + ", '" + treeType + "')") + shouldBeFalse("internals.rangeIntersectsRange(" + b + ", " + a + ", '" + treeType + "')") } let documentElement = document.documentElement; @@ -85,5 +88,9 @@ let h = internals.ensureUserAgentShadowRoot(g).firstChild shouldIntersect("contentsRange(body)", "contentsRange(h)") +shouldIntersect("contentsRange(body)", "contentsRange(c)", "ComposedTreeIncludingPseudoElements") +shouldIntersect("contentsRange(body)", "contentsRange(h)", "ComposedTreeIncludingPseudoElements") +shouldNotIntersect("contentsRange(a)", "contentsRange(b)", "ComposedTreeIncludingPseudoElements") + diff --git a/LayoutTests/fast/events/domactivate-dispatched-once-for-click-on-document-expected.txt b/LayoutTests/fast/events/domactivate-dispatched-once-for-click-on-document-expected.txt new file mode 100644 index 0000000000000..8464285752660 --- /dev/null +++ b/LayoutTests/fast/events/domactivate-dispatched-once-for-click-on-document-expected.txt @@ -0,0 +1,9 @@ + +PASS A bubbling click dispatched at the document fires DOMActivate once +PASS A non-bubbling click dispatched at the document fires DOMActivate once +PASS A bubbling click dispatched at the body fires DOMActivate once +PASS composedPath() of a click dispatched at the document contains the document once, followed by the window +PASS DOMActivate from a click dispatched at the document bubbles to the window once +PASS A click dispatched at the document and canceled by a window listener does not fire DOMActivate +PASS A bubbling click dispatched at an iframe's document fires DOMActivate once + diff --git a/LayoutTests/fast/events/domactivate-dispatched-once-for-click-on-document.html b/LayoutTests/fast/events/domactivate-dispatched-once-for-click-on-document.html new file mode 100644 index 0000000000000..726d8dc3fbb16 --- /dev/null +++ b/LayoutTests/fast/events/domactivate-dispatched-once-for-click-on-document.html @@ -0,0 +1,84 @@ + + + + + + diff --git a/LayoutTests/fast/events/mouse-cursor-image-set-expected.txt b/LayoutTests/fast/events/mouse-cursor-image-set-expected.txt index dd0529b72452c..24fe37693bfe1 100644 --- a/LayoutTests/fast/events/mouse-cursor-image-set-expected.txt +++ b/LayoutTests/fast/events/mouse-cursor-image-set-expected.txt @@ -36,7 +36,7 @@ TEST CASE: Explicit hotspot at (5,3) logical in 1x and 2x Cursor Info: type=Custom hotSpot=5,3 image=25x25 TEST CASE: Explicit hotspot at (7,3) logical in 0.7x and 1.4x - should round to nearest integer -Cursor Info: type=Custom hotSpot=7,3 image=30x30 scale=1.4 +Cursor Info: type=Custom hotSpot=10,4 image=30x30 scale=1.4 TEST CASE: Implicit hot-spot at (5,4) physical for 1x and (28,3) physical for 2x Cursor Info: type=Custom hotSpot=5,4 image=25x25 @@ -68,10 +68,10 @@ TEST CASE: Non-existent image in image-set with fallback to 25x25 image Cursor Info: type=Custom hotSpot=0,0 image=25x25 TEST CASE: Explicit hotspot at (5,3) logical in 1x and 2x -Cursor Info: type=Custom hotSpot=5,3 image=30x30 scale=2 +Cursor Info: type=Custom hotSpot=10,6 image=30x30 scale=2 TEST CASE: Explicit hotspot at (7,3) logical in 0.7x and 1.4x - should round to nearest integer -Cursor Info: type=Custom hotSpot=7,3 image=30x30 scale=1.4 +Cursor Info: type=Custom hotSpot=10,4 image=30x30 scale=1.4 TEST CASE: Implicit hot-spot at (5,4) physical for 1x and (28,3) physical for 2x Cursor Info: type=Custom hotSpot=28,3 image=30x30 scale=2 diff --git a/LayoutTests/fast/events/mouse-cursor-image-set-svg-expected.txt b/LayoutTests/fast/events/mouse-cursor-image-set-svg-expected.txt index 7d9185970ea94..0478605794302 100644 --- a/LayoutTests/fast/events/mouse-cursor-image-set-svg-expected.txt +++ b/LayoutTests/fast/events/mouse-cursor-image-set-svg-expected.txt @@ -10,13 +10,13 @@ TEST CASE: 25x25 image at 1x Cursor Info: type=Custom hotSpot=0,0 image=25x25 TEST CASE: 25x25 image at 2x -Cursor Info: type=Custom hotSpot=0,0 image=25x25 scale=2 +Cursor Info: type=Custom hotSpot=0,0 image=13x13 scale=1.04 TEST CASE: 25x25 image at 1x, 30x30 image at 2x Cursor Info: type=Custom hotSpot=0,0 image=25x25 TEST CASE: 25x25 image at 1.5x, 30x30 image at 5x -Cursor Info: type=Custom hotSpot=0,0 image=25x25 scale=1.5 +Cursor Info: type=Custom hotSpot=0,0 image=17x17 scale=1.02 TEST CASE: Invalid tiny scale on with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 @@ -25,7 +25,7 @@ TEST CASE: Over-large image with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 TEST CASE: 200x200 image at 4x (not over-large in UI pixels) -Cursor Info: type=Custom hotSpot=0,0 image=200x200 scale=4 +Cursor Info: type=Custom hotSpot=0,0 image=50x50 TEST CASE: Non-existent image in image-set with fallback to 25x25 image Cursor Info: type=Custom hotSpot=0,0 image=25x25 @@ -37,19 +37,19 @@ TEST CASE: Explicit hotspot at (5,24) logical in 1x Cursor Info: type=Custom hotSpot=5,24 image=25x25 TEST CASE: Explicit hotspot at (7,3) logical in 0.7x and 1.4x - should round to nearest integer -Cursor Info: type=Custom hotSpot=7,3 image=30x30 scale=1.4 +Cursor Info: type=Custom hotSpot=7,3 image=22x22 scale=1.0266666 TEST CASE: [-webkit- prefixed] 25x25 image at 1x Cursor Info: type=Custom hotSpot=0,0 image=25x25 TEST CASE: [-webkit- prefixed] 25x25 image at 2x -Cursor Info: type=Custom hotSpot=0,0 image=25x25 scale=2 +Cursor Info: type=Custom hotSpot=0,0 image=13x13 scale=1.04 TEST CASE: [-webkit- prefixed] 25x25 image at 1x, 30x30 image at 2x Cursor Info: type=Custom hotSpot=0,0 image=25x25 TEST CASE: [-webkit- prefixed] 25x25 image at 1.5x, 30x30 image at 5x -Cursor Info: type=Custom hotSpot=0,0 image=25x25 scale=1.5 +Cursor Info: type=Custom hotSpot=0,0 image=17x17 scale=1.02 TEST CASE: [-webkit- prefixed] Invalid tiny scale on with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 @@ -58,7 +58,7 @@ TEST CASE: [-webkit- prefixed] Over-large image with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 TEST CASE: [-webkit- prefixed] 200x200 image at 4x (not over-large in UI pixels) -Cursor Info: type=Custom hotSpot=0,0 image=200x200 scale=4 +Cursor Info: type=Custom hotSpot=0,0 image=50x50 TEST CASE: [-webkit- prefixed] Non-existent image in image-set with fallback to 25x25 image Cursor Info: type=Custom hotSpot=0,0 image=25x25 @@ -70,10 +70,13 @@ TEST CASE: [-webkit- prefixed] Explicit hotspot at (5,24) logical in 1x Cursor Info: type=Custom hotSpot=5,24 image=25x25 TEST CASE: [-webkit- prefixed] Explicit hotspot at (7,3) logical in 0.7x and 1.4x - should round to nearest integer -Cursor Info: type=Custom hotSpot=7,3 image=30x30 scale=1.4 +Cursor Info: type=Custom hotSpot=7,3 image=22x22 scale=1.0266666 TEST CASE: SVG image with no specified size -Cursor Info: type=Custom hotSpot=0,0 image=25x25 +Cursor Info: type=Custom hotSpot=0,0 image=32x32 + +TEST CASE: SVG image with no specified size at 2x +Cursor Info: type=Custom hotSpot=0,0 image=32x32 Checking cursors with device pixel ratio of 2 ---------------------------------------------- @@ -81,13 +84,13 @@ TEST CASE: 25x25 image at 1x Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=2 TEST CASE: 25x25 image at 2x -Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=4 +Cursor Info: type=Custom hotSpot=0,0 image=25x25 scale=2 TEST CASE: 25x25 image at 1x, 30x30 image at 2x -Cursor Info: type=Custom hotSpot=0,0 image=60x60 scale=4 +Cursor Info: type=Custom hotSpot=0,0 image=30x30 scale=2 TEST CASE: 25x25 image at 1.5x, 30x30 image at 5x -Cursor Info: type=Custom hotSpot=0,0 image=60x60 scale=10 +Cursor Info: type=Custom hotSpot=0,0 image=12x12 scale=2 TEST CASE: Invalid tiny scale on with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 @@ -96,31 +99,31 @@ TEST CASE: Over-large image with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 TEST CASE: 200x200 image at 4x (not over-large in UI pixels) -Cursor Info: type=Custom hotSpot=0,0 image=400x400 scale=8 +Cursor Info: type=Custom hotSpot=0,0 image=100x100 scale=2 TEST CASE: Non-existent image in image-set with fallback to 25x25 image Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=2 TEST CASE: Explicit hotspot at (5,3) logical in 1x and 2x -Cursor Info: type=Custom hotSpot=5,3 image=60x60 scale=4 +Cursor Info: type=Custom hotSpot=10,6 image=30x30 scale=2 TEST CASE: Explicit hotspot at (5,24) logical in 1x -Cursor Info: type=Custom hotSpot=5,24 image=50x50 scale=2 +Cursor Info: type=Custom hotSpot=10,48 image=50x50 scale=2 TEST CASE: Explicit hotspot at (7,3) logical in 0.7x and 1.4x - should round to nearest integer -Cursor Info: type=Custom hotSpot=7,3 image=60x60 scale=2.8 +Cursor Info: type=Custom hotSpot=14,6 image=43x43 scale=2.0066667 TEST CASE: [-webkit- prefixed] 25x25 image at 1x Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=2 TEST CASE: [-webkit- prefixed] 25x25 image at 2x -Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=4 +Cursor Info: type=Custom hotSpot=0,0 image=25x25 scale=2 TEST CASE: [-webkit- prefixed] 25x25 image at 1x, 30x30 image at 2x -Cursor Info: type=Custom hotSpot=0,0 image=60x60 scale=4 +Cursor Info: type=Custom hotSpot=0,0 image=30x30 scale=2 TEST CASE: [-webkit- prefixed] 25x25 image at 1.5x, 30x30 image at 5x -Cursor Info: type=Custom hotSpot=0,0 image=60x60 scale=10 +Cursor Info: type=Custom hotSpot=0,0 image=12x12 scale=2 TEST CASE: [-webkit- prefixed] Invalid tiny scale on with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 @@ -129,22 +132,25 @@ TEST CASE: [-webkit- prefixed] Over-large image with fallback to pointer Cursor Info: type=Hand hotSpot=0,0 TEST CASE: [-webkit- prefixed] 200x200 image at 4x (not over-large in UI pixels) -Cursor Info: type=Custom hotSpot=0,0 image=400x400 scale=8 +Cursor Info: type=Custom hotSpot=0,0 image=100x100 scale=2 TEST CASE: [-webkit- prefixed] Non-existent image in image-set with fallback to 25x25 image Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=2 TEST CASE: [-webkit- prefixed] Explicit hotspot at (5,3) logical in 1x and 2x -Cursor Info: type=Custom hotSpot=5,3 image=60x60 scale=4 +Cursor Info: type=Custom hotSpot=10,6 image=30x30 scale=2 TEST CASE: [-webkit- prefixed] Explicit hotspot at (5,24) logical in 1x -Cursor Info: type=Custom hotSpot=5,24 image=50x50 scale=2 +Cursor Info: type=Custom hotSpot=10,48 image=50x50 scale=2 TEST CASE: [-webkit- prefixed] Explicit hotspot at (7,3) logical in 0.7x and 1.4x - should round to nearest integer -Cursor Info: type=Custom hotSpot=7,3 image=60x60 scale=2.8 +Cursor Info: type=Custom hotSpot=14,6 image=43x43 scale=2.0066667 TEST CASE: SVG image with no specified size -Cursor Info: type=Custom hotSpot=0,0 image=50x50 scale=2 +Cursor Info: type=Custom hotSpot=0,0 image=64x64 scale=2 + +TEST CASE: SVG image with no specified size at 2x +Cursor Info: type=Custom hotSpot=0,0 image=64x64 scale=2 PASS successfullyParsed is true diff --git a/LayoutTests/fast/events/mouse-cursor-image-set-svg.html b/LayoutTests/fast/events/mouse-cursor-image-set-svg.html index e72803315b221..3a47de4833203 100644 --- a/LayoutTests/fast/events/mouse-cursor-image-set-svg.html +++ b/LayoutTests/fast/events/mouse-cursor-image-set-svg.html @@ -85,6 +85,9 @@
SVG image with no specified size
+
+ SVG image with no specified size at 2x +

diff --git a/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel-expected.txt b/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel-expected.txt index ca3d3655a2ec7..270069b69507d 100644 --- a/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel-expected.txt +++ b/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel-expected.txt @@ -3,7 +3,7 @@ Tests basic use of GestureFlingCancel On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -FAIL actualWheelEventsOccurred should be 1. Was 0. +PASS actualWheelEventsOccurred is 0 PASS successfullyParsed is true TEST COMPLETE diff --git a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated-expected.txt b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated-expected.txt index 49664c7113c2b..5f6de05c30c41 100644 --- a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated-expected.txt +++ b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated-expected.txt @@ -1,4 +1,3 @@ - This tests that a gesture scroll is not propagated from an inner div to an outer div when the inner div has no remaining scroll offset when the GestureScrollUpdateWithoutPropagation event type is used. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". diff --git a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-propagated-expected.txt b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-propagated-expected.txt index f9a4a85da69fe..4038bca1535f7 100644 --- a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-propagated-expected.txt +++ b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-propagated-expected.txt @@ -1,4 +1,3 @@ - This tests that a gesture scroll is propagated from an inner div to an outer div when the inner div has no remaining scroll offset. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". diff --git a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated-expected.txt b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated-expected.txt index 24717ca23a60b..2d4daa63403f9 100644 --- a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated-expected.txt +++ b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-twice-propagated-expected.txt @@ -1,4 +1,3 @@ - This tests that a gesture scroll is propagated from an inner div to an outer div twice when the scrolled divs have no remaining scroll offset. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". diff --git a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated-expected.txt b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated-expected.txt index 6fbcb0b377ef2..49a606cab51d9 100644 --- a/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated-expected.txt +++ b/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated-expected.txt @@ -1,4 +1,3 @@ - This tests that a gesture scroll is not propagated from a div to the page when the div has no remaining scroll offset when the GestureScrollUpdateWithoutPropagation event type is used. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". diff --git a/LayoutTests/fast/forms/focus-selection-textarea-expected.txt b/LayoutTests/fast/forms/focus-selection-textarea-expected.txt index 5b98183fbae4f..34206d256b77a 100644 --- a/LayoutTests/fast/forms/focus-selection-textarea-expected.txt +++ b/LayoutTests/fast/forms/focus-selection-textarea-expected.txt @@ -15,8 +15,6 @@ EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotificatio EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification - AXRole: AXTextField - computedRoleString: textbox - - - AXRole: AXImageMap - - - AXRole: AXListItem - computedRoleString: listitem - - - AXRole: AXButton - computedRoleString: button - - - AXRole: AXLabel - - - AXRole: AXCanvas - - - AXRole: AXCanvas - - - AXRole: AXButton - computedRoleString: button - - - AXRole: AXCheckBox - computedRoleString: checkbox - - - AXRole: AXRadioButton - computedRoleString: radio - - - AXRole: AXButton - computedRoleString: button - - - AXRole: AXToggleButton - computedRoleString: button - - - AXRole: AXTextField - computedRoleString: textbox - - - AXRole: AXButton - - - AXRole: AXSlider - computedRoleString: slider - - - AXRole: AXTextField - computedRoleString: searchbox - - - AXRole: AXHeading - computedRoleString: heading - - - AXRole: AXDeletion - computedRoleString: deletion - - - AXRole: AXInsertion - computedRoleString: insertion - - - AXRole: AXSubscript - computedRoleString: subscript - - - AXRole: AXSuperscript - computedRoleString: superscript - - - AXRole: AXSection - computedRoleString: code - - - AXRole: AXDescriptionTerm - computedRoleString: term - - - AXRole: AXDescriptionValue - computedRoleString: definition - - - AXRole: AXDescriptionList - - - AXRole: AXGroup - computedRoleString: group - - - AXRole: AXGroup - computedRoleString: group - - - AXRole: AXGroup - computedRoleString: figure - - - AXRole: AXParagraph - computedRoleString: paragraph - - - AXRole: AXLabel - - - AXRole: AXDescriptionTerm - computedRoleString: term - - - AXRole: AXSection - computedRoleString: generic - - - AXRole: AXForm - computedRoleString: form - - - AXRole: AXArticle - computedRoleString: article - -
- AXRole: AXLandmarkMain - computedRoleString: main - - - AXRole: AXLandmarkNavigation - computedRoleString: navigation - - - AXRole: AXLandmarkComplementary - computedRoleString: complementary - - - AXRole: AXLandmarkRegion - computedRoleString: region - - - AXRole: AXSection - - - AXRole: AXBlockquote - computedRoleString: blockquote - - - - computedRoleString: mark - - - AXRole: AXSection - - - AXRole: AXUnknown - computedRoleString: group - - - AXRole: AXUnknown - - - AXRole: AXStatusBar - computedRoleString: status - - - AXRole: AXGroup - computedRoleString: group - - - AXRole: AXSeparator - computedRoleString: separator - - - AXRole: AXStatic - computedRoleString: time - - -PASS successfullyParsed is true - -TEST COMPLETE - - - diff --git a/LayoutTests/platform/glib/compositing/backing-store-attachment-1-expected.txt b/LayoutTests/platform/glib/compositing/backing-store-attachment-1-expected.txt new file mode 100644 index 0000000000000..359ce5e46ba2f --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing-store-attachment-1-expected.txt @@ -0,0 +1,28 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2221.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2221.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 2 + (GraphicsLayer + (position 8.00 13.00) + (bounds 600.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 1613.00) + (bounds 600.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) +) +I'm attached. +I'm detached. diff --git a/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt new file mode 100644 index 0000000000000..91d3a62c62866 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-animating-outside-viewport-expected.txt @@ -0,0 +1,24 @@ +An in-view element animating off-screen should not have backing store. + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2200.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2200.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 100.00 100.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) +) +Some text here to force backing store. diff --git a/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-animating-pseudo-element-outside-viewport-expected.txt b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-animating-pseudo-element-outside-viewport-expected.txt new file mode 100644 index 0000000000000..118189335a8de --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-animating-pseudo-element-outside-viewport-expected.txt @@ -0,0 +1,24 @@ +A pseudo-element animating off-screen should not have backing store. + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2200.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2200.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 100.00 100.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-outside-viewport-expected.txt b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-outside-viewport-expected.txt new file mode 100644 index 0000000000000..5bf037ae766d2 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-outside-viewport-expected.txt @@ -0,0 +1,35 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 3821.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 3821.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 3 + (GraphicsLayer + (position 8.00 13.00) + (bounds 600.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 1613.00) + (bounds 600.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 3213.00) + (bounds 600.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) +) +I'm attached. +I'm detached. +I'm detached. Triggers repaint diff --git a/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-scroll-expected.txt b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-scroll-expected.txt new file mode 100644 index 0000000000000..94f875f3edbea --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/backing-store-attachment-scroll-expected.txt @@ -0,0 +1,71 @@ +Before +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2916.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2916.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 3 + (GraphicsLayer + (position 8.00 8.00) + (bounds 300.00 300.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 1308.00) + (bounds 300.00 300.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 2608.00) + (bounds 300.00 300.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) +) + + +After +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2916.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2916.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 3 + (GraphicsLayer + (position 8.00 8.00) + (bounds 300.00 300.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 1308.00) + (bounds 300.00 300.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + (GraphicsLayer + (position 8.00 2608.00) + (bounds 300.00 300.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) +) +First layer. +Second layer. +Third layer. diff --git a/LayoutTests/platform/glib/compositing/backing/backing-store-columns-inside-position-fixed-expected.txt b/LayoutTests/platform/glib/compositing/backing/backing-store-columns-inside-position-fixed-expected.txt new file mode 100644 index 0000000000000..62ffe1e8af1dd --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/backing-store-columns-inside-position-fixed-expected.txt @@ -0,0 +1,27 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 8.00 0.00) + (preserves3D 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 600.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/backing/layer-outside-tiled-parent-expected.txt b/LayoutTests/platform/glib/compositing/backing/layer-outside-tiled-parent-expected.txt new file mode 100644 index 0000000000000..b0fc641769d01 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/layer-outside-tiled-parent-expected.txt @@ -0,0 +1,43 @@ +trigger This should be visible This should be visible +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2628.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2628.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (anchor 0.50 0.06) + (bounds 200.00 2620.00) + (drawsContent 1) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [200.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 2.00 2.00) + (bounds 200.00 296.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-204.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (bounds 200.00 296.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [404.00 0.00 0.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/backing/page-scale-overlap-in-iframe-expected.txt b/LayoutTests/platform/glib/compositing/backing/page-scale-overlap-in-iframe-expected.txt new file mode 100644 index 0000000000000..4781b5bbdf85c --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/page-scale-overlap-in-iframe-expected.txt @@ -0,0 +1,80 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 302.00 152.00) + (drawsContent 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 1.00 1.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 300.00 150.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 300.00 150.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 300.00 150.00) + (drawsContent 1) + (backingStoreAttached 1) + (children 2 + (GraphicsLayer + (bounds 300.00 150.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 300.00 150.00) + (backingStoreAttached 1) + ) + ) + ) + (GraphicsLayer + (bounds 300.00 150.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 0.00 109.00) + (bounds 300.00 41.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/backing/transition-extent-expected.txt b/LayoutTests/platform/glib/compositing/backing/transition-extent-expected.txt new file mode 100644 index 0000000000000..f8a6d8ca859d0 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/backing/transition-extent-expected.txt @@ -0,0 +1,33 @@ +The second box should not have attached backing store. + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2024.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 2024.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 2 + (GraphicsLayer + (position 20.00 20.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + (transform [1.00 -0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) + ) + (GraphicsLayer + (position 20.00 1500.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + (transform [1.00 -0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) + ) + ) + ) + ) +) +visible boxhidden box diff --git a/LayoutTests/platform/glib/compositing/contents-format/deep-color-backing-store-expected.txt b/LayoutTests/platform/glib/compositing/contents-format/deep-color-backing-store-expected.txt new file mode 100644 index 0000000000000..132cc73da6138 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/contents-format/deep-color-backing-store-expected.txt @@ -0,0 +1,27 @@ +Box +Box +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 5018.00 2018.00) + (children 1 + (GraphicsLayer + (bounds 5018.00 2018.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (position 18.00 10.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + ) + (GraphicsLayer + (position 18.00 120.00) + (bounds 5000.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/contents-scale/animating-expected.txt b/LayoutTests/platform/glib/compositing/contents-scale/animating-expected.txt new file mode 100644 index 0000000000000..a7ecbd9bc924e --- /dev/null +++ b/LayoutTests/platform/glib/compositing/contents-scale/animating-expected.txt @@ -0,0 +1,22 @@ +Box +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (anchor 0.00 0.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.50 0.00 0.00 0.00] [0.00 1.50 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/contents-scale/rounded-contents-scale-expected.txt b/LayoutTests/platform/glib/compositing/contents-scale/rounded-contents-scale-expected.txt new file mode 100644 index 0000000000000..3bc6881f51833 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/contents-scale/rounded-contents-scale-expected.txt @@ -0,0 +1,60 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 784.00 512.00) + (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.78 0.51 1.00 -0.00] [0.00 0.00 0.00 1.00]) + (children 6 + (GraphicsLayer + (bounds 102.00 102.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 -200.00 1.00]) + ) + (GraphicsLayer + (position 0.00 82.00) + (bounds 102.00 102.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 -100.00 1.00]) + ) + (GraphicsLayer + (position 0.00 164.00) + (bounds 102.00 102.00) + (contentsOpaque 1) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 246.00) + (bounds 102.00 102.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 50.00 1.00]) + ) + (GraphicsLayer + (position 0.00 328.00) + (bounds 102.00 102.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 100.00 1.00]) + ) + (GraphicsLayer + (position 0.00 410.00) + (bounds 102.00 102.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 150.00 1.00]) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/contents-scale/scaled-ancestor-expected.txt b/LayoutTests/platform/glib/compositing/contents-scale/scaled-ancestor-expected.txt new file mode 100644 index 0000000000000..54cb68ba2032d --- /dev/null +++ b/LayoutTests/platform/glib/compositing/contents-scale/scaled-ancestor-expected.txt @@ -0,0 +1,29 @@ +Box +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (anchor 0.00 0.00) + (bounds 102.00 102.00) + (drawsContent 1) + (transform [2.00 0.00 0.00 0.00] [0.00 2.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 11.00 11.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/contents-scale/simple-scale-expected.txt b/LayoutTests/platform/glib/compositing/contents-scale/simple-scale-expected.txt new file mode 100644 index 0000000000000..e75cacfb27921 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/contents-scale/simple-scale-expected.txt @@ -0,0 +1,22 @@ +Box +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (anchor 0.00 0.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [2.00 0.00 0.00 0.00] [0.00 2.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/contents-scale/z-translate-expected.txt b/LayoutTests/platform/glib/compositing/contents-scale/z-translate-expected.txt new file mode 100644 index 0000000000000..638b63baf2f39 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/contents-scale/z-translate-expected.txt @@ -0,0 +1,40 @@ +Box +Box +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 102.00 102.00) + (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 11.00 11.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (preserves3D 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 100.00 1.00]) + (children 1 + (GraphicsLayer + (position 20.00 38.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (preserves3D 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 100.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/fixed-image-loading-expected.txt b/LayoutTests/platform/glib/compositing/fixed-image-loading-expected.txt new file mode 100644 index 0000000000000..36ee803a6e382 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/fixed-image-loading-expected.txt @@ -0,0 +1,24 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 13.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 214.00 232.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt b/LayoutTests/platform/glib/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt new file mode 100644 index 0000000000000..e18097eaf6ee7 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt @@ -0,0 +1,39 @@ +top + +middlebottom +top + +middlebottom +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 2618.00) + (children 1 + (GraphicsLayer + (bounds 785.00 2618.00) + (contentsOpaque 1) + (children 3 + (GraphicsLayer + (position 21.00 21.00) + (bounds 100.00 100.00) + ) + (GraphicsLayer + (position 18.00 10.00) + (bounds 220.00 220.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 28.00 250.00) + (bounds 185.00 200.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=0 height=100) + (bounds 149.00 2086.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/geometry/limit-layer-bounds-overflow-root-expected.txt b/LayoutTests/platform/glib/compositing/geometry/limit-layer-bounds-overflow-root-expected.txt new file mode 100644 index 0000000000000..e9e2f891c69c8 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/geometry/limit-layer-bounds-overflow-root-expected.txt @@ -0,0 +1,31 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 4 + (GraphicsLayer + (position 21.00 21.00) + (bounds 100.00 100.00) + ) + (GraphicsLayer + (position 21.00 21.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + (GraphicsLayer + (bounds 142.00 142.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 13.00) + (bounds 216.00 15.00) + (drawsContent 1) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/geometry/preserve-3d-switching-expected.txt b/LayoutTests/platform/glib/compositing/geometry/preserve-3d-switching-expected.txt new file mode 100644 index 0000000000000..e38262a38f458 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/geometry/preserve-3d-switching-expected.txt @@ -0,0 +1,40 @@ +The green box appear angled out from the yellow box and embedded in it. + +-webkit-transform: translateZ(-100px) rotateY(45deg); +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 108.00 72.00) + (bounds 304.00 304.00) + (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 12.00 12.00) + (bounds 280.00 280.00) + (opacity 0.80) + (contentsOpaque 1) + (transform [0.77 -0.56 -0.32 0.00] [0.00 0.50 -0.87 0.00] [0.64 0.66 0.38 0.00] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 40.00 40.00) + (bounds 200.00 200.00) + (opacity 0.70) + (contentsOpaque 1) + (drawsContent 1) + (transform [0.77 0.00 0.64 0.00] [0.00 1.00 0.00 0.00] [-0.64 0.00 0.77 0.00] [0.00 0.00 50.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/become-overlapped-iframe-expected.txt b/LayoutTests/platform/glib/compositing/iframes/become-overlapped-iframe-expected.txt new file mode 100644 index 0000000000000..66dfa392b1793 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/become-overlapped-iframe-expected.txt @@ -0,0 +1,63 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (position 58.00 58.00) + (bounds 350.00 200.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 15.00 15.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 305.00 170.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 305.00 230.00) + (children 1 + (GraphicsLayer + (bounds 305.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 305.00 0.00) + (bounds 15.00 170.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 150.00 150.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/composited-parent-iframe-expected.txt b/LayoutTests/platform/glib/compositing/iframes/composited-parent-iframe-expected.txt new file mode 100644 index 0000000000000..86d0734970a05 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/composited-parent-iframe-expected.txt @@ -0,0 +1,60 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (position -20.00 -20.00) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe-delayed-expected.txt b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe-delayed-expected.txt new file mode 100644 index 0000000000000..f5c0e14fa5c1e --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe-delayed-expected.txt @@ -0,0 +1,67 @@ + +When the parent document becomes composited, the layer trees should get connected together. + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (position 0.00 100.00) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 8.00 8.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe-expected.txt b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe-expected.txt new file mode 100644 index 0000000000000..95f10dddae5d0 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe-expected.txt @@ -0,0 +1,63 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 50.00 50.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe2-expected.txt b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe2-expected.txt new file mode 100644 index 0000000000000..95f10dddae5d0 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe2-expected.txt @@ -0,0 +1,63 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 50.00 50.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe3-expected.txt b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe3-expected.txt new file mode 100644 index 0000000000000..440c2210e8bdf --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/connect-compositing-iframe3-expected.txt @@ -0,0 +1,59 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/enter-compositing-iframe-expected.txt b/LayoutTests/platform/glib/compositing/iframes/enter-compositing-iframe-expected.txt new file mode 100644 index 0000000000000..95f10dddae5d0 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/enter-compositing-iframe-expected.txt @@ -0,0 +1,63 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 50.00 50.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/iframe-resize-expected.txt b/LayoutTests/platform/glib/compositing/iframes/iframe-resize-expected.txt new file mode 100644 index 0000000000000..551d9c0578446 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/iframe-resize-expected.txt @@ -0,0 +1,63 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 486.00 206.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 385.00 120.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 385.00 230.00) + (children 1 + (GraphicsLayer + (bounds 385.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 385.00 0.00) + (bounds 15.00 120.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 50.00 50.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/overlapped-iframe-expected.txt b/LayoutTests/platform/glib/compositing/iframes/overlapped-iframe-expected.txt new file mode 100644 index 0000000000000..95f10dddae5d0 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/overlapped-iframe-expected.txt @@ -0,0 +1,63 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 230.00) + (children 1 + (GraphicsLayer + (bounds 285.00 230.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 210.00 210.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 50.00 50.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/iframes/scrolling-iframe-expected.txt b/LayoutTests/platform/glib/compositing/iframes/scrolling-iframe-expected.txt new file mode 100644 index 0000000000000..25b5d7a220a17 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/iframes/scrolling-iframe-expected.txt @@ -0,0 +1,74 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=-28 height=-28) + (bounds 386.00 236.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 43.00 43.00) + (children 4 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 135.00) + (children 1 + (GraphicsLayer + (position -80.00 -80.00) + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 508.00 608.00) + (children 1 + (GraphicsLayer + (bounds 508.00 608.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 108.00 100.00) + (bounds 200.00 200.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 135.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 135.00) + (bounds 285.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 285.00 135.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 5.00 5.00) + (bounds 50.00 50.00) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt b/LayoutTests/platform/glib/compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt new file mode 100644 index 0000000000000..8afbb6e50cb81 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt @@ -0,0 +1,75 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 3 + (GraphicsLayer + (position 8.00 13.00) + (preserves3D 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 102.00 102.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 8.00 120.00) + (preserves3D 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-110.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (bounds 102.00 102.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 8.00 240.00) + (preserves3D 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-110.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (bounds 102.00 102.00) + (drawsContent 1) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [122.40 0.00 0.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/no-compositing-when-full-screen-is-present-expected.txt b/LayoutTests/platform/glib/compositing/no-compositing-when-full-screen-is-present-expected.txt new file mode 100644 index 0000000000000..5b7ce604733bf --- /dev/null +++ b/LayoutTests/platform/glib/compositing/no-compositing-when-full-screen-is-present-expected.txt @@ -0,0 +1,57 @@ +Test that only elements in fullscreen subtree and the associated backdrop get layer backed. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +PASS successfullyParsed is true + +TEST COMPLETE +full screen contentfoobar +foobar +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 2 + (GraphicsLayer + (preserves3D 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (backingStoreAttached 1) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (backingStoreAttached 1) + ) + (GraphicsLayer + (bounds 800.00 600.00) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (preserves3D 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + ) +) +Enter fullscreen diff --git a/LayoutTests/platform/glib/compositing/overflow/textarea-scroll-touch-expected.txt b/LayoutTests/platform/glib/compositing/overflow/textarea-scroll-touch-expected.txt new file mode 100644 index 0000000000000..d07879bb1dd31 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/overflow/textarea-scroll-touch-expected.txt @@ -0,0 +1,92 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (position 18.00 18.00) + (bounds 206.00 126.00) + (contentsOpaque 1) + (drawsContent 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds origin 0.00 50.00) + (bounds 189.00 124.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (scrollOffset (0,50)) + (anchor 0.00 0.00) + (bounds 189.00 263.00) + (drawsContent 1) + ) + ) + ) + (GraphicsLayer + (position 1.00 1.00) + (bounds 204.00 124.00) + (children 2 + (GraphicsLayer + (position 189.00 0.00) + (bounds 15.00 109.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 189.00 109.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 248.00 18.00) + (bounds 206.00 126.00) + (contentsOpaque 1) + (drawsContent 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds origin 0.00 50.00) + (bounds 189.00 124.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (scrollOffset (0,50)) + (anchor 0.00 0.00) + (bounds 189.00 263.00) + (drawsContent 1) + ) + ) + ) + (GraphicsLayer + (position 1.00 1.00) + (bounds 204.00 124.00) + (children 2 + (GraphicsLayer + (position 189.00 0.00) + (bounds 15.00 109.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 189.00 109.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/gtk/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png b/LayoutTests/platform/glib/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png similarity index 100% rename from LayoutTests/platform/gtk/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png rename to LayoutTests/platform/glib/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png diff --git a/LayoutTests/platform/glib/compositing/repaint/scroller-repaints-once-expected.txt b/LayoutTests/platform/glib/compositing/repaint/scroller-repaints-once-expected.txt new file mode 100644 index 0000000000000..f154a89c73917 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/repaint/scroller-repaints-once-expected.txt @@ -0,0 +1,111 @@ +Scrolled contents +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 322.00 322.00) + (drawsContent 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds 305.00 305.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (anchor 0.00 0.00) + (bounds 305.00 2100.00) + (drawsContent 1) + ) + ) + ) + (GraphicsLayer + (position 1.00 1.00) + (bounds 320.00 320.00) + (children 3 + (GraphicsLayer + (position 0.00 305.00) + (bounds 305.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 305.00 0.00) + (bounds 15.00 305.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 305.00 305.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 322.00 322.00) + (drawsContent 1) + (children 2 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds 305.00 305.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (anchor 0.00 0.00) + (bounds 305.00 2100.00) + (drawsContent 1) + (repaint rects + (rect 10.00 2060.00 35.00 30.00) + ) + ) + ) + ) + (GraphicsLayer + (position 1.00 1.00) + (bounds 320.00 320.00) + (children 3 + (GraphicsLayer + (position 0.00 305.00) + (bounds 305.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 305.00 0.00) + (bounds 15.00 305.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 305.00 305.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-expected.txt new file mode 100644 index 0000000000000..d6635d4e30fc4 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-expected.txt @@ -0,0 +1,34 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (backgroundColor #FF0000) + (children 2 + (GraphicsLayer + (position 50.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + (GraphicsLayer + (position 50.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-overflow-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-overflow-expected.txt new file mode 100644 index 0000000000000..0775b0d27a7c9 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-overflow-expected.txt @@ -0,0 +1,36 @@ +(GraphicsLayer + (position -215.00 0.00) + (anchor 0.00 0.00) + (bounds 1000.00 1000.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-215 height=0) + (bounds 1000.00 1000.00) + (contentsOpaque 1) + (backgroundColor #FF0000) + (children 2 + (GraphicsLayer + (position 265.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + (GraphicsLayer + (position 265.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt new file mode 100644 index 0000000000000..219dc9b9450d2 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt @@ -0,0 +1,36 @@ +(GraphicsLayer + (position -215.00 0.00) + (anchor 0.00 0.00) + (bounds 1000.00 1000.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-215 height=0) + (bounds 1000.00 1000.00) + (contentsOpaque 1) + (backgroundColor #FF0000) + (children 2 + (GraphicsLayer + (position 51.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + (GraphicsLayer + (position 51.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt new file mode 100644 index 0000000000000..59d9b16627859 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt @@ -0,0 +1,68 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (bounds 400.00 400.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (children 4 + (GraphicsLayer + (position 15.00 0.00) + (anchor 0.00 0.00) + (bounds 385.00 385.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (position -615.00 0.00) + (anchor 0.00 0.00) + (bounds 1000.00 1000.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-615 height=0) + (bounds 1000.00 1000.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 665.00 50.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (bounds 15.00 385.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 15.00 385.00) + (bounds 385.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 385.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt new file mode 100644 index 0000000000000..5e80b8ef96d13 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-absolute-overflow-scrolled-expected.txt @@ -0,0 +1,68 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (bounds 400.00 400.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (children 4 + (GraphicsLayer + (position 15.00 0.00) + (anchor 0.00 0.00) + (bounds 385.00 385.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (position -615.00 0.00) + (anchor 0.00 0.00) + (bounds 1000.00 1000.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-615 height=0) + (bounds 1000.00 1000.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 51.00 50.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (bounds 15.00 385.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 15.00 385.00) + (bounds 385.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 385.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt new file mode 100644 index 0000000000000..bf7f1b439a8c1 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-fixed-overflow-expected.txt @@ -0,0 +1,83 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (bounds 400.00 400.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (children 4 + (GraphicsLayer + (position 15.00 0.00) + (anchor 0.00 0.00) + (bounds 385.00 385.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (position -615.00 0.00) + (anchor 0.00 0.00) + (bounds 1000.00 1000.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-615 height=0) + (bounds 1000.00 1000.00) + (drawsContent 1) + (children 2 + (GraphicsLayer + (position 665.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + (GraphicsLayer + (position 665.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (bounds 15.00 385.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 15.00 385.00) + (bounds 385.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 385.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt new file mode 100644 index 0000000000000..bf7f1b439a8c1 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/rtl/rtl-iframe-fixed-overflow-scrolled-expected.txt @@ -0,0 +1,83 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (bounds 400.00 400.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (children 4 + (GraphicsLayer + (position 15.00 0.00) + (anchor 0.00 0.00) + (bounds 385.00 385.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (position -615.00 0.00) + (anchor 0.00 0.00) + (bounds 1000.00 1000.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=-615 height=0) + (bounds 1000.00 1000.00) + (drawsContent 1) + (children 2 + (GraphicsLayer + (position 665.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + (GraphicsLayer + (position 665.00 50.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 100.00 100.00) + (contentsOpaque 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (bounds 15.00 385.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 15.00 385.00) + (bounds 385.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 385.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/tiling/coverage-adjustment-secondary-quad-mapping-expected.txt b/LayoutTests/platform/glib/compositing/tiling/coverage-adjustment-secondary-quad-mapping-expected.txt new file mode 100644 index 0000000000000..1dec2ad82040a --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/coverage-adjustment-secondary-quad-mapping-expected.txt @@ -0,0 +1,66 @@ +  +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 620.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (bounds 785.00 620.00) + (contentsOpaque 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 8.00 20.00) + (anchor 0.50 0.50) + (bounds 769.00 580.00) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (position 20.00 0.00) + (bounds 600.00 580.00) + (drawsContent 1) + (backingStoreAttached 1) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (anchor 0.51 0.50) + (bounds 583.00 578.00) + (backingStoreAttached 1) + (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [-300.00 -290.00 1.00 -1.00] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 0.00 -400.00) + (anchor 0.00 0.00) + (bounds 583.00 12800.00) + (preserves3D 1) + (drawsContent 1) + (backingStoreAttached 1) + (children 2 + (GraphicsLayer + (position 20.00 0.00) + (anchor 0.50 0.50) + (bounds 467.00 1300.00) + (backingStoreAttached 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 -220.00 -2.00 1.00]) + ) + (GraphicsLayer + (position 0.00 200.00) + (bounds 583.00 600.00) + (contentsOpaque 1) + (drawsContent 1) + (backingStoreAttached 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/tiling/huge-layer-img-resize-expected.txt b/LayoutTests/platform/glib/compositing/tiling/huge-layer-img-resize-expected.txt new file mode 100644 index 0000000000000..a8c31ce74a701 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/huge-layer-img-resize-expected.txt @@ -0,0 +1,26 @@ + +(repaint rects + (rect 0 0 3400 2000) + (rect 2500 0 900 2028) + (rect 2500 0 900 2041) +) +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 3400.00 2041.00) + (children 1 + (GraphicsLayer + (bounds 3400.00 2041.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (bounds 3400.00 2000.00) + (drawsContent 1) + (repaint rects + (rect 0.00 0.00 2500.00 2000.00) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/tiling/non-active-window-tiles-size-expected.txt b/LayoutTests/platform/glib/compositing/tiling/non-active-window-tiles-size-expected.txt new file mode 100644 index 0000000000000..a8cf75ef49ab7 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/non-active-window-tiles-size-expected.txt @@ -0,0 +1,25 @@ +Tiles when window is active: + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + ) + ) +) +Tiles when window is not active: + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/tiling/offscreen-tiled-layer-expected.txt b/LayoutTests/platform/glib/compositing/tiling/offscreen-tiled-layer-expected.txt new file mode 100644 index 0000000000000..464f3248eb287 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/offscreen-tiled-layer-expected.txt @@ -0,0 +1,19 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 2208.00 2808.00) + (children 1 + (GraphicsLayer + (bounds 2208.00 2808.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 1800.00) + (bounds 2200.00 1000.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) +) +Some text here. diff --git a/LayoutTests/platform/glib/compositing/tiling/perspective-on-scroller-tile-coverage-expected.txt b/LayoutTests/platform/glib/compositing/tiling/perspective-on-scroller-tile-coverage-expected.txt new file mode 100644 index 0000000000000..1aa7e6f90ae97 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/perspective-on-scroller-tile-coverage-expected.txt @@ -0,0 +1,54 @@ +  +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (bounds 600.00 500.00) + (children 2 + (GraphicsLayer + (bounds origin 0.00 900.00) + (anchor 0.51 0.50) + (bounds 585.00 500.00) + (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [3.00 2.50 1.00 -0.01] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (scrollOffset (0,900)) + (anchor 0.00 0.00) + (bounds 625.00 3240.00) + (preserves3D 1) + (children 1 + (GraphicsLayer + (position 20.00 20.00) + (anchor 0.00 0.00) + (bounds 585.00 1200.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 -50.00 1.00]) + ) + ) + ) + ) + ) + (GraphicsLayer + (bounds 600.00 500.00) + (children 1 + (GraphicsLayer + (position 585.00 0.00) + (bounds 15.00 500.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/tiling/tile-coverage-on-scroll-expected.txt b/LayoutTests/platform/glib/compositing/tiling/tile-coverage-on-scroll-expected.txt new file mode 100644 index 0000000000000..4657c910c95dc --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/tile-coverage-on-scroll-expected.txt @@ -0,0 +1,41 @@ +Before +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 5016.00) + (children 1 + (GraphicsLayer + (bounds 785.00 5016.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 100.00 5000.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) +) + + +After +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 5016.00) + (children 1 + (GraphicsLayer + (bounds 785.00 5016.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 100.00 5000.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) +) +Tall tiled layer diff --git a/LayoutTests/platform/glib/compositing/tiling/transform-origin-tiled-expected.txt b/LayoutTests/platform/glib/compositing/tiling/transform-origin-tiled-expected.txt new file mode 100644 index 0000000000000..23fb9da793d85 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/tiling/transform-origin-tiled-expected.txt @@ -0,0 +1,34 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 58.00 50.00) + (bounds 502.00 302.00) + (children 1 + (GraphicsLayer + (offsetFromRenderer width=1 height=1) + (position 1.00 1.00) + (bounds 500.00 300.00) + (childrenTransform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 -0.00] [0.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position -1250.00 0.00) + (anchor 0.54 0.50) + (bounds 2800.00 300.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/visibility/visibility-change-in-subframe-expected.txt b/LayoutTests/platform/glib/compositing/visibility/visibility-change-in-subframe-expected.txt new file mode 100644 index 0000000000000..1b12d0f664107 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/visibility/visibility-change-in-subframe-expected.txt @@ -0,0 +1,106 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 788.00 154.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 2.00 2.00) + (children 2 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 769.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 769.00 204.00) + (children 1 + (GraphicsLayer + (bounds 769.00 204.00) + (drawsContent 1) + (children 2 + (GraphicsLayer + (position 80.00 30.00) + (bounds 404.00 154.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 2.00 2.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 400.00 150.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 400.00 158.00) + (children 1 + (GraphicsLayer + (bounds 400.00 158.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 8.00 50.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (preserves3D 1) + (children 1 + (GraphicsLayer + (bounds 52.00 38.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 769.00 0.00) + (bounds 15.00 150.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/visible-rect/backing-change-height-from-zero-expected.txt b/LayoutTests/platform/glib/compositing/visible-rect/backing-change-height-from-zero-expected.txt new file mode 100644 index 0000000000000..c263f889e8412 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/visible-rect/backing-change-height-from-zero-expected.txt @@ -0,0 +1,20 @@ +Content +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 28.00 20.00) + (bounds 100.00 100.00) + (contentsOpaque 1) + (drawsContent 1) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/visible-rect/clipped-by-viewport-expected.txt b/LayoutTests/platform/glib/compositing/visible-rect/clipped-by-viewport-expected.txt new file mode 100644 index 0000000000000..23460bcecf68a --- /dev/null +++ b/LayoutTests/platform/glib/compositing/visible-rect/clipped-by-viewport-expected.txt @@ -0,0 +1,25 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 800.00 600.00) + (children 1 + (GraphicsLayer + (bounds 800.00 600.00) + (contentsOpaque 1) + (children 2 + (GraphicsLayer + (position -100.00 -120.00) + (bounds 200.00 200.00) + (contentsOpaque 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) + ) + (GraphicsLayer + (position -100.00 200.00) + (bounds 200.00 200.00) + (contentsOpaque 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/visible-rect/coverage-scrolling-expected.txt b/LayoutTests/platform/glib/compositing/visible-rect/coverage-scrolling-expected.txt new file mode 100644 index 0000000000000..c874184491ddd --- /dev/null +++ b/LayoutTests/platform/glib/compositing/visible-rect/coverage-scrolling-expected.txt @@ -0,0 +1,76 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 4208.00) + (children 1 + (GraphicsLayer + (bounds 785.00 4208.00) + (contentsOpaque 1) + (children 9 + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 186.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 586.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 986.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 1386.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 1786.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 2186.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 2586.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 2986.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + (GraphicsLayer + (offsetFromRenderer width=-32 height=-14) + (position 116.00 3386.00) + (anchor 0.53 0.50) + (bounds 346.00 228.00) + (drawsContent 1) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt b/LayoutTests/platform/glib/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt new file mode 100644 index 0000000000000..bd0cca50449e4 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/visible-rect/iframe-with-layers-outside-viewport-expected.txt @@ -0,0 +1,71 @@ + +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 1508.00 3154.00) + (children 1 + (GraphicsLayer + (bounds 1508.00 3154.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 3000.00) + (bounds 304.00 154.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 2.00 2.00) + (children 4 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 285.00 135.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (children 1 + (GraphicsLayer + (anchor 0.00 0.00) + (bounds 1508.00 1516.00) + (children 1 + (GraphicsLayer + (bounds 1508.00 1516.00) + (drawsContent 1) + (children 1 + (GraphicsLayer + (position 8.00 8.00) + (bounds 100.00 300.00) + (contentsOpaque 1) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (GraphicsLayer + (position 285.00 0.00) + (bounds 15.00 135.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 0.00 135.00) + (bounds 285.00 15.00) + (drawsContent 1) + ) + (GraphicsLayer + (position 285.00 135.00) + (bounds 15.00 15.00) + (drawsContent 1) + ) + ) + ) + ) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/visible-rect/scrolled-expected.txt b/LayoutTests/platform/glib/compositing/visible-rect/scrolled-expected.txt new file mode 100644 index 0000000000000..15b2e8dd790d8 --- /dev/null +++ b/LayoutTests/platform/glib/compositing/visible-rect/scrolled-expected.txt @@ -0,0 +1,19 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 1508.00 2008.00) + (children 1 + (GraphicsLayer + (bounds 1508.00 2008.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 8.00 0.00) + (bounds 200.00 500.00) + (contentsOpaque 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/glib/compositing/webgl/webgl-nonpremultiplied-blend-expected.txt b/LayoutTests/platform/glib/compositing/webgl/webgl-nonpremultiplied-blend-expected.txt deleted file mode 100644 index e2145be08e46c..0000000000000 --- a/LayoutTests/platform/glib/compositing/webgl/webgl-nonpremultiplied-blend-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x260 - RenderBlock {HTML} at (0,0) size 800x260 - RenderBody {BODY} at (8,8) size 784x244 - RenderText {#text} at (240,226) size 4x17 - text run at (240,226) width 4: " " - RenderText {#text} at (0,0) size 0x0 - RenderText {#text} at (0,0) size 0x0 -layer at (28,28) size 200x200 - RenderHTMLCanvas {CANVAS} at (20,20) size 200x200 [bgcolor=#00008000] -layer at (272,28) size 200x200 - RenderHTMLCanvas {CANVAS} at (264,20) size 200x200 [bgcolor=#00008000] diff --git a/LayoutTests/platform/gtk/css3/blending/background-blend-mode-default-value-expected.png b/LayoutTests/platform/glib/css3/blending/background-blend-mode-default-value-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/background-blend-mode-default-value-expected.png rename to LayoutTests/platform/glib/css3/blending/background-blend-mode-default-value-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/background-blend-mode-different-image-formats-expected.png b/LayoutTests/platform/glib/css3/blending/background-blend-mode-different-image-formats-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/background-blend-mode-different-image-formats-expected.png rename to LayoutTests/platform/glib/css3/blending/background-blend-mode-different-image-formats-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/background-blend-mode-gif-color-2-expected.png b/LayoutTests/platform/glib/css3/blending/background-blend-mode-gif-color-2-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/background-blend-mode-gif-color-2-expected.png rename to LayoutTests/platform/glib/css3/blending/background-blend-mode-gif-color-2-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/background-blend-mode-gif-color-expected.png b/LayoutTests/platform/glib/css3/blending/background-blend-mode-gif-color-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/background-blend-mode-gif-color-expected.png rename to LayoutTests/platform/glib/css3/blending/background-blend-mode-gif-color-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/background-blend-mode-single-layer-no-blending-expected.png b/LayoutTests/platform/glib/css3/blending/background-blend-mode-single-layer-no-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/background-blend-mode-single-layer-no-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/background-blend-mode-single-layer-no-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-background-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-background-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-background-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-background-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png diff --git a/LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png similarity index 100% rename from LayoutTests/platform/gtk/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png rename to LayoutTests/platform/glib/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png diff --git a/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer-expected.txt b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer-expected.txt new file mode 100644 index 0000000000000..67a2ca945f227 --- /dev/null +++ b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x158 + RenderBlock {HTML} at (0,0) size 800x158 + RenderBody {BODY} at (8,16) size 784x134 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 250x18 + text run at (0,0) width 250: "Test passes if you see a green rectangle." +layer at (8,50) size 100x100 scrollWidth 400 + RenderBlock {DIV} at (0,34) size 100x100 + RenderBlock {DIV} at (0,0) size 400x20 [bgcolor=#00FF00] diff --git a/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer1-expected.txt b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer1-expected.txt new file mode 100644 index 0000000000000..67a2ca945f227 --- /dev/null +++ b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer1-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x158 + RenderBlock {HTML} at (0,0) size 800x158 + RenderBody {BODY} at (8,16) size 784x134 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 250x18 + text run at (0,0) width 250: "Test passes if you see a green rectangle." +layer at (8,50) size 100x100 scrollWidth 400 + RenderBlock {DIV} at (0,34) size 100x100 + RenderBlock {DIV} at (0,0) size 400x20 [bgcolor=#00FF00] diff --git a/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer2-expected.txt b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer2-expected.txt new file mode 100644 index 0000000000000..b9fdc222b89d4 --- /dev/null +++ b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-off-self-painting-layer2-expected.txt @@ -0,0 +1,12 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x158 + RenderBlock {HTML} at (0,0) size 800x158 + RenderBody {BODY} at (8,16) size 784x134 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 250x18 + text run at (0,0) width 250: "Test passes if you see a green rectangle." +layer at (8,50) size 100x100 scrollWidth 400 + RenderBlock {DIV} at (0,34) size 100x100 +layer at (8,50) size 400x20 backgroundClip at (8,50) size 100x100 clip at (8,50) size 100x100 + RenderBlock (relative positioned) {DIV} at (0,0) size 400x20 [bgcolor=#00FF00] diff --git a/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-on-self-painting-layer-expected.txt b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-on-self-painting-layer-expected.txt new file mode 100644 index 0000000000000..34e817a89a35c --- /dev/null +++ b/LayoutTests/platform/glib/css3/blending/blend-mode-isolation-turn-on-self-painting-layer-expected.txt @@ -0,0 +1,12 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x158 + RenderBlock {HTML} at (0,0) size 800x158 + RenderBody {BODY} at (8,16) size 784x134 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 250x18 + text run at (0,0) width 250: "Test passes if you see a green rectangle." +layer at (8,50) size 100x100 scrollWidth 400 isolatesBlending + RenderBlock {DIV} at (0,34) size 100x100 +layer at (8,50) size 400x20 backgroundClip at (8,50) size 100x100 clip at (8,50) size 100x100 blendMode: difference + RenderBlock {DIV} at (0,0) size 400x20 [bgcolor=#00FF00] diff --git a/LayoutTests/platform/gtk/editing/selection/doubleclick-crash-expected.txt b/LayoutTests/platform/glib/editing/selection/doubleclick-crash-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/doubleclick-crash-expected.txt rename to LayoutTests/platform/glib/editing/selection/doubleclick-crash-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/extend-inside-transforms-backward-expected.txt b/LayoutTests/platform/glib/editing/selection/extend-inside-transforms-backward-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/extend-inside-transforms-backward-expected.txt rename to LayoutTests/platform/glib/editing/selection/extend-inside-transforms-backward-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/extend-inside-transforms-forward-expected.txt b/LayoutTests/platform/glib/editing/selection/extend-inside-transforms-forward-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/extend-inside-transforms-forward-expected.txt rename to LayoutTests/platform/glib/editing/selection/extend-inside-transforms-forward-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/select-all-001-expected.txt b/LayoutTests/platform/glib/editing/selection/select-all-001-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/select-all-001-expected.txt rename to LayoutTests/platform/glib/editing/selection/select-all-001-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/select-all-002-expected.txt b/LayoutTests/platform/glib/editing/selection/select-all-002-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/select-all-002-expected.txt rename to LayoutTests/platform/glib/editing/selection/select-all-002-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/select-all-003-expected.txt b/LayoutTests/platform/glib/editing/selection/select-all-003-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/select-all-003-expected.txt rename to LayoutTests/platform/glib/editing/selection/select-all-003-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/select-all-004-expected.txt b/LayoutTests/platform/glib/editing/selection/select-all-004-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/select-all-004-expected.txt rename to LayoutTests/platform/glib/editing/selection/select-all-004-expected.txt diff --git a/LayoutTests/platform/gtk/editing/selection/simple-line-layout-caret-is-gone-expected.txt b/LayoutTests/platform/glib/editing/selection/simple-line-layout-caret-is-gone-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/selection/simple-line-layout-caret-is-gone-expected.txt rename to LayoutTests/platform/glib/editing/selection/simple-line-layout-caret-is-gone-expected.txt diff --git a/LayoutTests/platform/gtk/editing/spelling/spelling-expected.txt b/LayoutTests/platform/glib/editing/spelling/spelling-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/editing/spelling/spelling-expected.txt rename to LayoutTests/platform/glib/editing/spelling/spelling-expected.txt diff --git a/LayoutTests/platform/glib/fast/block/basic/child-block-level-box-with-height-percent-expected.txt b/LayoutTests/platform/glib/fast/block/basic/child-block-level-box-with-height-percent-expected.txt new file mode 100644 index 0000000000000..c27e7f4127595 --- /dev/null +++ b/LayoutTests/platform/glib/fast/block/basic/child-block-level-box-with-height-percent-expected.txt @@ -0,0 +1,16 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderBlock {DIV} at (0,0) size 300x300 + RenderBlock (anonymous) at (0,0) size 300x18 + RenderText {#text} at (0,0) size 129x18 + text run at (0,0) width 129: "block level box with" + RenderBlock {DIV} at (0,18) size 152x152 [border: (1px solid #FF0000)] + RenderText {#text} at (1,1) size 39x18 + text run at (1,1) width 39: "height" + RenderBlock (anonymous) at (0,170) size 300x36 + RenderText {#text} at (0,0) size 255x36 + text run at (0,0) width 255: "percent when containing block has fixed" + text run at (0,18) width 43: "height." diff --git a/LayoutTests/platform/glib/fast/block/basic/inline-content-with-floating-images2-expected.txt b/LayoutTests/platform/glib/fast/block/basic/inline-content-with-floating-images2-expected.txt new file mode 100644 index 0000000000000..9286e8916fe17 --- /dev/null +++ b/LayoutTests/platform/glib/fast/block/basic/inline-content-with-floating-images2-expected.txt @@ -0,0 +1,41 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 +layer at (8,8) size 300x54 + RenderBlock {DIV} at (0,0) size 300x54 + RenderText {#text} at (40,0) size 22x18 + text run at (40,0) width 22: "this" + RenderImage {IMG} at (0,0) size 20x30 + RenderText {#text} at (62,0) size 10x18 + text run at (62,0) width 10: "is" + RenderImage {IMG} at (20,0) size 20x30 + RenderText {#text} at (0,0) size 292x54 + text run at (72,0) width 208: "one run long long long long long" + text run at (40,18) width 252: "long long long long long long long long" + text run at (0,36) width 87: "long long text" +layer at (8,62) size 300x54 + RenderBlock {DIV} at (0,54) size 300x54 + RenderText {#text} at (20,0) size 22x18 + text run at (20,0) width 22: "this" + RenderImage {IMG} at (280,0) size 20x30 + RenderText {#text} at (42,0) size 10x18 + text run at (42,0) width 10: "is" + RenderImage {IMG} at (260,0) size 20x30 + RenderText {#text} at (8,0) size 292x54 + text run at (52,0) width 208: "one run long long long long long" + text run at (8,18) width 252: "long long long long long long long long" + text run at (213,36) width 87: "long long text" +layer at (8,116) size 300x54 + RenderBlock {DIV} at (0,108) size 300x54 + RenderText {#text} at (40,0) size 22x18 + text run at (40,0) width 22: "this" + RenderImage {IMG} at (0,0) size 20x30 + RenderText {#text} at (62,0) size 10x18 + text run at (62,0) width 10: "is" + RenderImage {IMG} at (280,0) size 20x30 + RenderText {#text} at (28,0) size 272x54 + text run at (72,0) width 208: "one run long long long long long" + text run at (28,18) width 252: "long long long long long long long long" + text run at (213,36) width 87: "long long text" diff --git a/LayoutTests/platform/glib/fast/block/basic/quirk-mode-percent-height-expected.txt b/LayoutTests/platform/glib/fast/block/basic/quirk-mode-percent-height-expected.txt new file mode 100644 index 0000000000000..da9b23ca6674f --- /dev/null +++ b/LayoutTests/platform/glib/fast/block/basic/quirk-mode-percent-height-expected.txt @@ -0,0 +1,24 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 +layer at (8,8) size 202x296 clip at (9,9) size 200x294 scrollWidth 300 + RenderBlock {DIV} at (0,0) size 202x296 [border: (1px solid #008000)] + RenderBlock {DIV} at (1,1) size 300x294 + RenderBlock {DIV} at (0,0) size 202x294 [border: (1px solid #FF0000)] + RenderText {#text} at (1,1) size 178x72 + text run at (1,1) width 171: "This nested div has percent" + text run at (1,19) width 173: "height value and the closest" + text run at (1,37) width 178: "block level containing block" + text run at (1,55) width 96: "box is the ICB." +layer at (8,304) size 202x202 clip at (9,305) size 200x200 scrollWidth 300 + RenderBlock {DIV} at (0,296) size 202x202 [border: (1px solid #008000)] + RenderBlock {DIV} at (1,1) size 300x102 + RenderBlock {DIV} at (0,0) size 202x102 [border: (1px solid #FF0000)] + RenderText {#text} at (1,1) size 178x90 + text run at (1,1) width 171: "This nested div has percent" + text run at (1,19) width 173: "height value and the closest" + text run at (1,37) width 178: "block level containing block" + text run at (1,55) width 165: "box is 2 containing blocks" + text run at (1,73) width 37: "away." diff --git a/LayoutTests/platform/gtk/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html b/LayoutTests/platform/glib/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html similarity index 100% rename from LayoutTests/platform/gtk/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html rename to LayoutTests/platform/glib/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html diff --git a/LayoutTests/platform/gtk/fast/css/line-height-determined-by-primary-font-expected.txt b/LayoutTests/platform/glib/fast/css/line-height-determined-by-primary-font-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/css/line-height-determined-by-primary-font-expected.txt rename to LayoutTests/platform/glib/fast/css/line-height-determined-by-primary-font-expected.txt diff --git a/LayoutTests/platform/gtk/fast/css/line-height-font-order-expected.txt b/LayoutTests/platform/glib/fast/css/line-height-font-order-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/css/line-height-font-order-expected.txt rename to LayoutTests/platform/glib/fast/css/line-height-font-order-expected.txt diff --git a/LayoutTests/platform/gtk/fast/css/line-height-negative-expected.txt b/LayoutTests/platform/glib/fast/css/line-height-negative-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/css/line-height-negative-expected.txt rename to LayoutTests/platform/glib/fast/css/line-height-negative-expected.txt diff --git a/LayoutTests/platform/gtk/fast/css/line-height-overflow-expected.txt b/LayoutTests/platform/glib/fast/css/line-height-overflow-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/css/line-height-overflow-expected.txt rename to LayoutTests/platform/glib/fast/css/line-height-overflow-expected.txt diff --git a/LayoutTests/platform/gtk/fast/css/resize-corner-tracking-transformed-expected.txt b/LayoutTests/platform/glib/fast/css/resize-corner-tracking-transformed-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/css/resize-corner-tracking-transformed-expected.txt rename to LayoutTests/platform/glib/fast/css/resize-corner-tracking-transformed-expected.txt diff --git a/LayoutTests/platform/gtk/fast/css/resize-corner-tracking-transformed-iframe-expected.txt b/LayoutTests/platform/glib/fast/css/resize-corner-tracking-transformed-iframe-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/css/resize-corner-tracking-transformed-iframe-expected.txt rename to LayoutTests/platform/glib/fast/css/resize-corner-tracking-transformed-iframe-expected.txt diff --git a/LayoutTests/platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt b/LayoutTests/platform/glib/fast/dom/navigator-detached-no-crash-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt rename to LayoutTests/platform/glib/fast/dom/navigator-detached-no-crash-expected.txt diff --git a/LayoutTests/platform/glib/fast/events/touch/gesture/touch-gesture-scroll-page-propagated-expected.txt b/LayoutTests/platform/glib/fast/events/touch/gesture/touch-gesture-scroll-page-propagated-expected.txt new file mode 100644 index 0000000000000..69e85fb889858 --- /dev/null +++ b/LayoutTests/platform/glib/fast/events/touch/gesture/touch-gesture-scroll-page-propagated-expected.txt @@ -0,0 +1,10 @@ +This tests that a gesture scroll is propagated from a div to the page when the div has no remaining scroll offset. + +On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". + + +gesture events not implemented on this platform or gesture event scrolling of a document is broken +PASS successfullyParsed is true + +TEST COMPLETE + diff --git a/LayoutTests/platform/gtk/fast/forms/date/date-pseudo-elements-expected.txt b/LayoutTests/platform/glib/fast/forms/date/date-pseudo-elements-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/forms/date/date-pseudo-elements-expected.txt rename to LayoutTests/platform/glib/fast/forms/date/date-pseudo-elements-expected.txt diff --git a/LayoutTests/platform/gtk/fast/forms/indeterminate-expected.txt b/LayoutTests/platform/glib/fast/forms/indeterminate-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/forms/indeterminate-expected.txt rename to LayoutTests/platform/glib/fast/forms/indeterminate-expected.txt diff --git a/LayoutTests/platform/gtk/fast/forms/input-align-image-expected.txt b/LayoutTests/platform/glib/fast/forms/input-align-image-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/forms/input-align-image-expected.txt rename to LayoutTests/platform/glib/fast/forms/input-align-image-expected.txt diff --git a/LayoutTests/platform/gtk/fast/forms/text-control-intrinsic-widths-expected.txt b/LayoutTests/platform/glib/fast/forms/text-control-intrinsic-widths-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/forms/text-control-intrinsic-widths-expected.txt rename to LayoutTests/platform/glib/fast/forms/text-control-intrinsic-widths-expected.txt diff --git a/LayoutTests/platform/gtk/fast/gradients/conic-gradient-alpha-expected.html b/LayoutTests/platform/glib/fast/gradients/conic-gradient-alpha-expected.html similarity index 100% rename from LayoutTests/platform/gtk/fast/gradients/conic-gradient-alpha-expected.html rename to LayoutTests/platform/glib/fast/gradients/conic-gradient-alpha-expected.html diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-1-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-1-expected.txt index 5b21e9cd43d6f..3b0d1bcae696b 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-1-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-1-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 1" diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-10-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-10-and-click-expected.txt index 70164f96fbb94..765ca2a63064d 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-10-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-10-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 1" caret: position 0 of child 0 {#text} of child 1 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-2-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-2-expected.txt index 5b21e9cd43d6f..3b0d1bcae696b 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-2-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-2-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 1" diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-3-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-3-expected.txt index 4dc586f88b652..788d7d8dfe688 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-3-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-3-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 2" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 2" diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-4-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-4-expected.txt index c34c987432a1c..0374630b6d4d9 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-4-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-4-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 58x17 - text run at (12,1) width 58: "summary" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 58x17 + text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-5-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-5-expected.txt index 5b21e9cd43d6f..3b0d1bcae696b 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-5-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-5-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 1" diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-6-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-6-and-click-expected.txt index a8dd0c6ba06b8..31d8649e2c1d4 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-6-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-6-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 1" caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-7-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-7-and-click-expected.txt index a8dd0c6ba06b8..31d8649e2c1d4 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-7-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-7-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 1" caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-8-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-8-and-click-expected.txt index bcefce1854ae8..085265c0ff717 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-8-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-8-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 39x17 - text run at (12,1) width 39: "new 2" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 39x17 + text run at (16,1) width 39: "new 2" caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-add-summary-9-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-add-summary-9-and-click-expected.txt index 4cf0e53cc97e6..144a0b4bae23d 100644 --- a/LayoutTests/platform/glib/fast/html/details-add-summary-9-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-add-summary-9-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 58x17 - text run at (12,1) width 58: "summary" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 58x17 + text run at (16,1) width 58: "summary" caret: position 0 of child 0 {#text} of child 1 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-no-summary1-expected.txt b/LayoutTests/platform/glib/fast/html/details-no-summary1-expected.txt index e18df2724dff6..661f3c6b2ac57 100644 --- a/LayoutTests/platform/glib/fast/html/details-no-summary1-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-no-summary1-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 44x17 - text run at (12,1) width 44: "Details" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 44x17 + text run at (16,1) width 44: "Details" diff --git a/LayoutTests/platform/glib/fast/html/details-no-summary3-expected.txt b/LayoutTests/platform/glib/fast/html/details-no-summary3-expected.txt index e18df2724dff6..661f3c6b2ac57 100644 --- a/LayoutTests/platform/glib/fast/html/details-no-summary3-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-no-summary3-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 44x17 - text run at (12,1) width 44: "Details" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 44x17 + text run at (16,1) width 44: "Details" diff --git a/LayoutTests/platform/glib/fast/html/details-open1-expected.txt b/LayoutTests/platform/glib/fast/html/details-open1-expected.txt index c34c987432a1c..0374630b6d4d9 100644 --- a/LayoutTests/platform/glib/fast/html/details-open1-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-open1-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 58x17 - text run at (12,1) width 58: "summary" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 58x17 + text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/glib/fast/html/details-open3-expected.txt b/LayoutTests/platform/glib/fast/html/details-open3-expected.txt index c34c987432a1c..0374630b6d4d9 100644 --- a/LayoutTests/platform/glib/fast/html/details-open3-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-open3-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 58x17 - text run at (12,1) width 58: "summary" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 58x17 + text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/glib/fast/html/details-open5-expected.txt b/LayoutTests/platform/glib/fast/html/details-open5-expected.txt index c34c987432a1c..0374630b6d4d9 100644 --- a/LayoutTests/platform/glib/fast/html/details-open5-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-open5-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 58x17 - text run at (12,1) width 58: "summary" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 58x17 + text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/glib/fast/html/details-position-expected.txt b/LayoutTests/platform/glib/fast/html/details-position-expected.txt index bc8fd86ac6ba1..ca406cc5b8965 100644 --- a/LayoutTests/platform/glib/fast/html/details-position-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-position-expected.txt @@ -6,18 +6,24 @@ layer at (0,0) size 800x585 RenderBlock {DETAILS} at (0,0) size 784x0 RenderBlock {DETAILS} at (0,0) size 784x19 RenderBlock {DETAILS} at (0,19) size 784x0 -layer at (50,150) size 44x19 - RenderListItem {SUMMARY} at (50,150) size 44x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 32x17 - text run at (12,1) width 32: "fixed" +layer at (50,150) size 48x19 + RenderListItem {SUMMARY} at (50,150) size 48x19 + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 32x17 + text run at (16,1) width 32: "fixed" layer at (158,158) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 46x17 - text run at (12,1) width 46: "relative" -layer at (250,150) size 64x19 - RenderListItem {SUMMARY} at (250,150) size 64x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 52x17 - text run at (12,1) width 52: "absolute" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 46x17 + text run at (16,1) width 46: "relative" +layer at (250,150) size 68x19 + RenderListItem {SUMMARY} at (250,150) size 68x19 + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 52x17 + text run at (16,1) width 52: "absolute" diff --git a/LayoutTests/platform/glib/fast/html/details-remove-summary-1-expected.txt b/LayoutTests/platform/glib/fast/html/details-remove-summary-1-expected.txt index e18df2724dff6..661f3c6b2ac57 100644 --- a/LayoutTests/platform/glib/fast/html/details-remove-summary-1-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-remove-summary-1-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 44x17 - text run at (12,1) width 44: "Details" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 44x17 + text run at (16,1) width 44: "Details" diff --git a/LayoutTests/platform/glib/fast/html/details-remove-summary-2-expected.txt b/LayoutTests/platform/glib/fast/html/details-remove-summary-2-expected.txt index 06e4a0a67309f..50f5219c2dc61 100644 --- a/LayoutTests/platform/glib/fast/html/details-remove-summary-2-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-remove-summary-2-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 70x17 - text run at (12,1) width 70: "summary 2" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 70x17 + text run at (16,1) width 70: "summary 2" diff --git a/LayoutTests/platform/glib/fast/html/details-remove-summary-3-expected.txt b/LayoutTests/platform/glib/fast/html/details-remove-summary-3-expected.txt index cbfb499c70c25..f54a5f2c5879b 100644 --- a/LayoutTests/platform/glib/fast/html/details-remove-summary-3-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-remove-summary-3-expected.txt @@ -5,6 +5,8 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (8,8) size 784x584 RenderBlock {DETAILS} at (0,0) size 784x19 RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 70x17 - text run at (12,1) width 70: "summary 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 70x17 + text run at (16,1) width 70: "summary 1" diff --git a/LayoutTests/platform/glib/fast/html/details-remove-summary-4-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-remove-summary-4-and-click-expected.txt index f37bfcc5043f5..4a17ba1d17af0 100644 --- a/LayoutTests/platform/glib/fast/html/details-remove-summary-4-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-remove-summary-4-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 44x17 - text run at (12,1) width 44: "Details" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 44x17 + text run at (16,1) width 44: "Details" caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 0 {SLOT} of {#document-fragment} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-remove-summary-5-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-remove-summary-5-and-click-expected.txt index 50a70ece88ba0..05d1d06a4fb0b 100644 --- a/LayoutTests/platform/glib/fast/html/details-remove-summary-5-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-remove-summary-5-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 70x17 - text run at (12,1) width 70: "summary 2" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 70x17 + text run at (16,1) width 70: "summary 2" caret: position 0 of child 0 {#text} of child 2 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/html/details-remove-summary-6-and-click-expected.txt b/LayoutTests/platform/glib/fast/html/details-remove-summary-6-and-click-expected.txt index 155be61c997e6..c8b17e36369ae 100644 --- a/LayoutTests/platform/glib/fast/html/details-remove-summary-6-and-click-expected.txt +++ b/LayoutTests/platform/glib/fast/html/details-remove-summary-6-and-click-expected.txt @@ -5,7 +5,9 @@ layer at (0,0) size 800x600 RenderBody {BODY} at (0,0) size 800x600 RenderBlock {DETAILS} at (0,0) size 800x19 RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderListMarker at (0,1) size 12x17: "\x{25B8}" - RenderText {#text} at (12,1) size 70x17 - text run at (12,1) width 70: "summary 1" + RenderInline (generated) at (0,1) size 16x17 + RenderText at (0,1) size 16x17 + text run at (0,1) width 16: "\x{25B6} " + RenderText {#text} at (16,1) size 70x17 + text run at (16,1) width 70: "summary 1" caret: position 0 of child 0 {#text} of child 1 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/glib/fast/inline/simple-inline-inflow-positioned-expected.txt b/LayoutTests/platform/glib/fast/inline/simple-inline-inflow-positioned-expected.txt new file mode 100644 index 0000000000000..2f3f4e9500803 --- /dev/null +++ b/LayoutTests/platform/glib/fast/inline/simple-inline-inflow-positioned-expected.txt @@ -0,0 +1,21 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 +layer at (8,8) size 202x202 clip at (9,9) size 200x200 + RenderBlock {DIV} at (0,0) size 202x202 [border: (1px solid #008000)] + RenderInline {SPAN} at (1,1) size 24x18 + RenderText {#text} at (1,1) size 24x18 + text run at (1,1) width 24: "first" + RenderInline {SPAN} at (98,1) size 30x18 + RenderText {#text} at (98,1) size 30x18 + text run at (98,1) width 30: "forth" +layer at (108,8) size 73x18 backgroundClip at (9,9) size 200x200 clip at (9,9) size 200x200 + RenderInline (relative positioned) {SPAN} at (25,1) size 73x18 + RenderInline {SPAN} at (25,1) size 44x18 + RenderText {#text} at (25,1) size 44x18 + text run at (25,1) width 44: "second" + RenderInline {SPAN} at (69,1) size 29x18 + RenderText {#text} at (69,1) size 29x18 + text run at (69,1) width 29: "third" diff --git a/LayoutTests/platform/glib/fast/inline/simple-inline-with-out-of-flow-descendant-expected.txt b/LayoutTests/platform/glib/fast/inline/simple-inline-with-out-of-flow-descendant-expected.txt new file mode 100644 index 0000000000000..96318e18139a8 --- /dev/null +++ b/LayoutTests/platform/glib/fast/inline/simple-inline-with-out-of-flow-descendant-expected.txt @@ -0,0 +1,17 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 +layer at (8,8) size 202x202 clip at (9,9) size 200x200 + RenderBlock {DIV} at (0,0) size 202x202 [border: (1px solid #008000)] + RenderText {#text} at (1,1) size 35x18 + text run at (1,1) width 35: "inline" + RenderText {#text} at (36,1) size 46x18 + text run at (36,1) width 46: "content" +layer at (94,74) size 67x56 + RenderBlock (positioned) {SPAN} at (50,50) size 67x56 [border: (1px solid #0000FF)] + RenderText {#text} at (1,1) size 65x54 + text run at (1,1) width 52: "absolute" + text run at (1,19) width 65: "positioned" + text run at (1,37) width 46: "content" diff --git a/LayoutTests/platform/glib/fast/inline/simple-inline-with-out-of-flow-descendant2-expected.txt b/LayoutTests/platform/glib/fast/inline/simple-inline-with-out-of-flow-descendant2-expected.txt new file mode 100644 index 0000000000000..48adc5592e183 --- /dev/null +++ b/LayoutTests/platform/glib/fast/inline/simple-inline-with-out-of-flow-descendant2-expected.txt @@ -0,0 +1,15 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 +layer at (8,8) size 202x202 clip at (9,9) size 200x200 + RenderBlock {DIV} at (0,0) size 202x202 [border: (1px solid #008000)] + RenderText {#text} at (1,1) size 30x15 + text run at (1,1) width 30: "before" + RenderText {#text} at (61,1) size 21x15 + text run at (61,1) width 21: "after" +layer at (108,108) size 30x15 + RenderInline (relative positioned) {SPAN} at (31,1) size 30x15 + RenderText {#text} at (31,1) size 30x15 + text run at (31,1) width 30: "nested" diff --git a/LayoutTests/platform/glib/fast/inspector-support/matchedrules-expected.txt b/LayoutTests/platform/glib/fast/inspector-support/matchedrules-expected.txt deleted file mode 100644 index 7a6089380222e..0000000000000 --- a/LayoutTests/platform/glib/fast/inspector-support/matchedrules-expected.txt +++ /dev/null @@ -1,11 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x576 - RenderBlock {DIV} at (0,0) size 784x18 [color=#FF0000] - RenderText {#text} at (0,0) size 76x17 - text run at (0,0) width 76: "Hello world" - RenderBlock {P} at (0,34) size 784x18 - RenderText {#text} at (0,0) size 215x17 - text run at (0,0) width 215: "The number of matched rules is: 1" diff --git a/LayoutTests/platform/glib/fast/quirks/active-quirks-by-domain-expected.txt b/LayoutTests/platform/glib/fast/quirks/active-quirks-by-domain-expected.txt index 5589ea0c76f40..e3b08bb528528 100644 --- a/LayoutTests/platform/glib/fast/quirks/active-quirks-by-domain-expected.txt +++ b/LayoutTests/platform/glib/fast/quirks/active-quirks-by-domain-expected.txt @@ -53,6 +53,8 @@ https://www.cbssports.com/ (none) https://www.cnn.com/ (none) +https://configurator.audi.com/ + (none) https://www.digitaltrends.com/ (none) https://discord.com/ @@ -295,6 +297,7 @@ https://www.theguardian.com/ https://www.thesaurus.com/ (none) https://www.tiktok.com/ + NeedsTikTokCaptchaSliderTouchActionQuirk NeedsTikTokCommentsOverflowingContentQuirk NeedsTikTokVideoOverflowingContentQuirk NeedsUserAgentStringOverrideQuirk diff --git a/LayoutTests/platform/glib/fast/replaced/border-radius-clip-expected.txt b/LayoutTests/platform/glib/fast/replaced/border-radius-clip-expected.txt deleted file mode 100644 index 96593b47be314..0000000000000 --- a/LayoutTests/platform/glib/fast/replaced/border-radius-clip-expected.txt +++ /dev/null @@ -1,33 +0,0 @@ -layer at (0,0) size 785x952 - RenderView at (0,0) size 785x600 -layer at (0,0) size 785x928 - RenderBlock {HTML} at (0,0) size 785x928 - RenderBody {BODY} at (8,8) size 769x912 - RenderText {#text} at (0,0) size 457x17 - text run at (0,0) width 457: "All of the replaced elements below should be clipped to a border-radius. " - RenderBR {BR} at (0,0) size 0x0 - RenderImage {IMG} at (0,18) size 100x100 - RenderText {#text} at (100,104) size 4x17 - text run at (100,104) width 4: " " - RenderBR {BR} at (0,0) size 0x0 - RenderImage {INPUT} at (0,122) size 100x100 - RenderText {#text} at (100,208) size 4x17 - text run at (100,208) width 4: " " - RenderBR {BR} at (0,0) size 0x0 - RenderIFrame {IFRAME} at (0,226) size 304x154 [border: (2px inset #000000)] - layer at (0,0) size 300x150 - RenderView at (0,0) size 300x150 - layer at (0,0) size 300x150 - RenderBlock {HTML} at (0,0) size 300x150 - RenderBody {BODY} at (0,0) size 300x150 - RenderImage {IMG} at (0,0) size 100x100 - RenderText {#text} at (304,366) size 4x17 - text run at (304,366) width 4: " " - RenderBR {BR} at (0,0) size 0x0 - RenderText {#text} at (300,520) size 4x17 - text run at (300,520) width 4: " " - RenderBR {BR} at (0,0) size 0x0 - RenderEmbeddedObject {EMBED} at (0,538) size 556x406 [bgcolor=#00FF00] [border: (3px solid #000000)] - RenderText {#text} at (0,0) size 0x0 -layer at (8,392) size 300x150 - RenderVideo {VIDEO} at (0,384) size 300x150 diff --git a/LayoutTests/platform/glib/fast/replaced/embed-display-none-expected.txt b/LayoutTests/platform/glib/fast/replaced/embed-display-none-expected.txt deleted file mode 100644 index 7809b7a57d7a0..0000000000000 --- a/LayoutTests/platform/glib/fast/replaced/embed-display-none-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x50 - RenderBlock {HTML} at (0,0) size 800x50 - RenderBody {BODY} at (8,16) size 784x18 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 340x17 - text run at (0,0) width 340: "Should not see the embed below (it has display:none)." diff --git a/LayoutTests/platform/gtk/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html b/LayoutTests/platform/glib/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html similarity index 100% rename from LayoutTests/platform/gtk/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html rename to LayoutTests/platform/glib/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html diff --git a/LayoutTests/platform/glib/fast/text/emphasis-overlap-expected.txt b/LayoutTests/platform/glib/fast/text/emphasis-overlap-expected.txt new file mode 100644 index 0000000000000..cf1355bb5c0be --- /dev/null +++ b/LayoutTests/platform/glib/fast/text/emphasis-overlap-expected.txt @@ -0,0 +1,101 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderBlock {DIV} at (0,0) size 784x176 + RenderBlock {DIV} at (0,24) size 128x144 + RenderText {#text} at (0,0) size 128x32 + text run at (0,0) width 128: "1111" + RenderBR {BR} at (128,0) size 0x32 + RenderInline {SPAN} at (0,32) size 128x32 + RenderText {#text} at (0,32) size 128x32 + text run at (0,32) width 128: "2222" + RenderBR {BR} at (128,32) size 0x32 + RenderInline {SPAN} at (0,80) size 128x32 [color=#0000FF] + RenderText {#text} at (0,80) size 128x32 + text run at (0,80) width 128: "3333" + RenderBR {BR} at (128,80) size 0x32 + RenderText {#text} at (0,112) size 128x32 + text run at (0,112) width 128: "4444" + RenderText {#text} at (128,148) size 4x17 + text run at (128,148) width 4: " " + RenderBlock {DIV} at (132,24) size 128x144 + RenderText {#text} at (0,0) size 128x32 + text run at (0,0) width 128: "1111" + RenderBR {BR} at (128,0) size 0x32 + RenderInline {SPAN} at (0,32) size 128x32 [color=#008000] + RenderText {#text} at (0,32) size 128x32 + text run at (0,32) width 128: "2222" + RenderBR {BR} at (128,32) size 0x32 + RenderInline {SPAN} at (0,80) size 128x32 + RenderText {#text} at (0,80) size 128x32 + text run at (0,80) width 128: "3333" + RenderBR {BR} at (128,80) size 0x32 + RenderText {#text} at (0,112) size 128x32 + text run at (0,112) width 128: "4444" + RenderText {#text} at (260,148) size 4x17 + text run at (260,148) width 4: " " + RenderBlock {DIV} at (264,8) size 128x160 + RenderText {#text} at (0,0) size 128x32 + text run at (0,0) width 128: "1111" + RenderBR {BR} at (128,0) size 0x32 + RenderInline {SPAN} at (0,32) size 128x32 [color=#008000] + RenderText {#text} at (0,32) size 128x32 + text run at (0,32) width 128: "2222" + RenderBR {BR} at (128,32) size 0x32 + RenderInline {SPAN} at (0,96) size 128x32 [color=#0000FF] + RenderText {#text} at (0,96) size 128x32 + text run at (0,96) width 128: "3333" + RenderBR {BR} at (128,96) size 0x32 + RenderText {#text} at (0,128) size 128x32 + text run at (0,128) width 128: "4444" + RenderText {#text} at (0,0) size 0x0 + RenderBlock {DIV} at (0,176) size 784x176 + RenderBlock {DIV} at (0,24) size 128x144 + RenderText {#text} at (0,0) size 128x32 + text run at (0,0) width 128: "1111" + RenderBR {BR} at (128,0) size 0x32 + RenderInline {SPAN} at (0,32) size 128x32 + RenderText {#text} at (0,32) size 128x32 + text run at (0,32) width 128: "2222" + RenderBR {BR} at (128,32) size 0x32 + RenderInline {SPAN} at (0,64) size 128x32 [color=#008000] + RenderText {#text} at (0,80) size 128x32 + text run at (0,80) width 128: "3333" + RenderBR {BR} at (128,80) size 0x32 + RenderText {#text} at (0,112) size 128x32 + text run at (0,112) width 128: "4444" + RenderText {#text} at (128,139) size 4x17 + text run at (128,139) width 4: " " + RenderBlock {DIV} at (132,24) size 128x144 + RenderText {#text} at (0,0) size 128x32 + text run at (0,0) width 128: "1111" + RenderBR {BR} at (128,0) size 0x32 + RenderInline {SPAN} at (0,48) size 128x32 [color=#0000FF] + RenderText {#text} at (0,32) size 128x32 + text run at (0,32) width 128: "2222" + RenderBR {BR} at (128,32) size 0x32 + RenderInline {SPAN} at (0,80) size 128x32 + RenderText {#text} at (0,80) size 128x32 + text run at (0,80) width 128: "3333" + RenderBR {BR} at (128,80) size 0x32 + RenderText {#text} at (0,112) size 128x32 + text run at (0,112) width 128: "4444" + RenderText {#text} at (260,139) size 4x17 + text run at (260,139) width 4: " " + RenderBlock {DIV} at (264,8) size 128x160 + RenderText {#text} at (0,0) size 128x32 + text run at (0,0) width 128: "1111" + RenderBR {BR} at (128,0) size 0x32 + RenderInline {SPAN} at (0,48) size 128x32 [color=#0000FF] + RenderText {#text} at (0,32) size 128x32 + text run at (0,32) width 128: "2222" + RenderBR {BR} at (128,32) size 0x32 + RenderInline {SPAN} at (0,80) size 128x32 [color=#008000] + RenderText {#text} at (0,96) size 128x32 + text run at (0,96) width 128: "3333" + RenderBR {BR} at (128,96) size 0x32 + RenderText {#text} at (0,128) size 128x32 + text run at (0,128) width 128: "4444" + RenderText {#text} at (0,0) size 0x0 diff --git a/LayoutTests/platform/glib/fast/text/font-load-data-partitioned-alphabet-expected.txt b/LayoutTests/platform/glib/fast/text/font-load-data-partitioned-alphabet-expected.txt deleted file mode 100644 index 7794a79eb5ae6..0000000000000 --- a/LayoutTests/platform/glib/fast/text/font-load-data-partitioned-alphabet-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -font-load-data-partitioned-alphabet.html - didFinishLoading -data:;base64,AAEAAAALAIAAAwAwT1MvMnNl+esAAAC8AAAAYGNtYXAAhwCDAAABHAAAADxnYXNwABcACQAAAVgAAAAQZ2x5Zs7yyEgAAAFoAAAHXmhlYWTbUM21AAAIyAAAADZoaGVhBwoDbAAACQAAAAAkaG10eCEQAH0AAAkkAAABLGxvY2FC4ETIAAAKUAAAAJhtYXhwAE4ACQAACugAAAAgbmFtZbgpxhkAAAsIAAAponBvc3QEPCueAAA0rAAAAMYAAwPWAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAIABAAAAAAAAACAAACvEAAgSAAAAAAAAAAAVzNDIABAACAAawMg/zgAAAMgAMj/EPwHAAD//wMgAyAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACYAa///AAAAIAAo////4//iAAEAAAAAAAAAAAADAAgAAgAQAAH//wADAAIAfQAAA2sDIAADAAcAADMRIRElIREhfQLu/Y8B9P4MAyD84H0CJgABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAAABAAAAAYAAskn6wV8PPPUACQPoAAAAALNvX1kAAAAAxN2rJAAA/zgD6AMgAAAAAwAAAAAAAAAAAAEAAAMg/zgAAAPoAAAAAAPoAAEAAAAAAAAAAAAAAAAAAABLA+gAfQAAAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAAAAFAAUABQAFAAhAC4AOwBIAFUAYgBvAHwAiQCWAKMAsAC9AMoA1wDkAPEA/gELARgBJQEyAT8BTAFZAWYBcwGAAY0BmgGnAbQBwQHOAdsB6AH1AgICDwIcAikCNgJDAlACXQJqAncChAKRAp4CqwK4AsUC0gLfAuwC+QMGAxMDIAMtAzoDRwNUA2EDbgN7A4gDlQOiA68AAQAAAEsACAACAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAACQBtgAAAAAAAAAAAfAAAAAAAAAAAAABAAgB8AAAAAAAAAACAA4B+AAAAAAAAAADACICBgAAAAAAAAAEAAgCKAAAAAAAAAAFABgCMAAAAAAAAAAGAAgCSAAAAAAAAAAKEGgCUAAAAAAAAAALACQSuAAAAAAAAAAOAFIS3AABAAAAAAAAAPgTLgABAAAAAAABAAQUJgABAAAAAAACAAcUKgABAAAAAAADABEUMQABAAAAAAAEAAQUQgABAAAAAAAFAAwURgABAAAAAAAGAAQUUgABAAAAAAAKAAAUVgABAAAAAAALABIUVgABAAAAAAAOACkUaAABAAAAAAAQAAQUkQABAAAAAAARAAcUlQABAAAAAAASAAQUnAADAAEECQAAAfAUoAADAAEECQABAAgWkAADAAEECQACAA4WmAADAAEECQADACIWpgADAAEECQAEAAgWyAADAAEECQAFABgW0AADAAEECQAGAAgW6AADAAEECQAKEGgW8AADAAEECQALACQnWAADAAEECQAOAFInfAADAAEECQAQAAgnzgADAAEECQARAA4n1gADAAEECQASAAgn5ABUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAYgBlAGwAbwBuAGcAcwAgAHQAbwAgAHQAaABlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuACAASQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAgAHQAaABhAHQAIABkAG8AIABuAG8AdAAgAHIAZQBjAG8AZwBuAGkAegBlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAgAG8AdwBuAGUAcgBzAGgAaQBwACAAbwBmACAAdABoAGUAcwBlACAAZgBpAGwAZQBzACwAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAQwByAGUAYQB0AGkAdgBlACAAQwBvAG0AbQBvAG4AcwAgAFoAZQByAG8AIABkAGUAYwBsAGEAcgBhAHQAaQBvAG4AIABhAHAAcABsAGkAZQBzADoAIABoAHQAdABwADoALwAvAGwAYQBiAHMALgBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AegBlAHIAbwAtAHcAYQBpAHYAZQAvADEALgAwAC8AdQBzAC8AbABlAGcAYQBsAGMAbwBkAGUAQQBoAGUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwACAAQQBoAGUAbQBBAGgAZQBtAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwAEEAaABlAG0AVABoAGUAIABBAGgAZQBtACAAZgBvAG4AdAAgAHcAYQBzACAAZABlAHYAZQBsAG8AcABlAGQAIABiAHkAIABUAG8AZABkACAARgBhAGgAcgBuAGUAcgAgAGEAbgBkACAATQB5AGwAZQBzACAAQwAuACAATQBhAHgAZgBpAGUAbABkACAAdABvACAAaABlAGwAcAAgAHQAZQBzAHQAIAB3AHIAaQB0AGUAcgBzACAAZABlAHYAZQBsAG8AcAAgAHAAcgBlAGQAaQBjAHQAYQBiAGwAZQAgAHQAZQBzAHQAcwAuACAAVABoAGUAIAB1AG4AaQB0AHMAIABwAGUAcgAgAGUAbQAgAGkAcwAgADEAMAAwADAALAAgAHQAaABlACAAYQBkAHYAYQBuAGMAZQAgAGkAcwAgADgAMAAwACwAIABhAG4AZAAgAHQAaABlACAAZABlAHMAYwBlAG4AdAAgAGkAcwAgADIAMAAwACwAIAB0AGgAZQByAGUAYgB5ACAAbQBhAGsAaQBuAGcAIAB0AGgAZQAgAGUAbQAgAHMAcQB1AGEAcgBlACAAZQB4AGEAYwB0AGwAeQAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGcAbAB5AHAAaABzACAAZgBvAHIAIABtAG8AcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAcwAgAGkAcwAgAHMAaQBtAHAAbAB5ACAAYQAgAGIAbwB4ACAAdwBoAGkAYwBoACAAZgBpAGwAbABzACAAdABoAGkAcwAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIABtAGEAcABwAGUAZAAgAHQAbwAgAHQAaABpAHMAIABmAHUAbABsACAAcwBxAHUAYQByAGUAIAB3AGkAdABoACAAYQAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAcgBhAG4AZwBlAHMAOgAgAFUAKwAyADAALQBVACsAMgA2ACwAIABVACsAMgA4AC0AVQArADYARgAsACAAVQArADcAMQAtAFUAKwA3AEUALAAgAFUAKwBBADAALQBVACsAQwA4ACwAIABVACsAQwBBAC0AVQArAEYARgAsACAAVQArADEAMwAxACwAIABVACsAMQA1ADIALQBVACsAMQA1ADMALAAgAFUAKwAxADcAOAAsACAAVQArADEAOQAyACwAIABVACsAMgBDADYALQBVACsAMgBDADcALAAgAFUAKwAyAEMAOQAsACAAVQArADIARAA4AC0AVQArADIARABEACwAIABVACsAMwA5ADQALAAgAFUAKwAzAEEANQAsACAAVQArADMAQQA3ACwAIABVACsAMwBBADkALAAgAFUAKwAzAEIAQwAsACAAVQArADMAQwAwACwAIABVACsAMgAwADEAMwAtAFUAKwAyADAAMQA0ACwAIABVACsAMgAwADEAOAAtAFUAKwAyADAAMQBBACwAIABVACsAMgAwADEAQwAtAFUAKwAyADAAMQBFACwAIABVACsAMgAwADIAMAAtAFUAKwAyADAAMgAyACwAIABVACsAMgAwADIANgAsACAAVQArADIAMAAzADAALAAgAFUAKwAyADAAMwA5AC0AVQArADIAMAAzAEEALAAgAFUAKwAyADAANAA0ACwAIABVACsAMgAxADIAMgAsACAAVQArADIAMQAyADYALAAgAFUAKwAyADIAMAAyACwAIABVACsAMgAyADAANgAsACAAVQArADIAMgAwAEYALAAgAFUAKwAyADIAMQAxAC0AVQArADIAMgAxADIALAAgAFUAKwAyADIAMQA5AC0AVQArADIAMgAxAEEALAAgAFUAKwAyADIAMQBFACwAIABVACsAMgAyADIAQgAsACAAVQArADIAMgA0ADgALAAgAFUAKwAyADIANgAwACwAIABVACsAMgAyADYANAAtAFUAKwAyADIANgA1ACwAIABVACsAMgAyAEYAMgAsACAAVQArADIANQBDAEEALAAgAFUAKwAzADAAMAA3ACwAIABVACsANABFADAAMAAsACAAVQArADQARQAwADMALAAgAFUAKwA0AEUAMAA5ACwAIABVACsANABFADUARAAsACAAVQArADQARQA4AEMALAAgAFUAKwA0AEUAOQA0ACwAIABVACsANQAxADYAQgAsACAAVQArADUAMQA2AEQALAAgAFUAKwA1ADMANAAxACwAIABVACsANQA2AEQANwAsACAAVQArADUANgBEAEIALAAgAFUAKwA1ADcAMQBGACwAIABVACsANgA3ADIAOAAsACAAVQArADYAQwAzADQALAAgAFUAKwA3ADAANgBCACwAIABVACsAOQAxAEQAMQAsACAAVQArAEYAMAAwADAALQBVACsARgAwADAAMgAuACAAVABoAGUAIABjAG8AZABlAHAAbwBpAG4AdABzACAAdwBoAGkAYwBoACAAYQByAGUAIABtAGEAcABwAGUAZAAgAHQAbwAgAHMAbwBtAGUAdABoAGkAbgBnACAAZQBsAHMAZQAgAGEAcgBlACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwA6ACAAIgAgACIAIAAoAFUAKwAyADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACIAcAAiACAAKABVACsANwAwACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABhAHMAYwBlAG4AdAAgAGIAdQB0ACAAZgB1AGwAbAAgAGQAZQBzAGMAZQBuAHQAOwAgACIAyQAiACAAKABVACsAQwA5ACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABkAGUAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAYQBzAGMAZQBuAHQAOwAgAE4AbwBuAC0AYgByAGUAYQBrAGkAbgBnACAAcwBwAGEAYwBlACAAKABVACsAQQAwACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvAC0AdwBpAGQAdABoACAAbgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBGAEUARgBGACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgADAAIABhAGQAdgBhAG4AYwBlADsAIABFAG4AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAyACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAGgAYQBsAGYAIABhAGQAdgBhAG4AYwBlADsAIABFAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAzACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAcgBlAGUALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIAB0AGgAaQByAGQAIABhAGQAdgBhAG4AYwBlADsAIABGAG8AdQByAC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA1ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcQB1AGEAcgB0AGUAcgAgAGEAZAB2AGEAbgBjAGUAOwAgAFMAaQB4AC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA2ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcwBpAHgAdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAVABoAGkAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADkAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABmAGkAZgB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABIAGEAaQByACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAQQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAZQBuAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABCACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEkAZABlAG8AZwByAGEAcABoAGkAYwAgAHMAcABhAGMAZQAgACgAVQArADMAMAAwADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABuAG8AbgAtAGoAbwBpAG4AZQByACAAKABVACsAMgAwADAAQwApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABuAG8AIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvACAAdwBpAGQAdABoACAAagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABEACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEcAcgBlAGUAawAgAGMAYQBwAGkAdABhAGwAIABsAGUAdAB0AGUAcgAgAEMAaABpACAAKABVACsAMwBBADcAKQA6ACAAVABoAGkAbgAgAGgAbwByAGkAegBvAG4AdABhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJqKgAiACAAKABVACsANgBBADIAQQApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAVQBwAHMAaQBsAG8AbgAgACgAVQArADMAQQA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJ+tQAiACAAKABVACsANwBFAEIANQApADoAIABUAGgAaQBuACAAdgBlAHIAdABpAGMAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwBjAC4AbwByAGcAaAB0AHQAcAA6AC8ALwBkAGUAdgAuAHcAMwAuAG8AcgBnAC8AQwBTAFMALwBmAG8AbgB0AHMALwBhAGgAZQBtAC8AQwBPAFAAWQBJAE4ARwAKVGhlIEFoZW0gZm9udCBiZWxvbmdzIHRvIHRoZSBwdWJsaWMgZG9tYWluLiBJbiBqdXJpc2RpY3Rpb25zIHRoYXQgZG8gbm90IHJlY29nbml6ZSBwdWJsaWMgZG9tYWluIG93bmVyc2hpcCBvZiB0aGVzZSBmaWxlcywgdGhlIGZvbGxvd2luZyBDcmVhdGl2ZSBDb21tb25zIFplcm8gZGVjbGFyYXRpb24gYXBwbGllczogaHR0cDovL2xhYnMuY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy96ZXJvLXdhaXZlLzEuMC91cy9sZWdhbGNvZGVBaGVtUmVndWxhclZlcnNpb24gMS41MCBBaGVtQWhlbVZlcnNpb24gMS41MEFoZW1odHRwOi8vd3d3LnczYy5vcmdodHRwOi8vZGV2LnczLm9yZy9DU1MvZm9udHMvYWhlbS9DT1BZSU5HCkFoZW1SZWd1bGFyQWhlbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAYgBlAGwAbwBuAGcAcwAgAHQAbwAgAHQAaABlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuACAASQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAgAHQAaABhAHQAIABkAG8AIABuAG8AdAAgAHIAZQBjAG8AZwBuAGkAegBlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAgAG8AdwBuAGUAcgBzAGgAaQBwACAAbwBmACAAdABoAGUAcwBlACAAZgBpAGwAZQBzACwAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAQwByAGUAYQB0AGkAdgBlACAAQwBvAG0AbQBvAG4AcwAgAFoAZQByAG8AIABkAGUAYwBsAGEAcgBhAHQAaQBvAG4AIABhAHAAcABsAGkAZQBzADoAIABoAHQAdABwADoALwAvAGwAYQBiAHMALgBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AegBlAHIAbwAtAHcAYQBpAHYAZQAvADEALgAwAC8AdQBzAC8AbABlAGcAYQBsAGMAbwBkAGUAQQBoAGUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwACAAQQBoAGUAbQBBAGgAZQBtAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwAEEAaABlAG0AVABoAGUAIABBAGgAZQBtACAAZgBvAG4AdAAgAHcAYQBzACAAZABlAHYAZQBsAG8AcABlAGQAIABiAHkAIABUAG8AZABkACAARgBhAGgAcgBuAGUAcgAgAGEAbgBkACAATQB5AGwAZQBzACAAQwAuACAATQBhAHgAZgBpAGUAbABkACAAdABvACAAaABlAGwAcAAgAHQAZQBzAHQAIAB3AHIAaQB0AGUAcgBzACAAZABlAHYAZQBsAG8AcAAgAHAAcgBlAGQAaQBjAHQAYQBiAGwAZQAgAHQAZQBzAHQAcwAuACAAVABoAGUAIAB1AG4AaQB0AHMAIABwAGUAcgAgAGUAbQAgAGkAcwAgADEAMAAwADAALAAgAHQAaABlACAAYQBkAHYAYQBuAGMAZQAgAGkAcwAgADgAMAAwACwAIABhAG4AZAAgAHQAaABlACAAZABlAHMAYwBlAG4AdAAgAGkAcwAgADIAMAAwACwAIAB0AGgAZQByAGUAYgB5ACAAbQBhAGsAaQBuAGcAIAB0AGgAZQAgAGUAbQAgAHMAcQB1AGEAcgBlACAAZQB4AGEAYwB0AGwAeQAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGcAbAB5AHAAaABzACAAZgBvAHIAIABtAG8AcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAcwAgAGkAcwAgAHMAaQBtAHAAbAB5ACAAYQAgAGIAbwB4ACAAdwBoAGkAYwBoACAAZgBpAGwAbABzACAAdABoAGkAcwAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIABtAGEAcABwAGUAZAAgAHQAbwAgAHQAaABpAHMAIABmAHUAbABsACAAcwBxAHUAYQByAGUAIAB3AGkAdABoACAAYQAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAcgBhAG4AZwBlAHMAOgAgAFUAKwAyADAALQBVACsAMgA2ACwAIABVACsAMgA4AC0AVQArADYARgAsACAAVQArADcAMQAtAFUAKwA3AEUALAAgAFUAKwBBADAALQBVACsAQwA4ACwAIABVACsAQwBBAC0AVQArAEYARgAsACAAVQArADEAMwAxACwAIABVACsAMQA1ADIALQBVACsAMQA1ADMALAAgAFUAKwAxADcAOAAsACAAVQArADEAOQAyACwAIABVACsAMgBDADYALQBVACsAMgBDADcALAAgAFUAKwAyAEMAOQAsACAAVQArADIARAA4AC0AVQArADIARABEACwAIABVACsAMwA5ADQALAAgAFUAKwAzAEEANQAsACAAVQArADMAQQA3ACwAIABVACsAMwBBADkALAAgAFUAKwAzAEIAQwAsACAAVQArADMAQwAwACwAIABVACsAMgAwADEAMwAtAFUAKwAyADAAMQA0ACwAIABVACsAMgAwADEAOAAtAFUAKwAyADAAMQBBACwAIABVACsAMgAwADEAQwAtAFUAKwAyADAAMQBFACwAIABVACsAMgAwADIAMAAtAFUAKwAyADAAMgAyACwAIABVACsAMgAwADIANgAsACAAVQArADIAMAAzADAALAAgAFUAKwAyADAAMwA5AC0AVQArADIAMAAzAEEALAAgAFUAKwAyADAANAA0ACwAIABVACsAMgAxADIAMgAsACAAVQArADIAMQAyADYALAAgAFUAKwAyADIAMAAyACwAIABVACsAMgAyADAANgAsACAAVQArADIAMgAwAEYALAAgAFUAKwAyADIAMQAxAC0AVQArADIAMgAxADIALAAgAFUAKwAyADIAMQA5AC0AVQArADIAMgAxAEEALAAgAFUAKwAyADIAMQBFACwAIABVACsAMgAyADIAQgAsACAAVQArADIAMgA0ADgALAAgAFUAKwAyADIANgAwACwAIABVACsAMgAyADYANAAtAFUAKwAyADIANgA1ACwAIABVACsAMgAyAEYAMgAsACAAVQArADIANQBDAEEALAAgAFUAKwAzADAAMAA3ACwAIABVACsANABFADAAMAAsACAAVQArADQARQAwADMALAAgAFUAKwA0AEUAMAA5ACwAIABVACsANABFADUARAAsACAAVQArADQARQA4AEMALAAgAFUAKwA0AEUAOQA0ACwAIABVACsANQAxADYAQgAsACAAVQArADUAMQA2AEQALAAgAFUAKwA1ADMANAAxACwAIABVACsANQA2AEQANwAsACAAVQArADUANgBEAEIALAAgAFUAKwA1ADcAMQBGACwAIABVACsANgA3ADIAOAAsACAAVQArADYAQwAzADQALAAgAFUAKwA3ADAANgBCACwAIABVACsAOQAxAEQAMQAsACAAVQArAEYAMAAwADAALQBVACsARgAwADAAMgAuACAAVABoAGUAIABjAG8AZABlAHAAbwBpAG4AdABzACAAdwBoAGkAYwBoACAAYQByAGUAIABtAGEAcABwAGUAZAAgAHQAbwAgAHMAbwBtAGUAdABoAGkAbgBnACAAZQBsAHMAZQAgAGEAcgBlACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwA6ACAAIgAgACIAIAAoAFUAKwAyADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACIAcAAiACAAKABVACsANwAwACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABhAHMAYwBlAG4AdAAgAGIAdQB0ACAAZgB1AGwAbAAgAGQAZQBzAGMAZQBuAHQAOwAgACIAyQAiACAAKABVACsAQwA5ACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABkAGUAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAYQBzAGMAZQBuAHQAOwAgAE4AbwBuAC0AYgByAGUAYQBrAGkAbgBnACAAcwBwAGEAYwBlACAAKABVACsAQQAwACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvAC0AdwBpAGQAdABoACAAbgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBGAEUARgBGACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgADAAIABhAGQAdgBhAG4AYwBlADsAIABFAG4AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAyACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAGgAYQBsAGYAIABhAGQAdgBhAG4AYwBlADsAIABFAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAzACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAcgBlAGUALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIAB0AGgAaQByAGQAIABhAGQAdgBhAG4AYwBlADsAIABGAG8AdQByAC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA1ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcQB1AGEAcgB0AGUAcgAgAGEAZAB2AGEAbgBjAGUAOwAgAFMAaQB4AC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA2ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcwBpAHgAdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAVABoAGkAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADkAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABmAGkAZgB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABIAGEAaQByACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAQQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAZQBuAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABCACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEkAZABlAG8AZwByAGEAcABoAGkAYwAgAHMAcABhAGMAZQAgACgAVQArADMAMAAwADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABuAG8AbgAtAGoAbwBpAG4AZQByACAAKABVACsAMgAwADAAQwApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABuAG8AIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvACAAdwBpAGQAdABoACAAagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABEACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEcAcgBlAGUAawAgAGMAYQBwAGkAdABhAGwAIABsAGUAdAB0AGUAcgAgAEMAaABpACAAKABVACsAMwBBADcAKQA6ACAAVABoAGkAbgAgAGgAbwByAGkAegBvAG4AdABhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJqKgAiACAAKABVACsANgBBADIAQQApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAVQBwAHMAaQBsAG8AbgAgACgAVQArADMAQQA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJ+tQAiACAAKABVACsANwBFAEIANQApADoAIABUAGgAaQBuACAAdgBlAHIAdABpAGMAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwBjAC4AbwByAGcAaAB0AHQAcAA6AC8ALwBkAGUAdgAuAHcAMwAuAG8AcgBnAC8AQwBTAFMALwBmAG8AbgB0AHMALwBhAGgAZQBtAC8AQwBPAFAAWQBJAE4ARwAKAEEAaABlAG0AUgBlAGcAdQBsAGEAcgBBAGgAZQBtAAAAAgAAAAAAAP97ABQAAAAAAAAAAAAAAAAAAAAAAAAAAABLAAABAgEDAAMABAAFAAYABwAIAAkACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLBE5VTEwIZ2x5cGgyNDMAAA== - willSendRequest redirectResponse (null) -data:;base64,AAEAAAALAIAAAwAwT1MvMnNl+esAAAC8AAAAYGNtYXAAhwCDAAABHAAAADxnYXNwABcACQAAAVgAAAAQZ2x5Zs7yyEgAAAFoAAAHXmhlYWTbUM21AAAIyAAAADZoaGVhBwoDbAAACQAAAAAkaG10eCEQAH0AAAkkAAABLGxvY2FC4ETIAAAKUAAAAJhtYXhwAE4ACQAACugAAAAgbmFtZbgpxhkAAAsIAAAponBvc3QEPCueAAA0rAAAAMYAAwPWAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAIABAAAAAAAAACAAACvEAAgSAAAAAAAAAAAVzNDIABAACAAawMg/zgAAAMgAMj/EPwHAAD//wMgAyAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACYAa///AAAAIAAo////4//iAAEAAAAAAAAAAAADAAgAAgAQAAH//wADAAIAfQAAA2sDIAADAAcAADMRIRElIREhfQLu/Y8B9P4MAyD84H0CJgABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAAABAAAAAYAAskn6wV8PPPUACQPoAAAAALNvX1kAAAAAxN2rJAAA/zgD6AMgAAAAAwAAAAAAAAAAAAEAAAMg/zgAAAPoAAAAAAPoAAEAAAAAAAAAAAAAAAAAAABLA+gAfQAAAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAAAAFAAUABQAFAAhAC4AOwBIAFUAYgBvAHwAiQCWAKMAsAC9AMoA1wDkAPEA/gELARgBJQEyAT8BTAFZAWYBcwGAAY0BmgGnAbQBwQHOAdsB6AH1AgICDwIcAikCNgJDAlACXQJqAncChAKRAp4CqwK4AsUC0gLfAuwC+QMGAxMDIAMtAzoDRwNUA2EDbgN7A4gDlQOiA68AAQAAAEsACAACAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAACQBtgAAAAAAAAAAAfAAAAAAAAAAAAABAAgB8AAAAAAAAAACAA4B+AAAAAAAAAADACICBgAAAAAAAAAEAAgCKAAAAAAAAAAFABgCMAAAAAAAAAAGAAgCSAAAAAAAAAAKEGgCUAAAAAAAAAALACQSuAAAAAAAAAAOAFIS3AABAAAAAAAAAPgTLgABAAAAAAABAAQUJgABAAAAAAACAAcUKgABAAAAAAADABEUMQABAAAAAAAEAAQUQgABAAAAAAAFAAwURgABAAAAAAAGAAQUUgABAAAAAAAKAAAUVgABAAAAAAALABIUVgABAAAAAAAOACkUaAABAAAAAAAQAAQUkQABAAAAAAARAAcUlQABAAAAAAASAAQUnAADAAEECQAAAfAUoAADAAEECQABAAgWkAADAAEECQACAA4WmAADAAEECQADACIWpgADAAEECQAEAAgWyAADAAEECQAFABgW0AADAAEECQAGAAgW6AADAAEECQAKEGgW8AADAAEECQALACQnWAADAAEECQAOAFInfAADAAEECQAQAAgnzgADAAEECQARAA4n1gADAAEECQASAAgn5ABUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAYgBlAGwAbwBuAGcAcwAgAHQAbwAgAHQAaABlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuACAASQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAgAHQAaABhAHQAIABkAG8AIABuAG8AdAAgAHIAZQBjAG8AZwBuAGkAegBlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAgAG8AdwBuAGUAcgBzAGgAaQBwACAAbwBmACAAdABoAGUAcwBlACAAZgBpAGwAZQBzACwAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAQwByAGUAYQB0AGkAdgBlACAAQwBvAG0AbQBvAG4AcwAgAFoAZQByAG8AIABkAGUAYwBsAGEAcgBhAHQAaQBvAG4AIABhAHAAcABsAGkAZQBzADoAIABoAHQAdABwADoALwAvAGwAYQBiAHMALgBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AegBlAHIAbwAtAHcAYQBpAHYAZQAvADEALgAwAC8AdQBzAC8AbABlAGcAYQBsAGMAbwBkAGUAQQBoAGUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwACAAQQBoAGUAbQBBAGgAZQBtAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwAEEAaABlAG0AVABoAGUAIABBAGgAZQBtACAAZgBvAG4AdAAgAHcAYQBzACAAZABlAHYAZQBsAG8AcABlAGQAIABiAHkAIABUAG8AZABkACAARgBhAGgAcgBuAGUAcgAgAGEAbgBkACAATQB5AGwAZQBzACAAQwAuACAATQBhAHgAZgBpAGUAbABkACAAdABvACAAaABlAGwAcAAgAHQAZQBzAHQAIAB3AHIAaQB0AGUAcgBzACAAZABlAHYAZQBsAG8AcAAgAHAAcgBlAGQAaQBjAHQAYQBiAGwAZQAgAHQAZQBzAHQAcwAuACAAVABoAGUAIAB1AG4AaQB0AHMAIABwAGUAcgAgAGUAbQAgAGkAcwAgADEAMAAwADAALAAgAHQAaABlACAAYQBkAHYAYQBuAGMAZQAgAGkAcwAgADgAMAAwACwAIABhAG4AZAAgAHQAaABlACAAZABlAHMAYwBlAG4AdAAgAGkAcwAgADIAMAAwACwAIAB0AGgAZQByAGUAYgB5ACAAbQBhAGsAaQBuAGcAIAB0AGgAZQAgAGUAbQAgAHMAcQB1AGEAcgBlACAAZQB4AGEAYwB0AGwAeQAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGcAbAB5AHAAaABzACAAZgBvAHIAIABtAG8AcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAcwAgAGkAcwAgAHMAaQBtAHAAbAB5ACAAYQAgAGIAbwB4ACAAdwBoAGkAYwBoACAAZgBpAGwAbABzACAAdABoAGkAcwAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIABtAGEAcABwAGUAZAAgAHQAbwAgAHQAaABpAHMAIABmAHUAbABsACAAcwBxAHUAYQByAGUAIAB3AGkAdABoACAAYQAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAcgBhAG4AZwBlAHMAOgAgAFUAKwAyADAALQBVACsAMgA2ACwAIABVACsAMgA4AC0AVQArADYARgAsACAAVQArADcAMQAtAFUAKwA3AEUALAAgAFUAKwBBADAALQBVACsAQwA4ACwAIABVACsAQwBBAC0AVQArAEYARgAsACAAVQArADEAMwAxACwAIABVACsAMQA1ADIALQBVACsAMQA1ADMALAAgAFUAKwAxADcAOAAsACAAVQArADEAOQAyACwAIABVACsAMgBDADYALQBVACsAMgBDADcALAAgAFUAKwAyAEMAOQAsACAAVQArADIARAA4AC0AVQArADIARABEACwAIABVACsAMwA5ADQALAAgAFUAKwAzAEEANQAsACAAVQArADMAQQA3ACwAIABVACsAMwBBADkALAAgAFUAKwAzAEIAQwAsACAAVQArADMAQwAwACwAIABVACsAMgAwADEAMwAtAFUAKwAyADAAMQA0ACwAIABVACsAMgAwADEAOAAtAFUAKwAyADAAMQBBACwAIABVACsAMgAwADEAQwAtAFUAKwAyADAAMQBFACwAIABVACsAMgAwADIAMAAtAFUAKwAyADAAMgAyACwAIABVACsAMgAwADIANgAsACAAVQArADIAMAAzADAALAAgAFUAKwAyADAAMwA5AC0AVQArADIAMAAzAEEALAAgAFUAKwAyADAANAA0ACwAIABVACsAMgAxADIAMgAsACAAVQArADIAMQAyADYALAAgAFUAKwAyADIAMAAyACwAIABVACsAMgAyADAANgAsACAAVQArADIAMgAwAEYALAAgAFUAKwAyADIAMQAxAC0AVQArADIAMgAxADIALAAgAFUAKwAyADIAMQA5AC0AVQArADIAMgAxAEEALAAgAFUAKwAyADIAMQBFACwAIABVACsAMgAyADIAQgAsACAAVQArADIAMgA0ADgALAAgAFUAKwAyADIANgAwACwAIABVACsAMgAyADYANAAtAFUAKwAyADIANgA1ACwAIABVACsAMgAyAEYAMgAsACAAVQArADIANQBDAEEALAAgAFUAKwAzADAAMAA3ACwAIABVACsANABFADAAMAAsACAAVQArADQARQAwADMALAAgAFUAKwA0AEUAMAA5ACwAIABVACsANABFADUARAAsACAAVQArADQARQA4AEMALAAgAFUAKwA0AEUAOQA0ACwAIABVACsANQAxADYAQgAsACAAVQArADUAMQA2AEQALAAgAFUAKwA1ADMANAAxACwAIABVACsANQA2AEQANwAsACAAVQArADUANgBEAEIALAAgAFUAKwA1ADcAMQBGACwAIABVACsANgA3ADIAOAAsACAAVQArADYAQwAzADQALAAgAFUAKwA3ADAANgBCACwAIABVACsAOQAxAEQAMQAsACAAVQArAEYAMAAwADAALQBVACsARgAwADAAMgAuACAAVABoAGUAIABjAG8AZABlAHAAbwBpAG4AdABzACAAdwBoAGkAYwBoACAAYQByAGUAIABtAGEAcABwAGUAZAAgAHQAbwAgAHMAbwBtAGUAdABoAGkAbgBnACAAZQBsAHMAZQAgAGEAcgBlACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwA6ACAAIgAgACIAIAAoAFUAKwAyADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACIAcAAiACAAKABVACsANwAwACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABhAHMAYwBlAG4AdAAgAGIAdQB0ACAAZgB1AGwAbAAgAGQAZQBzAGMAZQBuAHQAOwAgACIAyQAiACAAKABVACsAQwA5ACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABkAGUAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAYQBzAGMAZQBuAHQAOwAgAE4AbwBuAC0AYgByAGUAYQBrAGkAbgBnACAAcwBwAGEAYwBlACAAKABVACsAQQAwACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvAC0AdwBpAGQAdABoACAAbgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBGAEUARgBGACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgADAAIABhAGQAdgBhAG4AYwBlADsAIABFAG4AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAyACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAGgAYQBsAGYAIABhAGQAdgBhAG4AYwBlADsAIABFAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAzACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAcgBlAGUALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIAB0AGgAaQByAGQAIABhAGQAdgBhAG4AYwBlADsAIABGAG8AdQByAC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA1ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcQB1AGEAcgB0AGUAcgAgAGEAZAB2AGEAbgBjAGUAOwAgAFMAaQB4AC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA2ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcwBpAHgAdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAVABoAGkAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADkAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABmAGkAZgB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABIAGEAaQByACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAQQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAZQBuAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABCACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEkAZABlAG8AZwByAGEAcABoAGkAYwAgAHMAcABhAGMAZQAgACgAVQArADMAMAAwADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABuAG8AbgAtAGoAbwBpAG4AZQByACAAKABVACsAMgAwADAAQwApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABuAG8AIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvACAAdwBpAGQAdABoACAAagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABEACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEcAcgBlAGUAawAgAGMAYQBwAGkAdABhAGwAIABsAGUAdAB0AGUAcgAgAEMAaABpACAAKABVACsAMwBBADcAKQA6ACAAVABoAGkAbgAgAGgAbwByAGkAegBvAG4AdABhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJqKgAiACAAKABVACsANgBBADIAQQApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAVQBwAHMAaQBsAG8AbgAgACgAVQArADMAQQA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJ+tQAiACAAKABVACsANwBFAEIANQApADoAIABUAGgAaQBuACAAdgBlAHIAdABpAGMAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwBjAC4AbwByAGcAaAB0AHQAcAA6AC8ALwBkAGUAdgAuAHcAMwAuAG8AcgBnAC8AQwBTAFMALwBmAG8AbgB0AHMALwBhAGgAZQBtAC8AQwBPAFAAWQBJAE4ARwAKVGhlIEFoZW0gZm9udCBiZWxvbmdzIHRvIHRoZSBwdWJsaWMgZG9tYWluLiBJbiBqdXJpc2RpY3Rpb25zIHRoYXQgZG8gbm90IHJlY29nbml6ZSBwdWJsaWMgZG9tYWluIG93bmVyc2hpcCBvZiB0aGVzZSBmaWxlcywgdGhlIGZvbGxvd2luZyBDcmVhdGl2ZSBDb21tb25zIFplcm8gZGVjbGFyYXRpb24gYXBwbGllczogaHR0cDovL2xhYnMuY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy96ZXJvLXdhaXZlLzEuMC91cy9sZWdhbGNvZGVBaGVtUmVndWxhclZlcnNpb24gMS41MCBBaGVtQWhlbVZlcnNpb24gMS41MEFoZW1odHRwOi8vd3d3LnczYy5vcmdodHRwOi8vZGV2LnczLm9yZy9DU1MvZm9udHMvYWhlbS9DT1BZSU5HCkFoZW1SZWd1bGFyQWhlbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAYgBlAGwAbwBuAGcAcwAgAHQAbwAgAHQAaABlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuACAASQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAgAHQAaABhAHQAIABkAG8AIABuAG8AdAAgAHIAZQBjAG8AZwBuAGkAegBlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAgAG8AdwBuAGUAcgBzAGgAaQBwACAAbwBmACAAdABoAGUAcwBlACAAZgBpAGwAZQBzACwAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAQwByAGUAYQB0AGkAdgBlACAAQwBvAG0AbQBvAG4AcwAgAFoAZQByAG8AIABkAGUAYwBsAGEAcgBhAHQAaQBvAG4AIABhAHAAcABsAGkAZQBzADoAIABoAHQAdABwADoALwAvAGwAYQBiAHMALgBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AegBlAHIAbwAtAHcAYQBpAHYAZQAvADEALgAwAC8AdQBzAC8AbABlAGcAYQBsAGMAbwBkAGUAQQBoAGUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwACAAQQBoAGUAbQBBAGgAZQBtAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwAEEAaABlAG0AVABoAGUAIABBAGgAZQBtACAAZgBvAG4AdAAgAHcAYQBzACAAZABlAHYAZQBsAG8AcABlAGQAIABiAHkAIABUAG8AZABkACAARgBhAGgAcgBuAGUAcgAgAGEAbgBkACAATQB5AGwAZQBzACAAQwAuACAATQBhAHgAZgBpAGUAbABkACAAdABvACAAaABlAGwAcAAgAHQAZQBzAHQAIAB3AHIAaQB0AGUAcgBzACAAZABlAHYAZQBsAG8AcAAgAHAAcgBlAGQAaQBjAHQAYQBiAGwAZQAgAHQAZQBzAHQAcwAuACAAVABoAGUAIAB1AG4AaQB0AHMAIABwAGUAcgAgAGUAbQAgAGkAcwAgADEAMAAwADAALAAgAHQAaABlACAAYQBkAHYAYQBuAGMAZQAgAGkAcwAgADgAMAAwACwAIABhAG4AZAAgAHQAaABlACAAZABlAHMAYwBlAG4AdAAgAGkAcwAgADIAMAAwACwAIAB0AGgAZQByAGUAYgB5ACAAbQBhAGsAaQBuAGcAIAB0AGgAZQAgAGUAbQAgAHMAcQB1AGEAcgBlACAAZQB4AGEAYwB0AGwAeQAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGcAbAB5AHAAaABzACAAZgBvAHIAIABtAG8AcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAcwAgAGkAcwAgAHMAaQBtAHAAbAB5ACAAYQAgAGIAbwB4ACAAdwBoAGkAYwBoACAAZgBpAGwAbABzACAAdABoAGkAcwAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIABtAGEAcABwAGUAZAAgAHQAbwAgAHQAaABpAHMAIABmAHUAbABsACAAcwBxAHUAYQByAGUAIAB3AGkAdABoACAAYQAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAcgBhAG4AZwBlAHMAOgAgAFUAKwAyADAALQBVACsAMgA2ACwAIABVACsAMgA4AC0AVQArADYARgAsACAAVQArADcAMQAtAFUAKwA3AEUALAAgAFUAKwBBADAALQBVACsAQwA4ACwAIABVACsAQwBBAC0AVQArAEYARgAsACAAVQArADEAMwAxACwAIABVACsAMQA1ADIALQBVACsAMQA1ADMALAAgAFUAKwAxADcAOAAsACAAVQArADEAOQAyACwAIABVACsAMgBDADYALQBVACsAMgBDADcALAAgAFUAKwAyAEMAOQAsACAAVQArADIARAA4AC0AVQArADIARABEACwAIABVACsAMwA5ADQALAAgAFUAKwAzAEEANQAsACAAVQArADMAQQA3ACwAIABVACsAMwBBADkALAAgAFUAKwAzAEIAQwAsACAAVQArADMAQwAwACwAIABVACsAMgAwADEAMwAtAFUAKwAyADAAMQA0ACwAIABVACsAMgAwADEAOAAtAFUAKwAyADAAMQBBACwAIABVACsAMgAwADEAQwAtAFUAKwAyADAAMQBFACwAIABVACsAMgAwADIAMAAtAFUAKwAyADAAMgAyACwAIABVACsAMgAwADIANgAsACAAVQArADIAMAAzADAALAAgAFUAKwAyADAAMwA5AC0AVQArADIAMAAzAEEALAAgAFUAKwAyADAANAA0ACwAIABVACsAMgAxADIAMgAsACAAVQArADIAMQAyADYALAAgAFUAKwAyADIAMAAyACwAIABVACsAMgAyADAANgAsACAAVQArADIAMgAwAEYALAAgAFUAKwAyADIAMQAxAC0AVQArADIAMgAxADIALAAgAFUAKwAyADIAMQA5AC0AVQArADIAMgAxAEEALAAgAFUAKwAyADIAMQBFACwAIABVACsAMgAyADIAQgAsACAAVQArADIAMgA0ADgALAAgAFUAKwAyADIANgAwACwAIABVACsAMgAyADYANAAtAFUAKwAyADIANgA1ACwAIABVACsAMgAyAEYAMgAsACAAVQArADIANQBDAEEALAAgAFUAKwAzADAAMAA3ACwAIABVACsANABFADAAMAAsACAAVQArADQARQAwADMALAAgAFUAKwA0AEUAMAA5ACwAIABVACsANABFADUARAAsACAAVQArADQARQA4AEMALAAgAFUAKwA0AEUAOQA0ACwAIABVACsANQAxADYAQgAsACAAVQArADUAMQA2AEQALAAgAFUAKwA1ADMANAAxACwAIABVACsANQA2AEQANwAsACAAVQArADUANgBEAEIALAAgAFUAKwA1ADcAMQBGACwAIABVACsANgA3ADIAOAAsACAAVQArADYAQwAzADQALAAgAFUAKwA3ADAANgBCACwAIABVACsAOQAxAEQAMQAsACAAVQArAEYAMAAwADAALQBVACsARgAwADAAMgAuACAAVABoAGUAIABjAG8AZABlAHAAbwBpAG4AdABzACAAdwBoAGkAYwBoACAAYQByAGUAIABtAGEAcABwAGUAZAAgAHQAbwAgAHMAbwBtAGUAdABoAGkAbgBnACAAZQBsAHMAZQAgAGEAcgBlACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwA6ACAAIgAgACIAIAAoAFUAKwAyADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACIAcAAiACAAKABVACsANwAwACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABhAHMAYwBlAG4AdAAgAGIAdQB0ACAAZgB1AGwAbAAgAGQAZQBzAGMAZQBuAHQAOwAgACIAyQAiACAAKABVACsAQwA5ACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABkAGUAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAYQBzAGMAZQBuAHQAOwAgAE4AbwBuAC0AYgByAGUAYQBrAGkAbgBnACAAcwBwAGEAYwBlACAAKABVACsAQQAwACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvAC0AdwBpAGQAdABoACAAbgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBGAEUARgBGACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgADAAIABhAGQAdgBhAG4AYwBlADsAIABFAG4AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAyACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAGgAYQBsAGYAIABhAGQAdgBhAG4AYwBlADsAIABFAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAzACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAcgBlAGUALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIAB0AGgAaQByAGQAIABhAGQAdgBhAG4AYwBlADsAIABGAG8AdQByAC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA1ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcQB1AGEAcgB0AGUAcgAgAGEAZAB2AGEAbgBjAGUAOwAgAFMAaQB4AC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA2ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcwBpAHgAdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAVABoAGkAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADkAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABmAGkAZgB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABIAGEAaQByACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAQQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAZQBuAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABCACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEkAZABlAG8AZwByAGEAcABoAGkAYwAgAHMAcABhAGMAZQAgACgAVQArADMAMAAwADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABuAG8AbgAtAGoAbwBpAG4AZQByACAAKABVACsAMgAwADAAQwApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABuAG8AIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvACAAdwBpAGQAdABoACAAagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABEACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEcAcgBlAGUAawAgAGMAYQBwAGkAdABhAGwAIABsAGUAdAB0AGUAcgAgAEMAaABpACAAKABVACsAMwBBADcAKQA6ACAAVABoAGkAbgAgAGgAbwByAGkAegBvAG4AdABhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJqKgAiACAAKABVACsANgBBADIAQQApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAVQBwAHMAaQBsAG8AbgAgACgAVQArADMAQQA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJ+tQAiACAAKABVACsANwBFAEIANQApADoAIABUAGgAaQBuACAAdgBlAHIAdABpAGMAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwBjAC4AbwByAGcAaAB0AHQAcAA6AC8ALwBkAGUAdgAuAHcAMwAuAG8AcgBnAC8AQwBTAFMALwBmAG8AbgB0AHMALwBhAGgAZQBtAC8AQwBPAFAAWQBJAE4ARwAKAEEAaABlAG0AUgBlAGcAdQBsAGEAcgBBAGgAZQBtAAAAAgAAAAAAAP97ABQAAAAAAAAAAAAAAAAAAAAAAAAAAABLAAABAgEDAAMABAAFAAYABwAIAAkACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLBE5VTEwIZ2x5cGgyNDMAAA== - didReceiveResponse -data:;base64,AAEAAAALAIAAAwAwT1MvMnNl+esAAAC8AAAAYGNtYXAAhwCDAAABHAAAADxnYXNwABcACQAAAVgAAAAQZ2x5Zs7yyEgAAAFoAAAHXmhlYWTbUM21AAAIyAAAADZoaGVhBwoDbAAACQAAAAAkaG10eCEQAH0AAAkkAAABLGxvY2FC4ETIAAAKUAAAAJhtYXhwAE4ACQAACugAAAAgbmFtZbgpxhkAAAsIAAAponBvc3QEPCueAAA0rAAAAMYAAwPWAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAIABAAAAAAAAACAAACvEAAgSAAAAAAAAAAAVzNDIABAACAAawMg/zgAAAMgAMj/EPwHAAD//wMgAyAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACYAa///AAAAIAAo////4//iAAEAAAAAAAAAAAADAAgAAgAQAAH//wADAAIAfQAAA2sDIAADAAcAADMRIRElIREhfQLu/Y8B9P4MAyD84H0CJgABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAAABAAAAAYAAskn6wV8PPPUACQPoAAAAALNvX1kAAAAAxN2rJAAA/zgD6AMgAAAAAwAAAAAAAAAAAAEAAAMg/zgAAAPoAAAAAAPoAAEAAAAAAAAAAAAAAAAAAABLA+gAfQAAAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAAAAFAAUABQAFAAhAC4AOwBIAFUAYgBvAHwAiQCWAKMAsAC9AMoA1wDkAPEA/gELARgBJQEyAT8BTAFZAWYBcwGAAY0BmgGnAbQBwQHOAdsB6AH1AgICDwIcAikCNgJDAlACXQJqAncChAKRAp4CqwK4AsUC0gLfAuwC+QMGAxMDIAMtAzoDRwNUA2EDbgN7A4gDlQOiA68AAQAAAEsACAACAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAACQBtgAAAAAAAAAAAfAAAAAAAAAAAAABAAgB8AAAAAAAAAACAA4B+AAAAAAAAAADACICBgAAAAAAAAAEAAgCKAAAAAAAAAAFABgCMAAAAAAAAAAGAAgCSAAAAAAAAAAKEGgCUAAAAAAAAAALACQSuAAAAAAAAAAOAFIS3AABAAAAAAAAAPgTLgABAAAAAAABAAQUJgABAAAAAAACAAcUKgABAAAAAAADABEUMQABAAAAAAAEAAQUQgABAAAAAAAFAAwURgABAAAAAAAGAAQUUgABAAAAAAAKAAAUVgABAAAAAAALABIUVgABAAAAAAAOACkUaAABAAAAAAAQAAQUkQABAAAAAAARAAcUlQABAAAAAAASAAQUnAADAAEECQAAAfAUoAADAAEECQABAAgWkAADAAEECQACAA4WmAADAAEECQADACIWpgADAAEECQAEAAgWyAADAAEECQAFABgW0AADAAEECQAGAAgW6AADAAEECQAKEGgW8AADAAEECQALACQnWAADAAEECQAOAFInfAADAAEECQAQAAgnzgADAAEECQARAA4n1gADAAEECQASAAgn5ABUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAYgBlAGwAbwBuAGcAcwAgAHQAbwAgAHQAaABlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuACAASQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAgAHQAaABhAHQAIABkAG8AIABuAG8AdAAgAHIAZQBjAG8AZwBuAGkAegBlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAgAG8AdwBuAGUAcgBzAGgAaQBwACAAbwBmACAAdABoAGUAcwBlACAAZgBpAGwAZQBzACwAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAQwByAGUAYQB0AGkAdgBlACAAQwBvAG0AbQBvAG4AcwAgAFoAZQByAG8AIABkAGUAYwBsAGEAcgBhAHQAaQBvAG4AIABhAHAAcABsAGkAZQBzADoAIABoAHQAdABwADoALwAvAGwAYQBiAHMALgBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AegBlAHIAbwAtAHcAYQBpAHYAZQAvADEALgAwAC8AdQBzAC8AbABlAGcAYQBsAGMAbwBkAGUAQQBoAGUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwACAAQQBoAGUAbQBBAGgAZQBtAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwAEEAaABlAG0AVABoAGUAIABBAGgAZQBtACAAZgBvAG4AdAAgAHcAYQBzACAAZABlAHYAZQBsAG8AcABlAGQAIABiAHkAIABUAG8AZABkACAARgBhAGgAcgBuAGUAcgAgAGEAbgBkACAATQB5AGwAZQBzACAAQwAuACAATQBhAHgAZgBpAGUAbABkACAAdABvACAAaABlAGwAcAAgAHQAZQBzAHQAIAB3AHIAaQB0AGUAcgBzACAAZABlAHYAZQBsAG8AcAAgAHAAcgBlAGQAaQBjAHQAYQBiAGwAZQAgAHQAZQBzAHQAcwAuACAAVABoAGUAIAB1AG4AaQB0AHMAIABwAGUAcgAgAGUAbQAgAGkAcwAgADEAMAAwADAALAAgAHQAaABlACAAYQBkAHYAYQBuAGMAZQAgAGkAcwAgADgAMAAwACwAIABhAG4AZAAgAHQAaABlACAAZABlAHMAYwBlAG4AdAAgAGkAcwAgADIAMAAwACwAIAB0AGgAZQByAGUAYgB5ACAAbQBhAGsAaQBuAGcAIAB0AGgAZQAgAGUAbQAgAHMAcQB1AGEAcgBlACAAZQB4AGEAYwB0AGwAeQAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGcAbAB5AHAAaABzACAAZgBvAHIAIABtAG8AcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAcwAgAGkAcwAgAHMAaQBtAHAAbAB5ACAAYQAgAGIAbwB4ACAAdwBoAGkAYwBoACAAZgBpAGwAbABzACAAdABoAGkAcwAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIABtAGEAcABwAGUAZAAgAHQAbwAgAHQAaABpAHMAIABmAHUAbABsACAAcwBxAHUAYQByAGUAIAB3AGkAdABoACAAYQAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAcgBhAG4AZwBlAHMAOgAgAFUAKwAyADAALQBVACsAMgA2ACwAIABVACsAMgA4AC0AVQArADYARgAsACAAVQArADcAMQAtAFUAKwA3AEUALAAgAFUAKwBBADAALQBVACsAQwA4ACwAIABVACsAQwBBAC0AVQArAEYARgAsACAAVQArADEAMwAxACwAIABVACsAMQA1ADIALQBVACsAMQA1ADMALAAgAFUAKwAxADcAOAAsACAAVQArADEAOQAyACwAIABVACsAMgBDADYALQBVACsAMgBDADcALAAgAFUAKwAyAEMAOQAsACAAVQArADIARAA4AC0AVQArADIARABEACwAIABVACsAMwA5ADQALAAgAFUAKwAzAEEANQAsACAAVQArADMAQQA3ACwAIABVACsAMwBBADkALAAgAFUAKwAzAEIAQwAsACAAVQArADMAQwAwACwAIABVACsAMgAwADEAMwAtAFUAKwAyADAAMQA0ACwAIABVACsAMgAwADEAOAAtAFUAKwAyADAAMQBBACwAIABVACsAMgAwADEAQwAtAFUAKwAyADAAMQBFACwAIABVACsAMgAwADIAMAAtAFUAKwAyADAAMgAyACwAIABVACsAMgAwADIANgAsACAAVQArADIAMAAzADAALAAgAFUAKwAyADAAMwA5AC0AVQArADIAMAAzAEEALAAgAFUAKwAyADAANAA0ACwAIABVACsAMgAxADIAMgAsACAAVQArADIAMQAyADYALAAgAFUAKwAyADIAMAAyACwAIABVACsAMgAyADAANgAsACAAVQArADIAMgAwAEYALAAgAFUAKwAyADIAMQAxAC0AVQArADIAMgAxADIALAAgAFUAKwAyADIAMQA5AC0AVQArADIAMgAxAEEALAAgAFUAKwAyADIAMQBFACwAIABVACsAMgAyADIAQgAsACAAVQArADIAMgA0ADgALAAgAFUAKwAyADIANgAwACwAIABVACsAMgAyADYANAAtAFUAKwAyADIANgA1ACwAIABVACsAMgAyAEYAMgAsACAAVQArADIANQBDAEEALAAgAFUAKwAzADAAMAA3ACwAIABVACsANABFADAAMAAsACAAVQArADQARQAwADMALAAgAFUAKwA0AEUAMAA5ACwAIABVACsANABFADUARAAsACAAVQArADQARQA4AEMALAAgAFUAKwA0AEUAOQA0ACwAIABVACsANQAxADYAQgAsACAAVQArADUAMQA2AEQALAAgAFUAKwA1ADMANAAxACwAIABVACsANQA2AEQANwAsACAAVQArADUANgBEAEIALAAgAFUAKwA1ADcAMQBGACwAIABVACsANgA3ADIAOAAsACAAVQArADYAQwAzADQALAAgAFUAKwA3ADAANgBCACwAIABVACsAOQAxAEQAMQAsACAAVQArAEYAMAAwADAALQBVACsARgAwADAAMgAuACAAVABoAGUAIABjAG8AZABlAHAAbwBpAG4AdABzACAAdwBoAGkAYwBoACAAYQByAGUAIABtAGEAcABwAGUAZAAgAHQAbwAgAHMAbwBtAGUAdABoAGkAbgBnACAAZQBsAHMAZQAgAGEAcgBlACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwA6ACAAIgAgACIAIAAoAFUAKwAyADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACIAcAAiACAAKABVACsANwAwACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABhAHMAYwBlAG4AdAAgAGIAdQB0ACAAZgB1AGwAbAAgAGQAZQBzAGMAZQBuAHQAOwAgACIAyQAiACAAKABVACsAQwA5ACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABkAGUAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAYQBzAGMAZQBuAHQAOwAgAE4AbwBuAC0AYgByAGUAYQBrAGkAbgBnACAAcwBwAGEAYwBlACAAKABVACsAQQAwACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvAC0AdwBpAGQAdABoACAAbgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBGAEUARgBGACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgADAAIABhAGQAdgBhAG4AYwBlADsAIABFAG4AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAyACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAGgAYQBsAGYAIABhAGQAdgBhAG4AYwBlADsAIABFAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAzACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAcgBlAGUALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIAB0AGgAaQByAGQAIABhAGQAdgBhAG4AYwBlADsAIABGAG8AdQByAC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA1ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcQB1AGEAcgB0AGUAcgAgAGEAZAB2AGEAbgBjAGUAOwAgAFMAaQB4AC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA2ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcwBpAHgAdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAVABoAGkAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADkAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABmAGkAZgB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABIAGEAaQByACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAQQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAZQBuAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABCACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEkAZABlAG8AZwByAGEAcABoAGkAYwAgAHMAcABhAGMAZQAgACgAVQArADMAMAAwADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABuAG8AbgAtAGoAbwBpAG4AZQByACAAKABVACsAMgAwADAAQwApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABuAG8AIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvACAAdwBpAGQAdABoACAAagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABEACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEcAcgBlAGUAawAgAGMAYQBwAGkAdABhAGwAIABsAGUAdAB0AGUAcgAgAEMAaABpACAAKABVACsAMwBBADcAKQA6ACAAVABoAGkAbgAgAGgAbwByAGkAegBvAG4AdABhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJqKgAiACAAKABVACsANgBBADIAQQApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAVQBwAHMAaQBsAG8AbgAgACgAVQArADMAQQA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJ+tQAiACAAKABVACsANwBFAEIANQApADoAIABUAGgAaQBuACAAdgBlAHIAdABpAGMAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwBjAC4AbwByAGcAaAB0AHQAcAA6AC8ALwBkAGUAdgAuAHcAMwAuAG8AcgBnAC8AQwBTAFMALwBmAG8AbgB0AHMALwBhAGgAZQBtAC8AQwBPAFAAWQBJAE4ARwAKVGhlIEFoZW0gZm9udCBiZWxvbmdzIHRvIHRoZSBwdWJsaWMgZG9tYWluLiBJbiBqdXJpc2RpY3Rpb25zIHRoYXQgZG8gbm90IHJlY29nbml6ZSBwdWJsaWMgZG9tYWluIG93bmVyc2hpcCBvZiB0aGVzZSBmaWxlcywgdGhlIGZvbGxvd2luZyBDcmVhdGl2ZSBDb21tb25zIFplcm8gZGVjbGFyYXRpb24gYXBwbGllczogaHR0cDovL2xhYnMuY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy96ZXJvLXdhaXZlLzEuMC91cy9sZWdhbGNvZGVBaGVtUmVndWxhclZlcnNpb24gMS41MCBBaGVtQWhlbVZlcnNpb24gMS41MEFoZW1odHRwOi8vd3d3LnczYy5vcmdodHRwOi8vZGV2LnczLm9yZy9DU1MvZm9udHMvYWhlbS9DT1BZSU5HCkFoZW1SZWd1bGFyQWhlbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAYgBlAGwAbwBuAGcAcwAgAHQAbwAgAHQAaABlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAuACAASQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAgAHQAaABhAHQAIABkAG8AIABuAG8AdAAgAHIAZQBjAG8AZwBuAGkAegBlACAAcAB1AGIAbABpAGMAIABkAG8AbQBhAGkAbgAgAG8AdwBuAGUAcgBzAGgAaQBwACAAbwBmACAAdABoAGUAcwBlACAAZgBpAGwAZQBzACwAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAQwByAGUAYQB0AGkAdgBlACAAQwBvAG0AbQBvAG4AcwAgAFoAZQByAG8AIABkAGUAYwBsAGEAcgBhAHQAaQBvAG4AIABhAHAAcABsAGkAZQBzADoAIABoAHQAdABwADoALwAvAGwAYQBiAHMALgBjAHIAZQBhAHQAaQB2AGUAYwBvAG0AbQBvAG4AcwAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8AegBlAHIAbwAtAHcAYQBpAHYAZQAvADEALgAwAC8AdQBzAC8AbABlAGcAYQBsAGMAbwBkAGUAQQBoAGUAbQBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwACAAQQBoAGUAbQBBAGgAZQBtAFYAZQByAHMAaQBvAG4AIAAxAC4ANQAwAEEAaABlAG0AVABoAGUAIABBAGgAZQBtACAAZgBvAG4AdAAgAHcAYQBzACAAZABlAHYAZQBsAG8AcABlAGQAIABiAHkAIABUAG8AZABkACAARgBhAGgAcgBuAGUAcgAgAGEAbgBkACAATQB5AGwAZQBzACAAQwAuACAATQBhAHgAZgBpAGUAbABkACAAdABvACAAaABlAGwAcAAgAHQAZQBzAHQAIAB3AHIAaQB0AGUAcgBzACAAZABlAHYAZQBsAG8AcAAgAHAAcgBlAGQAaQBjAHQAYQBiAGwAZQAgAHQAZQBzAHQAcwAuACAAVABoAGUAIAB1AG4AaQB0AHMAIABwAGUAcgAgAGUAbQAgAGkAcwAgADEAMAAwADAALAAgAHQAaABlACAAYQBkAHYAYQBuAGMAZQAgAGkAcwAgADgAMAAwACwAIABhAG4AZAAgAHQAaABlACAAZABlAHMAYwBlAG4AdAAgAGkAcwAgADIAMAAwACwAIAB0AGgAZQByAGUAYgB5ACAAbQBhAGsAaQBuAGcAIAB0AGgAZQAgAGUAbQAgAHMAcQB1AGEAcgBlACAAZQB4AGEAYwB0AGwAeQAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGcAbAB5AHAAaABzACAAZgBvAHIAIABtAG8AcwB0ACAAYwBoAGEAcgBhAGMAdABlAHIAcwAgAGkAcwAgAHMAaQBtAHAAbAB5ACAAYQAgAGIAbwB4ACAAdwBoAGkAYwBoACAAZgBpAGwAbABzACAAdABoAGkAcwAgAHMAcQB1AGEAcgBlAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIABtAGEAcABwAGUAZAAgAHQAbwAgAHQAaABpAHMAIABmAHUAbABsACAAcwBxAHUAYQByAGUAIAB3AGkAdABoACAAYQAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnACAAcgBhAG4AZwBlAHMAOgAgAFUAKwAyADAALQBVACsAMgA2ACwAIABVACsAMgA4AC0AVQArADYARgAsACAAVQArADcAMQAtAFUAKwA3AEUALAAgAFUAKwBBADAALQBVACsAQwA4ACwAIABVACsAQwBBAC0AVQArAEYARgAsACAAVQArADEAMwAxACwAIABVACsAMQA1ADIALQBVACsAMQA1ADMALAAgAFUAKwAxADcAOAAsACAAVQArADEAOQAyACwAIABVACsAMgBDADYALQBVACsAMgBDADcALAAgAFUAKwAyAEMAOQAsACAAVQArADIARAA4AC0AVQArADIARABEACwAIABVACsAMwA5ADQALAAgAFUAKwAzAEEANQAsACAAVQArADMAQQA3ACwAIABVACsAMwBBADkALAAgAFUAKwAzAEIAQwAsACAAVQArADMAQwAwACwAIABVACsAMgAwADEAMwAtAFUAKwAyADAAMQA0ACwAIABVACsAMgAwADEAOAAtAFUAKwAyADAAMQBBACwAIABVACsAMgAwADEAQwAtAFUAKwAyADAAMQBFACwAIABVACsAMgAwADIAMAAtAFUAKwAyADAAMgAyACwAIABVACsAMgAwADIANgAsACAAVQArADIAMAAzADAALAAgAFUAKwAyADAAMwA5AC0AVQArADIAMAAzAEEALAAgAFUAKwAyADAANAA0ACwAIABVACsAMgAxADIAMgAsACAAVQArADIAMQAyADYALAAgAFUAKwAyADIAMAAyACwAIABVACsAMgAyADAANgAsACAAVQArADIAMgAwAEYALAAgAFUAKwAyADIAMQAxAC0AVQArADIAMgAxADIALAAgAFUAKwAyADIAMQA5AC0AVQArADIAMgAxAEEALAAgAFUAKwAyADIAMQBFACwAIABVACsAMgAyADIAQgAsACAAVQArADIAMgA0ADgALAAgAFUAKwAyADIANgAwACwAIABVACsAMgAyADYANAAtAFUAKwAyADIANgA1ACwAIABVACsAMgAyAEYAMgAsACAAVQArADIANQBDAEEALAAgAFUAKwAzADAAMAA3ACwAIABVACsANABFADAAMAAsACAAVQArADQARQAwADMALAAgAFUAKwA0AEUAMAA5ACwAIABVACsANABFADUARAAsACAAVQArADQARQA4AEMALAAgAFUAKwA0AEUAOQA0ACwAIABVACsANQAxADYAQgAsACAAVQArADUAMQA2AEQALAAgAFUAKwA1ADMANAAxACwAIABVACsANQA2AEQANwAsACAAVQArADUANgBEAEIALAAgAFUAKwA1ADcAMQBGACwAIABVACsANgA3ADIAOAAsACAAVQArADYAQwAzADQALAAgAFUAKwA3ADAANgBCACwAIABVACsAOQAxAEQAMQAsACAAVQArAEYAMAAwADAALQBVACsARgAwADAAMgAuACAAVABoAGUAIABjAG8AZABlAHAAbwBpAG4AdABzACAAdwBoAGkAYwBoACAAYQByAGUAIABtAGEAcABwAGUAZAAgAHQAbwAgAHMAbwBtAGUAdABoAGkAbgBnACAAZQBsAHMAZQAgAGEAcgBlACAAdABoAGUAIABmAG8AbABsAG8AdwBpAG4AZwA6ACAAIgAgACIAIAAoAFUAKwAyADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACIAcAAiACAAKABVACsANwAwACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABhAHMAYwBlAG4AdAAgAGIAdQB0ACAAZgB1AGwAbAAgAGQAZQBzAGMAZQBuAHQAOwAgACIAyQAiACAAKABVACsAQwA5ACkAOgAgAFAAYQB0AGgAIABoAGEAcwAgADAAIABkAGUAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAYQBzAGMAZQBuAHQAOwAgAE4AbwBuAC0AYgByAGUAYQBrAGkAbgBnACAAcwBwAGEAYwBlACAAKABVACsAQQAwACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvAC0AdwBpAGQAdABoACAAbgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBGAEUARgBGACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgADAAIABhAGQAdgBhAG4AYwBlADsAIABFAG4AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAyACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAGgAYQBsAGYAIABhAGQAdgBhAG4AYwBlADsAIABFAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAAzACkAOgAgAE4AbwAgAHAAYQB0AGgAIABiAHUAdAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAcgBlAGUALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIAB0AGgAaQByAGQAIABhAGQAdgBhAG4AYwBlADsAIABGAG8AdQByAC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA1ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcQB1AGEAcgB0AGUAcgAgAGEAZAB2AGEAbgBjAGUAOwAgAFMAaQB4AC0AcABlAHIALQBlAG0AIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMAA2ACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAcwBpAHgAdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAVABoAGkAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADkAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABmAGkAZgB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABIAGEAaQByACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAQQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAZQBuAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABCACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEkAZABlAG8AZwByAGEAcABoAGkAYwAgAHMAcABhAGMAZQAgACgAVQArADMAMAAwADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABuAG8AbgAtAGoAbwBpAG4AZQByACAAKABVACsAMgAwADAAQwApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABuAG8AIABhAGQAdgBhAG4AYwBlADsAIABaAGUAcgBvACAAdwBpAGQAdABoACAAagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABEACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAEcAcgBlAGUAawAgAGMAYQBwAGkAdABhAGwAIABsAGUAdAB0AGUAcgAgAEMAaABpACAAKABVACsAMwBBADcAKQA6ACAAVABoAGkAbgAgAGgAbwByAGkAegBvAG4AdABhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJqKgAiACAAKABVACsANgBBADIAQQApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAVQBwAHMAaQBsAG8AbgAgACgAVQArADMAQQA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgACJ+tQAiACAAKABVACsANwBFAEIANQApADoAIABUAGgAaQBuACAAdgBlAHIAdABpAGMAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwBjAC4AbwByAGcAaAB0AHQAcAA6AC8ALwBkAGUAdgAuAHcAMwAuAG8AcgBnAC8AQwBTAFMALwBmAG8AbgB0AHMALwBhAGgAZQBtAC8AQwBPAFAAWQBJAE4ARwAKAEEAaABlAG0AUgBlAGcAdQBsAGEAcgBBAGgAZQBtAAAAAgAAAAAAAP97ABQAAAAAAAAAAAAAAAAAAAAAAAAAAABLAAABAgEDAAMABAAFAAYABwAIAAkACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLBE5VTEwIZ2x5cGgyNDMAAA== - didFinishLoading -data:;base64,AAEAAAALAIAAAwAwT1MvMnNl+fYAAAC8AAAAYGNtYXAAtgEOAAABHAAAAERnYXNwABcACQAAAWAAAAAQZ2x5Zs7yyEgAAAFwAAAHXmhlYWTbUM21AAAI0AAAADZoaGVhBwoDbAAACQgAAAAkaG10eCEQAH0AAAksAAABLGxvY2FC4ETIAAAKWAAAAJhtYXhwAE4ACQAACvAAAAAgbmFtZbgpxhkAAAsQAAAponBvc3QEPCueAAA0tAAAAMYAAwPWAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAIABAAAAAAAAACAAACvEAAgSAAAAAAAAAAAVzNDIABAACAAdgMg/zgAAAMgAMj/EPwHAAD//wMgAyAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADAAAAAIAAgAAgAAACYAYAB2//8AAAAgACgAbP///+P/4v/XAAEAAAAAAAAAAAAAAAMACAACABAAAf//AAMAAgB9AAADawMgAAMABwAAMxEhESUhESF9Au79jwH0/gwDIPzgfQImAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAAAAAEAAAABgACx6/lFXw889QAJA+gAAAAAs29fWQAAAADE3askAAD/OAPoAyAAAAADAAAAAAAAAAAAAQAAAyD/OAAAA+gAAAAAA+gAAQAAAAAAAAAAAAAAAAAAAEsD6AB9AAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAAAAAUABQAFAAUACEALgA7AEgAVQBiAG8AfACJAJYAowCwAL0AygDXAOQA8QD+AQsBGAElATIBPwFMAVkBZgFzAYABjQGaAacBtAHBAc4B2wHoAfUCAgIPAhwCKQI2AkMCUAJdAmoCdwKEApECngKrArgCxQLSAt8C7AL5AwYDEwMgAy0DOgNHA1QDYQNuA3sDiAOVA6IDrwABAAAASwAIAAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAJAG2AAAAAAAAAAAB8AAAAAAAAAAAAAEACAHwAAAAAAAAAAIADgH4AAAAAAAAAAMAIgIGAAAAAAAAAAQACAIoAAAAAAAAAAUAGAIwAAAAAAAAAAYACAJIAAAAAAAAAAoQaAJQAAAAAAAAAAsAJBK4AAAAAAAAAA4AUhLcAAEAAAAAAAAA+BMuAAEAAAAAAAEABBQmAAEAAAAAAAIABxQqAAEAAAAAAAMAERQxAAEAAAAAAAQABBRCAAEAAAAAAAUADBRGAAEAAAAAAAYABBRSAAEAAAAAAAoAABRWAAEAAAAAAAsAEhRWAAEAAAAAAA4AKRRoAAEAAAAAABAABBSRAAEAAAAAABEABxSVAAEAAAAAABIABBScAAMAAQQJAAAB8BSgAAMAAQQJAAEACBaQAAMAAQQJAAIADhaYAAMAAQQJAAMAIhamAAMAAQQJAAQACBbIAAMAAQQJAAUAGBbQAAMAAQQJAAYACBboAAMAAQQJAAoQaBbwAAMAAQQJAAsAJCdYAAMAAQQJAA4AUid8AAMAAQQJABAACCfOAAMAAQQJABEADifWAAMAAQQJABIACCfkAFQAaABlACAAQQBoAGUAbQAgAGYAbwBuAHQAIABiAGUAbABvAG4AZwBzACAAdABvACAAdABoAGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuAC4AIABJAG4AIABqAHUAcgBpAHMAZABpAGMAdABpAG8AbgBzACAAdABoAGEAdAAgAGQAbwAgAG4AbwB0ACAAcgBlAGMAbwBnAG4AaQB6AGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQBzAGUAIABmAGkAbABlAHMALAAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAWgBlAHIAbwAgAGQAZQBjAGwAYQByAGEAdABpAG8AbgAgAGEAcABwAGwAaQBlAHMAOgAgAGgAdAB0AHAAOgAvAC8AbABhAGIAcwAuAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwB6AGUAcgBvAC0AdwBhAGkAdgBlAC8AMQAuADAALwB1AHMALwBsAGUAZwBhAGwAYwBvAGQAZQBBAGgAZQBtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAIABBAGgAZQBtAEEAaABlAG0AVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAQQBoAGUAbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAdwBhAHMAIABkAGUAdgBlAGwAbwBwAGUAZAAgAGIAeQAgAFQAbwBkAGQAIABGAGEAaAByAG4AZQByACAAYQBuAGQAIABNAHkAbABlAHMAIABDAC4AIABNAGEAeABmAGkAZQBsAGQAIAB0AG8AIABoAGUAbABwACAAdABlAHMAdAAgAHcAcgBpAHQAZQByAHMAIABkAGUAdgBlAGwAbwBwACAAcAByAGUAZABpAGMAdABhAGIAbABlACAAdABlAHMAdABzAC4AIABUAGgAZQAgAHUAbgBpAHQAcwAgAHAAZQByACAAZQBtACAAaQBzACAAMQAwADAAMAAsACAAdABoAGUAIABhAGQAdgBhAG4AYwBlACAAaQBzACAAOAAwADAALAAgAGEAbgBkACAAdABoAGUAIABkAGUAcwBjAGUAbgB0ACAAaQBzACAAMgAwADAALAAgAHQAaABlAHIAZQBiAHkAIABtAGEAawBpAG4AZwAgAHQAaABlACAAZQBtACAAcwBxAHUAYQByAGUAIABlAHgAYQBjAHQAbAB5ACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAZwBsAHkAcABoAHMAIABmAG8AcgAgAG0AbwBzAHQAIABjAGgAYQByAGEAYwB0AGUAcgBzACAAaQBzACAAcwBpAG0AcABsAHkAIABhACAAYgBvAHgAIAB3AGgAaQBjAGgAIABmAGkAbABsAHMAIAB0AGgAaQBzACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAYwBvAGQAZQBwAG8AaQBuAHQAcwAgAG0AYQBwAHAAZQBkACAAdABvACAAdABoAGkAcwAgAGYAdQBsAGwAIABzAHEAdQBhAHIAZQAgAHcAaQB0AGgAIABhACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAIABhAHIAZQAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIAByAGEAbgBnAGUAcwA6ACAAVQArADIAMAAtAFUAKwAyADYALAAgAFUAKwAyADgALQBVACsANgBGACwAIABVACsANwAxAC0AVQArADcARQAsACAAVQArAEEAMAAtAFUAKwBDADgALAAgAFUAKwBDAEEALQBVACsARgBGACwAIABVACsAMQAzADEALAAgAFUAKwAxADUAMgAtAFUAKwAxADUAMwAsACAAVQArADEANwA4ACwAIABVACsAMQA5ADIALAAgAFUAKwAyAEMANgAtAFUAKwAyAEMANwAsACAAVQArADIAQwA5ACwAIABVACsAMgBEADgALQBVACsAMgBEAEQALAAgAFUAKwAzADkANAAsACAAVQArADMAQQA1ACwAIABVACsAMwBBADcALAAgAFUAKwAzAEEAOQAsACAAVQArADMAQgBDACwAIABVACsAMwBDADAALAAgAFUAKwAyADAAMQAzAC0AVQArADIAMAAxADQALAAgAFUAKwAyADAAMQA4AC0AVQArADIAMAAxAEEALAAgAFUAKwAyADAAMQBDAC0AVQArADIAMAAxAEUALAAgAFUAKwAyADAAMgAwAC0AVQArADIAMAAyADIALAAgAFUAKwAyADAAMgA2ACwAIABVACsAMgAwADMAMAAsACAAVQArADIAMAAzADkALQBVACsAMgAwADMAQQAsACAAVQArADIAMAA0ADQALAAgAFUAKwAyADEAMgAyACwAIABVACsAMgAxADIANgAsACAAVQArADIAMgAwADIALAAgAFUAKwAyADIAMAA2ACwAIABVACsAMgAyADAARgAsACAAVQArADIAMgAxADEALQBVACsAMgAyADEAMgAsACAAVQArADIAMgAxADkALQBVACsAMgAyADEAQQAsACAAVQArADIAMgAxAEUALAAgAFUAKwAyADIAMgBCACwAIABVACsAMgAyADQAOAAsACAAVQArADIAMgA2ADAALAAgAFUAKwAyADIANgA0AC0AVQArADIAMgA2ADUALAAgAFUAKwAyADIARgAyACwAIABVACsAMgA1AEMAQQAsACAAVQArADMAMAAwADcALAAgAFUAKwA0AEUAMAAwACwAIABVACsANABFADAAMwAsACAAVQArADQARQAwADkALAAgAFUAKwA0AEUANQBEACwAIABVACsANABFADgAQwAsACAAVQArADQARQA5ADQALAAgAFUAKwA1ADEANgBCACwAIABVACsANQAxADYARAAsACAAVQArADUAMwA0ADEALAAgAFUAKwA1ADYARAA3ACwAIABVACsANQA2AEQAQgAsACAAVQArADUANwAxAEYALAAgAFUAKwA2ADcAMgA4ACwAIABVACsANgBDADMANAAsACAAVQArADcAMAA2AEIALAAgAFUAKwA5ADEARAAxACwAIABVACsARgAwADAAMAAtAFUAKwBGADAAMAAyAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAG0AYQBwAHAAZQBkACAAdABvACAAcwBvAG0AZQB0AGgAaQBuAGcAIABlAGwAcwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnADoAIAAiACAAIgAgACgAVQArADIAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIgBwACIAIAAoAFUAKwA3ADAAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGEAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAZABlAHMAYwBlAG4AdAA7ACAAIgDJACIAIAAoAFUAKwBDADkAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGQAZQBzAGMAZQBuAHQAIABiAHUAdAAgAGYAdQBsAGwAIABhAHMAYwBlAG4AdAA7ACAATgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBBADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8ALQB3AGkAZAB0AGgAIABuAG8AbgAtAGIAcgBlAGEAawBpAG4AZwAgAHMAcABhAGMAZQAgACgAVQArAEYARQBGAEYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAMAAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAaABhAGwAZgAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADMAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFQAaAByAGUAZQAtAHAAZQByAC0AZQBtACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAANAApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAaABpAHIAZAAgAGEAZAB2AGEAbgBjAGUAOwAgAEYAbwB1AHIALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADUAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABxAHUAYQByAHQAZQByACAAYQBkAHYAYQBuAGMAZQA7ACAAUwBpAHgALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABzAGkAeAB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAaQBuACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAOQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAGYAaQBmAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAEgAYQBpAHIAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABBACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAdABlAG4AdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwAEIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAASQBkAGUAbwBnAHIAYQBwAGgAaQBjACAAcwBwAGEAYwBlACAAKABVACsAMwAwADAAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAG4AbwBuAC0AagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABDACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABqAG8AaQBuAGUAcgAgACgAVQArADIAMAAwAEQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAQwBoAGkAIAAoAFUAKwAzAEEANwApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAImoqACIAIAAoAFUAKwA2AEEAMgBBACkAOgAgAFQAaABpAG4AIABoAG8AcgBpAHoAbwBuAHQAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABHAHIAZQBlAGsAIABjAGEAcABpAHQAYQBsACAAbABlAHQAdABlAHIAIABVAHAAcwBpAGwAbwBuACAAKABVACsAMwBBADUAKQA6ACAAVABoAGkAbgAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIn61ACIAIAAoAFUAKwA3AEUAQgA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUALgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAGMALgBvAHIAZwBoAHQAdABwADoALwAvAGQAZQB2AC4AdwAzAC4AbwByAGcALwBDAFMAUwAvAGYAbwBuAHQAcwAvAGEAaABlAG0ALwBDAE8AUABZAEkATgBHAApUaGUgQWhlbSBmb250IGJlbG9uZ3MgdG8gdGhlIHB1YmxpYyBkb21haW4uIEluIGp1cmlzZGljdGlvbnMgdGhhdCBkbyBub3QgcmVjb2duaXplIHB1YmxpYyBkb21haW4gb3duZXJzaGlwIG9mIHRoZXNlIGZpbGVzLCB0aGUgZm9sbG93aW5nIENyZWF0aXZlIENvbW1vbnMgWmVybyBkZWNsYXJhdGlvbiBhcHBsaWVzOiBodHRwOi8vbGFicy5jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL3plcm8td2FpdmUvMS4wL3VzL2xlZ2FsY29kZUFoZW1SZWd1bGFyVmVyc2lvbiAxLjUwIEFoZW1BaGVtVmVyc2lvbiAxLjUwQWhlbWh0dHA6Ly93d3cudzNjLm9yZ2h0dHA6Ly9kZXYudzMub3JnL0NTUy9mb250cy9haGVtL0NPUFlJTkcKQWhlbVJlZ3VsYXJBaGVtAFQAaABlACAAQQBoAGUAbQAgAGYAbwBuAHQAIABiAGUAbABvAG4AZwBzACAAdABvACAAdABoAGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuAC4AIABJAG4AIABqAHUAcgBpAHMAZABpAGMAdABpAG8AbgBzACAAdABoAGEAdAAgAGQAbwAgAG4AbwB0ACAAcgBlAGMAbwBnAG4AaQB6AGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQBzAGUAIABmAGkAbABlAHMALAAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAWgBlAHIAbwAgAGQAZQBjAGwAYQByAGEAdABpAG8AbgAgAGEAcABwAGwAaQBlAHMAOgAgAGgAdAB0AHAAOgAvAC8AbABhAGIAcwAuAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwB6AGUAcgBvAC0AdwBhAGkAdgBlAC8AMQAuADAALwB1AHMALwBsAGUAZwBhAGwAYwBvAGQAZQBBAGgAZQBtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAIABBAGgAZQBtAEEAaABlAG0AVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAQQBoAGUAbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAdwBhAHMAIABkAGUAdgBlAGwAbwBwAGUAZAAgAGIAeQAgAFQAbwBkAGQAIABGAGEAaAByAG4AZQByACAAYQBuAGQAIABNAHkAbABlAHMAIABDAC4AIABNAGEAeABmAGkAZQBsAGQAIAB0AG8AIABoAGUAbABwACAAdABlAHMAdAAgAHcAcgBpAHQAZQByAHMAIABkAGUAdgBlAGwAbwBwACAAcAByAGUAZABpAGMAdABhAGIAbABlACAAdABlAHMAdABzAC4AIABUAGgAZQAgAHUAbgBpAHQAcwAgAHAAZQByACAAZQBtACAAaQBzACAAMQAwADAAMAAsACAAdABoAGUAIABhAGQAdgBhAG4AYwBlACAAaQBzACAAOAAwADAALAAgAGEAbgBkACAAdABoAGUAIABkAGUAcwBjAGUAbgB0ACAAaQBzACAAMgAwADAALAAgAHQAaABlAHIAZQBiAHkAIABtAGEAawBpAG4AZwAgAHQAaABlACAAZQBtACAAcwBxAHUAYQByAGUAIABlAHgAYQBjAHQAbAB5ACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAZwBsAHkAcABoAHMAIABmAG8AcgAgAG0AbwBzAHQAIABjAGgAYQByAGEAYwB0AGUAcgBzACAAaQBzACAAcwBpAG0AcABsAHkAIABhACAAYgBvAHgAIAB3AGgAaQBjAGgAIABmAGkAbABsAHMAIAB0AGgAaQBzACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAYwBvAGQAZQBwAG8AaQBuAHQAcwAgAG0AYQBwAHAAZQBkACAAdABvACAAdABoAGkAcwAgAGYAdQBsAGwAIABzAHEAdQBhAHIAZQAgAHcAaQB0AGgAIABhACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAIABhAHIAZQAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIAByAGEAbgBnAGUAcwA6ACAAVQArADIAMAAtAFUAKwAyADYALAAgAFUAKwAyADgALQBVACsANgBGACwAIABVACsANwAxAC0AVQArADcARQAsACAAVQArAEEAMAAtAFUAKwBDADgALAAgAFUAKwBDAEEALQBVACsARgBGACwAIABVACsAMQAzADEALAAgAFUAKwAxADUAMgAtAFUAKwAxADUAMwAsACAAVQArADEANwA4ACwAIABVACsAMQA5ADIALAAgAFUAKwAyAEMANgAtAFUAKwAyAEMANwAsACAAVQArADIAQwA5ACwAIABVACsAMgBEADgALQBVACsAMgBEAEQALAAgAFUAKwAzADkANAAsACAAVQArADMAQQA1ACwAIABVACsAMwBBADcALAAgAFUAKwAzAEEAOQAsACAAVQArADMAQgBDACwAIABVACsAMwBDADAALAAgAFUAKwAyADAAMQAzAC0AVQArADIAMAAxADQALAAgAFUAKwAyADAAMQA4AC0AVQArADIAMAAxAEEALAAgAFUAKwAyADAAMQBDAC0AVQArADIAMAAxAEUALAAgAFUAKwAyADAAMgAwAC0AVQArADIAMAAyADIALAAgAFUAKwAyADAAMgA2ACwAIABVACsAMgAwADMAMAAsACAAVQArADIAMAAzADkALQBVACsAMgAwADMAQQAsACAAVQArADIAMAA0ADQALAAgAFUAKwAyADEAMgAyACwAIABVACsAMgAxADIANgAsACAAVQArADIAMgAwADIALAAgAFUAKwAyADIAMAA2ACwAIABVACsAMgAyADAARgAsACAAVQArADIAMgAxADEALQBVACsAMgAyADEAMgAsACAAVQArADIAMgAxADkALQBVACsAMgAyADEAQQAsACAAVQArADIAMgAxAEUALAAgAFUAKwAyADIAMgBCACwAIABVACsAMgAyADQAOAAsACAAVQArADIAMgA2ADAALAAgAFUAKwAyADIANgA0AC0AVQArADIAMgA2ADUALAAgAFUAKwAyADIARgAyACwAIABVACsAMgA1AEMAQQAsACAAVQArADMAMAAwADcALAAgAFUAKwA0AEUAMAAwACwAIABVACsANABFADAAMwAsACAAVQArADQARQAwADkALAAgAFUAKwA0AEUANQBEACwAIABVACsANABFADgAQwAsACAAVQArADQARQA5ADQALAAgAFUAKwA1ADEANgBCACwAIABVACsANQAxADYARAAsACAAVQArADUAMwA0ADEALAAgAFUAKwA1ADYARAA3ACwAIABVACsANQA2AEQAQgAsACAAVQArADUANwAxAEYALAAgAFUAKwA2ADcAMgA4ACwAIABVACsANgBDADMANAAsACAAVQArADcAMAA2AEIALAAgAFUAKwA5ADEARAAxACwAIABVACsARgAwADAAMAAtAFUAKwBGADAAMAAyAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAG0AYQBwAHAAZQBkACAAdABvACAAcwBvAG0AZQB0AGgAaQBuAGcAIABlAGwAcwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnADoAIAAiACAAIgAgACgAVQArADIAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIgBwACIAIAAoAFUAKwA3ADAAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGEAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAZABlAHMAYwBlAG4AdAA7ACAAIgDJACIAIAAoAFUAKwBDADkAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGQAZQBzAGMAZQBuAHQAIABiAHUAdAAgAGYAdQBsAGwAIABhAHMAYwBlAG4AdAA7ACAATgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBBADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8ALQB3AGkAZAB0AGgAIABuAG8AbgAtAGIAcgBlAGEAawBpAG4AZwAgAHMAcABhAGMAZQAgACgAVQArAEYARQBGAEYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAMAAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAaABhAGwAZgAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADMAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFQAaAByAGUAZQAtAHAAZQByAC0AZQBtACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAANAApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAaABpAHIAZAAgAGEAZAB2AGEAbgBjAGUAOwAgAEYAbwB1AHIALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADUAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABxAHUAYQByAHQAZQByACAAYQBkAHYAYQBuAGMAZQA7ACAAUwBpAHgALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABzAGkAeAB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAaQBuACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAOQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAGYAaQBmAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAEgAYQBpAHIAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABBACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAdABlAG4AdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwAEIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAASQBkAGUAbwBnAHIAYQBwAGgAaQBjACAAcwBwAGEAYwBlACAAKABVACsAMwAwADAAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAG4AbwBuAC0AagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABDACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABqAG8AaQBuAGUAcgAgACgAVQArADIAMAAwAEQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAQwBoAGkAIAAoAFUAKwAzAEEANwApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAImoqACIAIAAoAFUAKwA2AEEAMgBBACkAOgAgAFQAaABpAG4AIABoAG8AcgBpAHoAbwBuAHQAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABHAHIAZQBlAGsAIABjAGEAcABpAHQAYQBsACAAbABlAHQAdABlAHIAIABVAHAAcwBpAGwAbwBuACAAKABVACsAMwBBADUAKQA6ACAAVABoAGkAbgAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIn61ACIAIAAoAFUAKwA3AEUAQgA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUALgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAGMALgBvAHIAZwBoAHQAdABwADoALwAvAGQAZQB2AC4AdwAzAC4AbwByAGcALwBDAFMAUwAvAGYAbwBuAHQAcwAvAGEAaABlAG0ALwBDAE8AUABZAEkATgBHAAoAQQBoAGUAbQBSAGUAZwB1AGwAYQByAEEAaABlAG0AAAACAAAAAAAA/3sAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAAECAQMAAwAEAAUABgAHAAgACQALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsETlVMTAhnbHlwaDI0MwAA - willSendRequest redirectResponse (null) -data:;base64,AAEAAAALAIAAAwAwT1MvMnNl+fYAAAC8AAAAYGNtYXAAtgEOAAABHAAAAERnYXNwABcACQAAAWAAAAAQZ2x5Zs7yyEgAAAFwAAAHXmhlYWTbUM21AAAI0AAAADZoaGVhBwoDbAAACQgAAAAkaG10eCEQAH0AAAksAAABLGxvY2FC4ETIAAAKWAAAAJhtYXhwAE4ACQAACvAAAAAgbmFtZbgpxhkAAAsQAAAponBvc3QEPCueAAA0tAAAAMYAAwPWAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAIABAAAAAAAAACAAACvEAAgSAAAAAAAAAAAVzNDIABAACAAdgMg/zgAAAMgAMj/EPwHAAD//wMgAyAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADAAAAAIAAgAAgAAACYAYAB2//8AAAAgACgAbP///+P/4v/XAAEAAAAAAAAAAAAAAAMACAACABAAAf//AAMAAgB9AAADawMgAAMABwAAMxEhESUhESF9Au79jwH0/gwDIPzgfQImAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAAAAAEAAAABgACx6/lFXw889QAJA+gAAAAAs29fWQAAAADE3askAAD/OAPoAyAAAAADAAAAAAAAAAAAAQAAAyD/OAAAA+gAAAAAA+gAAQAAAAAAAAAAAAAAAAAAAEsD6AB9AAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAAAAAUABQAFAAUACEALgA7AEgAVQBiAG8AfACJAJYAowCwAL0AygDXAOQA8QD+AQsBGAElATIBPwFMAVkBZgFzAYABjQGaAacBtAHBAc4B2wHoAfUCAgIPAhwCKQI2AkMCUAJdAmoCdwKEApECngKrArgCxQLSAt8C7AL5AwYDEwMgAy0DOgNHA1QDYQNuA3sDiAOVA6IDrwABAAAASwAIAAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAJAG2AAAAAAAAAAAB8AAAAAAAAAAAAAEACAHwAAAAAAAAAAIADgH4AAAAAAAAAAMAIgIGAAAAAAAAAAQACAIoAAAAAAAAAAUAGAIwAAAAAAAAAAYACAJIAAAAAAAAAAoQaAJQAAAAAAAAAAsAJBK4AAAAAAAAAA4AUhLcAAEAAAAAAAAA+BMuAAEAAAAAAAEABBQmAAEAAAAAAAIABxQqAAEAAAAAAAMAERQxAAEAAAAAAAQABBRCAAEAAAAAAAUADBRGAAEAAAAAAAYABBRSAAEAAAAAAAoAABRWAAEAAAAAAAsAEhRWAAEAAAAAAA4AKRRoAAEAAAAAABAABBSRAAEAAAAAABEABxSVAAEAAAAAABIABBScAAMAAQQJAAAB8BSgAAMAAQQJAAEACBaQAAMAAQQJAAIADhaYAAMAAQQJAAMAIhamAAMAAQQJAAQACBbIAAMAAQQJAAUAGBbQAAMAAQQJAAYACBboAAMAAQQJAAoQaBbwAAMAAQQJAAsAJCdYAAMAAQQJAA4AUid8AAMAAQQJABAACCfOAAMAAQQJABEADifWAAMAAQQJABIACCfkAFQAaABlACAAQQBoAGUAbQAgAGYAbwBuAHQAIABiAGUAbABvAG4AZwBzACAAdABvACAAdABoAGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuAC4AIABJAG4AIABqAHUAcgBpAHMAZABpAGMAdABpAG8AbgBzACAAdABoAGEAdAAgAGQAbwAgAG4AbwB0ACAAcgBlAGMAbwBnAG4AaQB6AGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQBzAGUAIABmAGkAbABlAHMALAAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAWgBlAHIAbwAgAGQAZQBjAGwAYQByAGEAdABpAG8AbgAgAGEAcABwAGwAaQBlAHMAOgAgAGgAdAB0AHAAOgAvAC8AbABhAGIAcwAuAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwB6AGUAcgBvAC0AdwBhAGkAdgBlAC8AMQAuADAALwB1AHMALwBsAGUAZwBhAGwAYwBvAGQAZQBBAGgAZQBtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAIABBAGgAZQBtAEEAaABlAG0AVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAQQBoAGUAbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAdwBhAHMAIABkAGUAdgBlAGwAbwBwAGUAZAAgAGIAeQAgAFQAbwBkAGQAIABGAGEAaAByAG4AZQByACAAYQBuAGQAIABNAHkAbABlAHMAIABDAC4AIABNAGEAeABmAGkAZQBsAGQAIAB0AG8AIABoAGUAbABwACAAdABlAHMAdAAgAHcAcgBpAHQAZQByAHMAIABkAGUAdgBlAGwAbwBwACAAcAByAGUAZABpAGMAdABhAGIAbABlACAAdABlAHMAdABzAC4AIABUAGgAZQAgAHUAbgBpAHQAcwAgAHAAZQByACAAZQBtACAAaQBzACAAMQAwADAAMAAsACAAdABoAGUAIABhAGQAdgBhAG4AYwBlACAAaQBzACAAOAAwADAALAAgAGEAbgBkACAAdABoAGUAIABkAGUAcwBjAGUAbgB0ACAAaQBzACAAMgAwADAALAAgAHQAaABlAHIAZQBiAHkAIABtAGEAawBpAG4AZwAgAHQAaABlACAAZQBtACAAcwBxAHUAYQByAGUAIABlAHgAYQBjAHQAbAB5ACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAZwBsAHkAcABoAHMAIABmAG8AcgAgAG0AbwBzAHQAIABjAGgAYQByAGEAYwB0AGUAcgBzACAAaQBzACAAcwBpAG0AcABsAHkAIABhACAAYgBvAHgAIAB3AGgAaQBjAGgAIABmAGkAbABsAHMAIAB0AGgAaQBzACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAYwBvAGQAZQBwAG8AaQBuAHQAcwAgAG0AYQBwAHAAZQBkACAAdABvACAAdABoAGkAcwAgAGYAdQBsAGwAIABzAHEAdQBhAHIAZQAgAHcAaQB0AGgAIABhACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAIABhAHIAZQAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIAByAGEAbgBnAGUAcwA6ACAAVQArADIAMAAtAFUAKwAyADYALAAgAFUAKwAyADgALQBVACsANgBGACwAIABVACsANwAxAC0AVQArADcARQAsACAAVQArAEEAMAAtAFUAKwBDADgALAAgAFUAKwBDAEEALQBVACsARgBGACwAIABVACsAMQAzADEALAAgAFUAKwAxADUAMgAtAFUAKwAxADUAMwAsACAAVQArADEANwA4ACwAIABVACsAMQA5ADIALAAgAFUAKwAyAEMANgAtAFUAKwAyAEMANwAsACAAVQArADIAQwA5ACwAIABVACsAMgBEADgALQBVACsAMgBEAEQALAAgAFUAKwAzADkANAAsACAAVQArADMAQQA1ACwAIABVACsAMwBBADcALAAgAFUAKwAzAEEAOQAsACAAVQArADMAQgBDACwAIABVACsAMwBDADAALAAgAFUAKwAyADAAMQAzAC0AVQArADIAMAAxADQALAAgAFUAKwAyADAAMQA4AC0AVQArADIAMAAxAEEALAAgAFUAKwAyADAAMQBDAC0AVQArADIAMAAxAEUALAAgAFUAKwAyADAAMgAwAC0AVQArADIAMAAyADIALAAgAFUAKwAyADAAMgA2ACwAIABVACsAMgAwADMAMAAsACAAVQArADIAMAAzADkALQBVACsAMgAwADMAQQAsACAAVQArADIAMAA0ADQALAAgAFUAKwAyADEAMgAyACwAIABVACsAMgAxADIANgAsACAAVQArADIAMgAwADIALAAgAFUAKwAyADIAMAA2ACwAIABVACsAMgAyADAARgAsACAAVQArADIAMgAxADEALQBVACsAMgAyADEAMgAsACAAVQArADIAMgAxADkALQBVACsAMgAyADEAQQAsACAAVQArADIAMgAxAEUALAAgAFUAKwAyADIAMgBCACwAIABVACsAMgAyADQAOAAsACAAVQArADIAMgA2ADAALAAgAFUAKwAyADIANgA0AC0AVQArADIAMgA2ADUALAAgAFUAKwAyADIARgAyACwAIABVACsAMgA1AEMAQQAsACAAVQArADMAMAAwADcALAAgAFUAKwA0AEUAMAAwACwAIABVACsANABFADAAMwAsACAAVQArADQARQAwADkALAAgAFUAKwA0AEUANQBEACwAIABVACsANABFADgAQwAsACAAVQArADQARQA5ADQALAAgAFUAKwA1ADEANgBCACwAIABVACsANQAxADYARAAsACAAVQArADUAMwA0ADEALAAgAFUAKwA1ADYARAA3ACwAIABVACsANQA2AEQAQgAsACAAVQArADUANwAxAEYALAAgAFUAKwA2ADcAMgA4ACwAIABVACsANgBDADMANAAsACAAVQArADcAMAA2AEIALAAgAFUAKwA5ADEARAAxACwAIABVACsARgAwADAAMAAtAFUAKwBGADAAMAAyAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAG0AYQBwAHAAZQBkACAAdABvACAAcwBvAG0AZQB0AGgAaQBuAGcAIABlAGwAcwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnADoAIAAiACAAIgAgACgAVQArADIAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIgBwACIAIAAoAFUAKwA3ADAAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGEAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAZABlAHMAYwBlAG4AdAA7ACAAIgDJACIAIAAoAFUAKwBDADkAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGQAZQBzAGMAZQBuAHQAIABiAHUAdAAgAGYAdQBsAGwAIABhAHMAYwBlAG4AdAA7ACAATgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBBADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8ALQB3AGkAZAB0AGgAIABuAG8AbgAtAGIAcgBlAGEAawBpAG4AZwAgAHMAcABhAGMAZQAgACgAVQArAEYARQBGAEYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAMAAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAaABhAGwAZgAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADMAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFQAaAByAGUAZQAtAHAAZQByAC0AZQBtACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAANAApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAaABpAHIAZAAgAGEAZAB2AGEAbgBjAGUAOwAgAEYAbwB1AHIALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADUAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABxAHUAYQByAHQAZQByACAAYQBkAHYAYQBuAGMAZQA7ACAAUwBpAHgALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABzAGkAeAB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAaQBuACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAOQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAGYAaQBmAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAEgAYQBpAHIAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABBACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAdABlAG4AdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwAEIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAASQBkAGUAbwBnAHIAYQBwAGgAaQBjACAAcwBwAGEAYwBlACAAKABVACsAMwAwADAAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAG4AbwBuAC0AagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABDACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABqAG8AaQBuAGUAcgAgACgAVQArADIAMAAwAEQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAQwBoAGkAIAAoAFUAKwAzAEEANwApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAImoqACIAIAAoAFUAKwA2AEEAMgBBACkAOgAgAFQAaABpAG4AIABoAG8AcgBpAHoAbwBuAHQAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABHAHIAZQBlAGsAIABjAGEAcABpAHQAYQBsACAAbABlAHQAdABlAHIAIABVAHAAcwBpAGwAbwBuACAAKABVACsAMwBBADUAKQA6ACAAVABoAGkAbgAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIn61ACIAIAAoAFUAKwA3AEUAQgA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUALgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAGMALgBvAHIAZwBoAHQAdABwADoALwAvAGQAZQB2AC4AdwAzAC4AbwByAGcALwBDAFMAUwAvAGYAbwBuAHQAcwAvAGEAaABlAG0ALwBDAE8AUABZAEkATgBHAApUaGUgQWhlbSBmb250IGJlbG9uZ3MgdG8gdGhlIHB1YmxpYyBkb21haW4uIEluIGp1cmlzZGljdGlvbnMgdGhhdCBkbyBub3QgcmVjb2duaXplIHB1YmxpYyBkb21haW4gb3duZXJzaGlwIG9mIHRoZXNlIGZpbGVzLCB0aGUgZm9sbG93aW5nIENyZWF0aXZlIENvbW1vbnMgWmVybyBkZWNsYXJhdGlvbiBhcHBsaWVzOiBodHRwOi8vbGFicy5jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL3plcm8td2FpdmUvMS4wL3VzL2xlZ2FsY29kZUFoZW1SZWd1bGFyVmVyc2lvbiAxLjUwIEFoZW1BaGVtVmVyc2lvbiAxLjUwQWhlbWh0dHA6Ly93d3cudzNjLm9yZ2h0dHA6Ly9kZXYudzMub3JnL0NTUy9mb250cy9haGVtL0NPUFlJTkcKQWhlbVJlZ3VsYXJBaGVtAFQAaABlACAAQQBoAGUAbQAgAGYAbwBuAHQAIABiAGUAbABvAG4AZwBzACAAdABvACAAdABoAGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuAC4AIABJAG4AIABqAHUAcgBpAHMAZABpAGMAdABpAG8AbgBzACAAdABoAGEAdAAgAGQAbwAgAG4AbwB0ACAAcgBlAGMAbwBnAG4AaQB6AGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQBzAGUAIABmAGkAbABlAHMALAAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAWgBlAHIAbwAgAGQAZQBjAGwAYQByAGEAdABpAG8AbgAgAGEAcABwAGwAaQBlAHMAOgAgAGgAdAB0AHAAOgAvAC8AbABhAGIAcwAuAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwB6AGUAcgBvAC0AdwBhAGkAdgBlAC8AMQAuADAALwB1AHMALwBsAGUAZwBhAGwAYwBvAGQAZQBBAGgAZQBtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAIABBAGgAZQBtAEEAaABlAG0AVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAQQBoAGUAbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAdwBhAHMAIABkAGUAdgBlAGwAbwBwAGUAZAAgAGIAeQAgAFQAbwBkAGQAIABGAGEAaAByAG4AZQByACAAYQBuAGQAIABNAHkAbABlAHMAIABDAC4AIABNAGEAeABmAGkAZQBsAGQAIAB0AG8AIABoAGUAbABwACAAdABlAHMAdAAgAHcAcgBpAHQAZQByAHMAIABkAGUAdgBlAGwAbwBwACAAcAByAGUAZABpAGMAdABhAGIAbABlACAAdABlAHMAdABzAC4AIABUAGgAZQAgAHUAbgBpAHQAcwAgAHAAZQByACAAZQBtACAAaQBzACAAMQAwADAAMAAsACAAdABoAGUAIABhAGQAdgBhAG4AYwBlACAAaQBzACAAOAAwADAALAAgAGEAbgBkACAAdABoAGUAIABkAGUAcwBjAGUAbgB0ACAAaQBzACAAMgAwADAALAAgAHQAaABlAHIAZQBiAHkAIABtAGEAawBpAG4AZwAgAHQAaABlACAAZQBtACAAcwBxAHUAYQByAGUAIABlAHgAYQBjAHQAbAB5ACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAZwBsAHkAcABoAHMAIABmAG8AcgAgAG0AbwBzAHQAIABjAGgAYQByAGEAYwB0AGUAcgBzACAAaQBzACAAcwBpAG0AcABsAHkAIABhACAAYgBvAHgAIAB3AGgAaQBjAGgAIABmAGkAbABsAHMAIAB0AGgAaQBzACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAYwBvAGQAZQBwAG8AaQBuAHQAcwAgAG0AYQBwAHAAZQBkACAAdABvACAAdABoAGkAcwAgAGYAdQBsAGwAIABzAHEAdQBhAHIAZQAgAHcAaQB0AGgAIABhACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAIABhAHIAZQAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIAByAGEAbgBnAGUAcwA6ACAAVQArADIAMAAtAFUAKwAyADYALAAgAFUAKwAyADgALQBVACsANgBGACwAIABVACsANwAxAC0AVQArADcARQAsACAAVQArAEEAMAAtAFUAKwBDADgALAAgAFUAKwBDAEEALQBVACsARgBGACwAIABVACsAMQAzADEALAAgAFUAKwAxADUAMgAtAFUAKwAxADUAMwAsACAAVQArADEANwA4ACwAIABVACsAMQA5ADIALAAgAFUAKwAyAEMANgAtAFUAKwAyAEMANwAsACAAVQArADIAQwA5ACwAIABVACsAMgBEADgALQBVACsAMgBEAEQALAAgAFUAKwAzADkANAAsACAAVQArADMAQQA1ACwAIABVACsAMwBBADcALAAgAFUAKwAzAEEAOQAsACAAVQArADMAQgBDACwAIABVACsAMwBDADAALAAgAFUAKwAyADAAMQAzAC0AVQArADIAMAAxADQALAAgAFUAKwAyADAAMQA4AC0AVQArADIAMAAxAEEALAAgAFUAKwAyADAAMQBDAC0AVQArADIAMAAxAEUALAAgAFUAKwAyADAAMgAwAC0AVQArADIAMAAyADIALAAgAFUAKwAyADAAMgA2ACwAIABVACsAMgAwADMAMAAsACAAVQArADIAMAAzADkALQBVACsAMgAwADMAQQAsACAAVQArADIAMAA0ADQALAAgAFUAKwAyADEAMgAyACwAIABVACsAMgAxADIANgAsACAAVQArADIAMgAwADIALAAgAFUAKwAyADIAMAA2ACwAIABVACsAMgAyADAARgAsACAAVQArADIAMgAxADEALQBVACsAMgAyADEAMgAsACAAVQArADIAMgAxADkALQBVACsAMgAyADEAQQAsACAAVQArADIAMgAxAEUALAAgAFUAKwAyADIAMgBCACwAIABVACsAMgAyADQAOAAsACAAVQArADIAMgA2ADAALAAgAFUAKwAyADIANgA0AC0AVQArADIAMgA2ADUALAAgAFUAKwAyADIARgAyACwAIABVACsAMgA1AEMAQQAsACAAVQArADMAMAAwADcALAAgAFUAKwA0AEUAMAAwACwAIABVACsANABFADAAMwAsACAAVQArADQARQAwADkALAAgAFUAKwA0AEUANQBEACwAIABVACsANABFADgAQwAsACAAVQArADQARQA5ADQALAAgAFUAKwA1ADEANgBCACwAIABVACsANQAxADYARAAsACAAVQArADUAMwA0ADEALAAgAFUAKwA1ADYARAA3ACwAIABVACsANQA2AEQAQgAsACAAVQArADUANwAxAEYALAAgAFUAKwA2ADcAMgA4ACwAIABVACsANgBDADMANAAsACAAVQArADcAMAA2AEIALAAgAFUAKwA5ADEARAAxACwAIABVACsARgAwADAAMAAtAFUAKwBGADAAMAAyAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAG0AYQBwAHAAZQBkACAAdABvACAAcwBvAG0AZQB0AGgAaQBuAGcAIABlAGwAcwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnADoAIAAiACAAIgAgACgAVQArADIAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIgBwACIAIAAoAFUAKwA3ADAAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGEAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAZABlAHMAYwBlAG4AdAA7ACAAIgDJACIAIAAoAFUAKwBDADkAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGQAZQBzAGMAZQBuAHQAIABiAHUAdAAgAGYAdQBsAGwAIABhAHMAYwBlAG4AdAA7ACAATgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBBADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8ALQB3AGkAZAB0AGgAIABuAG8AbgAtAGIAcgBlAGEAawBpAG4AZwAgAHMAcABhAGMAZQAgACgAVQArAEYARQBGAEYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAMAAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAaABhAGwAZgAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADMAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFQAaAByAGUAZQAtAHAAZQByAC0AZQBtACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAANAApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAaABpAHIAZAAgAGEAZAB2AGEAbgBjAGUAOwAgAEYAbwB1AHIALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADUAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABxAHUAYQByAHQAZQByACAAYQBkAHYAYQBuAGMAZQA7ACAAUwBpAHgALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABzAGkAeAB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAaQBuACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAOQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAGYAaQBmAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAEgAYQBpAHIAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABBACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAdABlAG4AdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwAEIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAASQBkAGUAbwBnAHIAYQBwAGgAaQBjACAAcwBwAGEAYwBlACAAKABVACsAMwAwADAAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAG4AbwBuAC0AagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABDACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABqAG8AaQBuAGUAcgAgACgAVQArADIAMAAwAEQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAQwBoAGkAIAAoAFUAKwAzAEEANwApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAImoqACIAIAAoAFUAKwA2AEEAMgBBACkAOgAgAFQAaABpAG4AIABoAG8AcgBpAHoAbwBuAHQAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABHAHIAZQBlAGsAIABjAGEAcABpAHQAYQBsACAAbABlAHQAdABlAHIAIABVAHAAcwBpAGwAbwBuACAAKABVACsAMwBBADUAKQA6ACAAVABoAGkAbgAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIn61ACIAIAAoAFUAKwA3AEUAQgA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUALgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAGMALgBvAHIAZwBoAHQAdABwADoALwAvAGQAZQB2AC4AdwAzAC4AbwByAGcALwBDAFMAUwAvAGYAbwBuAHQAcwAvAGEAaABlAG0ALwBDAE8AUABZAEkATgBHAAoAQQBoAGUAbQBSAGUAZwB1AGwAYQByAEEAaABlAG0AAAACAAAAAAAA/3sAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAAECAQMAAwAEAAUABgAHAAgACQALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsETlVMTAhnbHlwaDI0MwAA - didReceiveResponse -data:;base64,AAEAAAALAIAAAwAwT1MvMnNl+fYAAAC8AAAAYGNtYXAAtgEOAAABHAAAAERnYXNwABcACQAAAWAAAAAQZ2x5Zs7yyEgAAAFwAAAHXmhlYWTbUM21AAAI0AAAADZoaGVhBwoDbAAACQgAAAAkaG10eCEQAH0AAAksAAABLGxvY2FC4ETIAAAKWAAAAJhtYXhwAE4ACQAACvAAAAAgbmFtZbgpxhkAAAsQAAAponBvc3QEPCueAAA0tAAAAMYAAwPWAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAIABAAAAAAAAACAAACvEAAgSAAAAAAAAAAAVzNDIABAACAAdgMg/zgAAAMgAMj/EPwHAAD//wMgAyAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADAAAAAIAAgAAgAAACYAYAB2//8AAAAgACgAbP///+P/4v/XAAEAAAAAAAAAAAAAAAMACAACABAAAf//AAMAAgB9AAADawMgAAMABwAAMxEhESUhESF9Au79jwH0/gwDIPzgfQImAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAABAAD/OAPoAyAAAwAAESERIQPo/BgDIPwYAAEAAP84A+gDIAADAAARIREhA+j8GAMg/BgAAQAA/zgD6AMgAAMAABEhESED6PwYAyD8GAAAAAEAAAABgACx6/lFXw889QAJA+gAAAAAs29fWQAAAADE3askAAD/OAPoAyAAAAADAAAAAAAAAAAAAQAAAyD/OAAAA+gAAAAAA+gAAQAAAAAAAAAAAAAAAAAAAEsD6AB9AAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAAAAAUABQAFAAUACEALgA7AEgAVQBiAG8AfACJAJYAowCwAL0AygDXAOQA8QD+AQsBGAElATIBPwFMAVkBZgFzAYABjQGaAacBtAHBAc4B2wHoAfUCAgIPAhwCKQI2AkMCUAJdAmoCdwKEApECngKrArgCxQLSAt8C7AL5AwYDEwMgAy0DOgNHA1QDYQNuA3sDiAOVA6IDrwABAAAASwAIAAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAJAG2AAAAAAAAAAAB8AAAAAAAAAAAAAEACAHwAAAAAAAAAAIADgH4AAAAAAAAAAMAIgIGAAAAAAAAAAQACAIoAAAAAAAAAAUAGAIwAAAAAAAAAAYACAJIAAAAAAAAAAoQaAJQAAAAAAAAAAsAJBK4AAAAAAAAAA4AUhLcAAEAAAAAAAAA+BMuAAEAAAAAAAEABBQmAAEAAAAAAAIABxQqAAEAAAAAAAMAERQxAAEAAAAAAAQABBRCAAEAAAAAAAUADBRGAAEAAAAAAAYABBRSAAEAAAAAAAoAABRWAAEAAAAAAAsAEhRWAAEAAAAAAA4AKRRoAAEAAAAAABAABBSRAAEAAAAAABEABxSVAAEAAAAAABIABBScAAMAAQQJAAAB8BSgAAMAAQQJAAEACBaQAAMAAQQJAAIADhaYAAMAAQQJAAMAIhamAAMAAQQJAAQACBbIAAMAAQQJAAUAGBbQAAMAAQQJAAYACBboAAMAAQQJAAoQaBbwAAMAAQQJAAsAJCdYAAMAAQQJAA4AUid8AAMAAQQJABAACCfOAAMAAQQJABEADifWAAMAAQQJABIACCfkAFQAaABlACAAQQBoAGUAbQAgAGYAbwBuAHQAIABiAGUAbABvAG4AZwBzACAAdABvACAAdABoAGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuAC4AIABJAG4AIABqAHUAcgBpAHMAZABpAGMAdABpAG8AbgBzACAAdABoAGEAdAAgAGQAbwAgAG4AbwB0ACAAcgBlAGMAbwBnAG4AaQB6AGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQBzAGUAIABmAGkAbABlAHMALAAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAWgBlAHIAbwAgAGQAZQBjAGwAYQByAGEAdABpAG8AbgAgAGEAcABwAGwAaQBlAHMAOgAgAGgAdAB0AHAAOgAvAC8AbABhAGIAcwAuAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwB6AGUAcgBvAC0AdwBhAGkAdgBlAC8AMQAuADAALwB1AHMALwBsAGUAZwBhAGwAYwBvAGQAZQBBAGgAZQBtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAIABBAGgAZQBtAEEAaABlAG0AVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAQQBoAGUAbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAdwBhAHMAIABkAGUAdgBlAGwAbwBwAGUAZAAgAGIAeQAgAFQAbwBkAGQAIABGAGEAaAByAG4AZQByACAAYQBuAGQAIABNAHkAbABlAHMAIABDAC4AIABNAGEAeABmAGkAZQBsAGQAIAB0AG8AIABoAGUAbABwACAAdABlAHMAdAAgAHcAcgBpAHQAZQByAHMAIABkAGUAdgBlAGwAbwBwACAAcAByAGUAZABpAGMAdABhAGIAbABlACAAdABlAHMAdABzAC4AIABUAGgAZQAgAHUAbgBpAHQAcwAgAHAAZQByACAAZQBtACAAaQBzACAAMQAwADAAMAAsACAAdABoAGUAIABhAGQAdgBhAG4AYwBlACAAaQBzACAAOAAwADAALAAgAGEAbgBkACAAdABoAGUAIABkAGUAcwBjAGUAbgB0ACAAaQBzACAAMgAwADAALAAgAHQAaABlAHIAZQBiAHkAIABtAGEAawBpAG4AZwAgAHQAaABlACAAZQBtACAAcwBxAHUAYQByAGUAIABlAHgAYQBjAHQAbAB5ACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAZwBsAHkAcABoAHMAIABmAG8AcgAgAG0AbwBzAHQAIABjAGgAYQByAGEAYwB0AGUAcgBzACAAaQBzACAAcwBpAG0AcABsAHkAIABhACAAYgBvAHgAIAB3AGgAaQBjAGgAIABmAGkAbABsAHMAIAB0AGgAaQBzACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAYwBvAGQAZQBwAG8AaQBuAHQAcwAgAG0AYQBwAHAAZQBkACAAdABvACAAdABoAGkAcwAgAGYAdQBsAGwAIABzAHEAdQBhAHIAZQAgAHcAaQB0AGgAIABhACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAIABhAHIAZQAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIAByAGEAbgBnAGUAcwA6ACAAVQArADIAMAAtAFUAKwAyADYALAAgAFUAKwAyADgALQBVACsANgBGACwAIABVACsANwAxAC0AVQArADcARQAsACAAVQArAEEAMAAtAFUAKwBDADgALAAgAFUAKwBDAEEALQBVACsARgBGACwAIABVACsAMQAzADEALAAgAFUAKwAxADUAMgAtAFUAKwAxADUAMwAsACAAVQArADEANwA4ACwAIABVACsAMQA5ADIALAAgAFUAKwAyAEMANgAtAFUAKwAyAEMANwAsACAAVQArADIAQwA5ACwAIABVACsAMgBEADgALQBVACsAMgBEAEQALAAgAFUAKwAzADkANAAsACAAVQArADMAQQA1ACwAIABVACsAMwBBADcALAAgAFUAKwAzAEEAOQAsACAAVQArADMAQgBDACwAIABVACsAMwBDADAALAAgAFUAKwAyADAAMQAzAC0AVQArADIAMAAxADQALAAgAFUAKwAyADAAMQA4AC0AVQArADIAMAAxAEEALAAgAFUAKwAyADAAMQBDAC0AVQArADIAMAAxAEUALAAgAFUAKwAyADAAMgAwAC0AVQArADIAMAAyADIALAAgAFUAKwAyADAAMgA2ACwAIABVACsAMgAwADMAMAAsACAAVQArADIAMAAzADkALQBVACsAMgAwADMAQQAsACAAVQArADIAMAA0ADQALAAgAFUAKwAyADEAMgAyACwAIABVACsAMgAxADIANgAsACAAVQArADIAMgAwADIALAAgAFUAKwAyADIAMAA2ACwAIABVACsAMgAyADAARgAsACAAVQArADIAMgAxADEALQBVACsAMgAyADEAMgAsACAAVQArADIAMgAxADkALQBVACsAMgAyADEAQQAsACAAVQArADIAMgAxAEUALAAgAFUAKwAyADIAMgBCACwAIABVACsAMgAyADQAOAAsACAAVQArADIAMgA2ADAALAAgAFUAKwAyADIANgA0AC0AVQArADIAMgA2ADUALAAgAFUAKwAyADIARgAyACwAIABVACsAMgA1AEMAQQAsACAAVQArADMAMAAwADcALAAgAFUAKwA0AEUAMAAwACwAIABVACsANABFADAAMwAsACAAVQArADQARQAwADkALAAgAFUAKwA0AEUANQBEACwAIABVACsANABFADgAQwAsACAAVQArADQARQA5ADQALAAgAFUAKwA1ADEANgBCACwAIABVACsANQAxADYARAAsACAAVQArADUAMwA0ADEALAAgAFUAKwA1ADYARAA3ACwAIABVACsANQA2AEQAQgAsACAAVQArADUANwAxAEYALAAgAFUAKwA2ADcAMgA4ACwAIABVACsANgBDADMANAAsACAAVQArADcAMAA2AEIALAAgAFUAKwA5ADEARAAxACwAIABVACsARgAwADAAMAAtAFUAKwBGADAAMAAyAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAG0AYQBwAHAAZQBkACAAdABvACAAcwBvAG0AZQB0AGgAaQBuAGcAIABlAGwAcwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnADoAIAAiACAAIgAgACgAVQArADIAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIgBwACIAIAAoAFUAKwA3ADAAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGEAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAZABlAHMAYwBlAG4AdAA7ACAAIgDJACIAIAAoAFUAKwBDADkAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGQAZQBzAGMAZQBuAHQAIABiAHUAdAAgAGYAdQBsAGwAIABhAHMAYwBlAG4AdAA7ACAATgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBBADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8ALQB3AGkAZAB0AGgAIABuAG8AbgAtAGIAcgBlAGEAawBpAG4AZwAgAHMAcABhAGMAZQAgACgAVQArAEYARQBGAEYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAMAAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAaABhAGwAZgAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADMAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFQAaAByAGUAZQAtAHAAZQByAC0AZQBtACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAANAApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAaABpAHIAZAAgAGEAZAB2AGEAbgBjAGUAOwAgAEYAbwB1AHIALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADUAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABxAHUAYQByAHQAZQByACAAYQBkAHYAYQBuAGMAZQA7ACAAUwBpAHgALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABzAGkAeAB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAaQBuACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAOQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAGYAaQBmAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAEgAYQBpAHIAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABBACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAdABlAG4AdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwAEIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAASQBkAGUAbwBnAHIAYQBwAGgAaQBjACAAcwBwAGEAYwBlACAAKABVACsAMwAwADAAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAG4AbwBuAC0AagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABDACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABqAG8AaQBuAGUAcgAgACgAVQArADIAMAAwAEQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAQwBoAGkAIAAoAFUAKwAzAEEANwApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAImoqACIAIAAoAFUAKwA2AEEAMgBBACkAOgAgAFQAaABpAG4AIABoAG8AcgBpAHoAbwBuAHQAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABHAHIAZQBlAGsAIABjAGEAcABpAHQAYQBsACAAbABlAHQAdABlAHIAIABVAHAAcwBpAGwAbwBuACAAKABVACsAMwBBADUAKQA6ACAAVABoAGkAbgAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIn61ACIAIAAoAFUAKwA3AEUAQgA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUALgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAGMALgBvAHIAZwBoAHQAdABwADoALwAvAGQAZQB2AC4AdwAzAC4AbwByAGcALwBDAFMAUwAvAGYAbwBuAHQAcwAvAGEAaABlAG0ALwBDAE8AUABZAEkATgBHAApUaGUgQWhlbSBmb250IGJlbG9uZ3MgdG8gdGhlIHB1YmxpYyBkb21haW4uIEluIGp1cmlzZGljdGlvbnMgdGhhdCBkbyBub3QgcmVjb2duaXplIHB1YmxpYyBkb21haW4gb3duZXJzaGlwIG9mIHRoZXNlIGZpbGVzLCB0aGUgZm9sbG93aW5nIENyZWF0aXZlIENvbW1vbnMgWmVybyBkZWNsYXJhdGlvbiBhcHBsaWVzOiBodHRwOi8vbGFicy5jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL3plcm8td2FpdmUvMS4wL3VzL2xlZ2FsY29kZUFoZW1SZWd1bGFyVmVyc2lvbiAxLjUwIEFoZW1BaGVtVmVyc2lvbiAxLjUwQWhlbWh0dHA6Ly93d3cudzNjLm9yZ2h0dHA6Ly9kZXYudzMub3JnL0NTUy9mb250cy9haGVtL0NPUFlJTkcKQWhlbVJlZ3VsYXJBaGVtAFQAaABlACAAQQBoAGUAbQAgAGYAbwBuAHQAIABiAGUAbABvAG4AZwBzACAAdABvACAAdABoAGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuAC4AIABJAG4AIABqAHUAcgBpAHMAZABpAGMAdABpAG8AbgBzACAAdABoAGEAdAAgAGQAbwAgAG4AbwB0ACAAcgBlAGMAbwBnAG4AaQB6AGUAIABwAHUAYgBsAGkAYwAgAGQAbwBtAGEAaQBuACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQBzAGUAIABmAGkAbABlAHMALAAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAWgBlAHIAbwAgAGQAZQBjAGwAYQByAGEAdABpAG8AbgAgAGEAcABwAGwAaQBlAHMAOgAgAGgAdAB0AHAAOgAvAC8AbABhAGIAcwAuAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwB6AGUAcgBvAC0AdwBhAGkAdgBlAC8AMQAuADAALwB1AHMALwBsAGUAZwBhAGwAYwBvAGQAZQBBAGgAZQBtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAIABBAGgAZQBtAEEAaABlAG0AVgBlAHIAcwBpAG8AbgAgADEALgA1ADAAQQBoAGUAbQBUAGgAZQAgAEEAaABlAG0AIABmAG8AbgB0ACAAdwBhAHMAIABkAGUAdgBlAGwAbwBwAGUAZAAgAGIAeQAgAFQAbwBkAGQAIABGAGEAaAByAG4AZQByACAAYQBuAGQAIABNAHkAbABlAHMAIABDAC4AIABNAGEAeABmAGkAZQBsAGQAIAB0AG8AIABoAGUAbABwACAAdABlAHMAdAAgAHcAcgBpAHQAZQByAHMAIABkAGUAdgBlAGwAbwBwACAAcAByAGUAZABpAGMAdABhAGIAbABlACAAdABlAHMAdABzAC4AIABUAGgAZQAgAHUAbgBpAHQAcwAgAHAAZQByACAAZQBtACAAaQBzACAAMQAwADAAMAAsACAAdABoAGUAIABhAGQAdgBhAG4AYwBlACAAaQBzACAAOAAwADAALAAgAGEAbgBkACAAdABoAGUAIABkAGUAcwBjAGUAbgB0ACAAaQBzACAAMgAwADAALAAgAHQAaABlAHIAZQBiAHkAIABtAGEAawBpAG4AZwAgAHQAaABlACAAZQBtACAAcwBxAHUAYQByAGUAIABlAHgAYQBjAHQAbAB5ACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAZwBsAHkAcABoAHMAIABmAG8AcgAgAG0AbwBzAHQAIABjAGgAYQByAGEAYwB0AGUAcgBzACAAaQBzACAAcwBpAG0AcABsAHkAIABhACAAYgBvAHgAIAB3AGgAaQBjAGgAIABmAGkAbABsAHMAIAB0AGgAaQBzACAAcwBxAHUAYQByAGUALgAgAFQAaABlACAAYwBvAGQAZQBwAG8AaQBuAHQAcwAgAG0AYQBwAHAAZQBkACAAdABvACAAdABoAGkAcwAgAGYAdQBsAGwAIABzAHEAdQBhAHIAZQAgAHcAaQB0AGgAIABhACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAIABhAHIAZQAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIAByAGEAbgBnAGUAcwA6ACAAVQArADIAMAAtAFUAKwAyADYALAAgAFUAKwAyADgALQBVACsANgBGACwAIABVACsANwAxAC0AVQArADcARQAsACAAVQArAEEAMAAtAFUAKwBDADgALAAgAFUAKwBDAEEALQBVACsARgBGACwAIABVACsAMQAzADEALAAgAFUAKwAxADUAMgAtAFUAKwAxADUAMwAsACAAVQArADEANwA4ACwAIABVACsAMQA5ADIALAAgAFUAKwAyAEMANgAtAFUAKwAyAEMANwAsACAAVQArADIAQwA5ACwAIABVACsAMgBEADgALQBVACsAMgBEAEQALAAgAFUAKwAzADkANAAsACAAVQArADMAQQA1ACwAIABVACsAMwBBADcALAAgAFUAKwAzAEEAOQAsACAAVQArADMAQgBDACwAIABVACsAMwBDADAALAAgAFUAKwAyADAAMQAzAC0AVQArADIAMAAxADQALAAgAFUAKwAyADAAMQA4AC0AVQArADIAMAAxAEEALAAgAFUAKwAyADAAMQBDAC0AVQArADIAMAAxAEUALAAgAFUAKwAyADAAMgAwAC0AVQArADIAMAAyADIALAAgAFUAKwAyADAAMgA2ACwAIABVACsAMgAwADMAMAAsACAAVQArADIAMAAzADkALQBVACsAMgAwADMAQQAsACAAVQArADIAMAA0ADQALAAgAFUAKwAyADEAMgAyACwAIABVACsAMgAxADIANgAsACAAVQArADIAMgAwADIALAAgAFUAKwAyADIAMAA2ACwAIABVACsAMgAyADAARgAsACAAVQArADIAMgAxADEALQBVACsAMgAyADEAMgAsACAAVQArADIAMgAxADkALQBVACsAMgAyADEAQQAsACAAVQArADIAMgAxAEUALAAgAFUAKwAyADIAMgBCACwAIABVACsAMgAyADQAOAAsACAAVQArADIAMgA2ADAALAAgAFUAKwAyADIANgA0AC0AVQArADIAMgA2ADUALAAgAFUAKwAyADIARgAyACwAIABVACsAMgA1AEMAQQAsACAAVQArADMAMAAwADcALAAgAFUAKwA0AEUAMAAwACwAIABVACsANABFADAAMwAsACAAVQArADQARQAwADkALAAgAFUAKwA0AEUANQBEACwAIABVACsANABFADgAQwAsACAAVQArADQARQA5ADQALAAgAFUAKwA1ADEANgBCACwAIABVACsANQAxADYARAAsACAAVQArADUAMwA0ADEALAAgAFUAKwA1ADYARAA3ACwAIABVACsANQA2AEQAQgAsACAAVQArADUANwAxAEYALAAgAFUAKwA2ADcAMgA4ACwAIABVACsANgBDADMANAAsACAAVQArADcAMAA2AEIALAAgAFUAKwA5ADEARAAxACwAIABVACsARgAwADAAMAAtAFUAKwBGADAAMAAyAC4AIABUAGgAZQAgAGMAbwBkAGUAcABvAGkAbgB0AHMAIAB3AGgAaQBjAGgAIABhAHIAZQAgAG0AYQBwAHAAZQBkACAAdABvACAAcwBvAG0AZQB0AGgAaQBuAGcAIABlAGwAcwBlACAAYQByAGUAIAB0AGgAZQAgAGYAbwBsAGwAbwB3AGkAbgBnADoAIAAiACAAIgAgACgAVQArADIAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIgBwACIAIAAoAFUAKwA3ADAAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGEAcwBjAGUAbgB0ACAAYgB1AHQAIABmAHUAbABsACAAZABlAHMAYwBlAG4AdAA7ACAAIgDJACIAIAAoAFUAKwBDADkAKQA6ACAAUABhAHQAaAAgAGgAYQBzACAAMAAgAGQAZQBzAGMAZQBuAHQAIABiAHUAdAAgAGYAdQBsAGwAIABhAHMAYwBlAG4AdAA7ACAATgBvAG4ALQBiAHIAZQBhAGsAaQBuAGcAIABzAHAAYQBjAGUAIAAoAFUAKwBBADAAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8ALQB3AGkAZAB0AGgAIABuAG8AbgAtAGIAcgBlAGEAawBpAG4AZwAgAHMAcABhAGMAZQAgACgAVQArAEYARQBGAEYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAMAAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbgAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAaABhAGwAZgAgAGEAZAB2AGEAbgBjAGUAOwAgAEUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADMAKQA6ACAATgBvACAAcABhAHQAaAAgAGIAdQB0ACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUAOwAgAFQAaAByAGUAZQAtAHAAZQByAC0AZQBtACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAANAApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAHQAaABpAHIAZAAgAGEAZAB2AGEAbgBjAGUAOwAgAEYAbwB1AHIALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADUAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABxAHUAYQByAHQAZQByACAAYQBkAHYAYQBuAGMAZQA7ACAAUwBpAHgALQBwAGUAcgAtAGUAbQAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwADYAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbwBuAGUAIABzAGkAeAB0AGgAIABhAGQAdgBhAG4AYwBlADsAIABUAGgAaQBuACAAcwBwAGEAYwBlACAAKABVACsAMgAwADAAOQApADoAIABOAG8AIABwAGEAdABoACAAYQBuAGQAIABvAG4AZQAgAGYAaQBmAHQAaAAgAGEAZAB2AGEAbgBjAGUAOwAgAEgAYQBpAHIAIABzAHAAYQBjAGUAIAAoAFUAKwAyADAAMABBACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG8AbgBlACAAdABlAG4AdABoACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAHMAcABhAGMAZQAgACgAVQArADIAMAAwAEIAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAASQBkAGUAbwBnAHIAYQBwAGgAaQBjACAAcwBwAGEAYwBlACAAKABVACsAMwAwADAAMAApADoAIABOAG8AIABwAGEAdABoACAAYgB1AHQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAWgBlAHIAbwAgAHcAaQBkAHQAaAAgAG4AbwBuAC0AagBvAGkAbgBlAHIAIAAoAFUAKwAyADAAMABDACkAOgAgAE4AbwAgAHAAYQB0AGgAIABhAG4AZAAgAG4AbwAgAGEAZAB2AGEAbgBjAGUAOwAgAFoAZQByAG8AIAB3AGkAZAB0AGgAIABqAG8AaQBuAGUAcgAgACgAVQArADIAMAAwAEQAKQA6ACAATgBvACAAcABhAHQAaAAgAGEAbgBkACAAbgBvACAAYQBkAHYAYQBuAGMAZQA7ACAARwByAGUAZQBrACAAYwBhAHAAaQB0AGEAbAAgAGwAZQB0AHQAZQByACAAQwBoAGkAIAAoAFUAKwAzAEEANwApADoAIABUAGgAaQBuACAAaABvAHIAaQB6AG8AbgB0AGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAImoqACIAIAAoAFUAKwA2AEEAMgBBACkAOgAgAFQAaABpAG4AIABoAG8AcgBpAHoAbwBuAHQAYQBsACAAcwB0AHIAaQBwAGUAIABhAG4AZAAgAGYAdQBsAGwAIABhAGQAdgBhAG4AYwBlADsAIABHAHIAZQBlAGsAIABjAGEAcABpAHQAYQBsACAAbABlAHQAdABlAHIAIABVAHAAcwBpAGwAbwBuACAAKABVACsAMwBBADUAKQA6ACAAVABoAGkAbgAgAHYAZQByAHQAaQBjAGEAbAAgAHMAdAByAGkAcABlACAAYQBuAGQAIABmAHUAbABsACAAYQBkAHYAYQBuAGMAZQA7ACAAIn61ACIAIAAoAFUAKwA3AEUAQgA1ACkAOgAgAFQAaABpAG4AIAB2AGUAcgB0AGkAYwBhAGwAIABzAHQAcgBpAHAAZQAgAGEAbgBkACAAZgB1AGwAbAAgAGEAZAB2AGEAbgBjAGUALgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAGMALgBvAHIAZwBoAHQAdABwADoALwAvAGQAZQB2AC4AdwAzAC4AbwByAGcALwBDAFMAUwAvAGYAbwBuAHQAcwAvAGEAaABlAG0ALwBDAE8AUABZAEkATgBHAAoAQQBoAGUAbQBSAGUAZwB1AGwAYQByAEEAaABlAG0AAAACAAAAAAAA/3sAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAAECAQMAAwAEAAUABgAHAAgACQALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsETlVMTAhnbHlwaDI0MwAA - didFinishLoading -ar diff --git a/LayoutTests/platform/gtk/fast/text/font-weight-fallback-expected.html b/LayoutTests/platform/glib/fast/text/font-weight-fallback-expected.html similarity index 100% rename from LayoutTests/platform/gtk/fast/text/font-weight-fallback-expected.html rename to LayoutTests/platform/glib/fast/text/font-weight-fallback-expected.html diff --git a/LayoutTests/platform/glib/fast/text/in-rendered-text-rtl-expected.png b/LayoutTests/platform/glib/fast/text/in-rendered-text-rtl-expected.png deleted file mode 100644 index 618e9264672b6..0000000000000 Binary files a/LayoutTests/platform/glib/fast/text/in-rendered-text-rtl-expected.png and /dev/null differ diff --git a/LayoutTests/platform/glib/fast/text/midword-break-after-breakable-char-expected.png b/LayoutTests/platform/glib/fast/text/midword-break-after-breakable-char-expected.png deleted file mode 100644 index ba11489be670d..0000000000000 Binary files a/LayoutTests/platform/glib/fast/text/midword-break-after-breakable-char-expected.png and /dev/null differ diff --git a/LayoutTests/platform/gtk/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt b/LayoutTests/platform/glib/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt rename to LayoutTests/platform/glib/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt diff --git a/LayoutTests/platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-expected.txt b/LayoutTests/platform/glib/fast/writing-mode/vertical-lr-replaced-selection-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-expected.txt rename to LayoutTests/platform/glib/fast/writing-mode/vertical-lr-replaced-selection-expected.txt diff --git a/LayoutTests/platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt b/LayoutTests/platform/glib/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt rename to LayoutTests/platform/glib/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt diff --git a/LayoutTests/platform/gtk/fast/writing-mode/vertical-rl-replaced-selection-expected.txt b/LayoutTests/platform/glib/fast/writing-mode/vertical-rl-replaced-selection-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/writing-mode/vertical-rl-replaced-selection-expected.txt rename to LayoutTests/platform/glib/fast/writing-mode/vertical-rl-replaced-selection-expected.txt diff --git a/LayoutTests/platform/gtk/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt b/LayoutTests/platform/glib/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt rename to LayoutTests/platform/glib/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/allowlist-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/allowlist-expected.txt new file mode 100644 index 0000000000000..91619accb06f7 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/allowlist-expected.txt @@ -0,0 +1,7 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderText {#text} at (0,0) size 188x18 + text run at (0,0) width 188: "This should load successfully." diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/basic-filter-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/basic-filter-expected.txt new file mode 100644 index 0000000000000..8168d0b14edc0 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/basic-filter-expected.txt @@ -0,0 +1,26 @@ +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/basic-filter.html from loading a resource from http://localhost:8000/resources/square100.png +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/basic-filter.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?localhost_not_at_end +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/basic-filter.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?ends_with_localhost +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderText {#text} at (0,0) size 197x18 + text run at (0,0) width 197: "The images below should load." + RenderBR {BR} at (197,0) size 0x18 + RenderImage {IMG} at (0,18) size 100x100 + RenderBR {BR} at (100,104) size 0x17 + RenderImage {IMG} at (0,118) size 100x100 + RenderBR {BR} at (100,204) size 0x17 + RenderImage {IMG} at (0,218) size 100x100 + RenderBR {BR} at (100,304) size 0x17 + RenderText {#text} at (0,318) size 239x18 + text run at (0,318) width 239: "The images below should be blocked." + RenderBR {BR} at (239,318) size 0x18 + RenderImage {IMG} at (0,336) size 0x0 + RenderBR {BR} at (0,322) size 0x17 + RenderImage {IMG} at (0,336) size 0x0 + RenderBR {BR} at (0,322) size 0x17 + RenderImage {IMG} at (0,336) size 0x0 + RenderBR {BR} at (0,322) size 0x17 diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/css-display-none-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/css-display-none-expected.txt new file mode 100644 index 0000000000000..c189976695039 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/css-display-none-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x576 + RenderBlock {P} at (0,0) size 784x18 + RenderText {#text} at (0,0) size 169x18 + text run at (0,0) width 169: "This text should be visible." diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/domain-rules-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/domain-rules-expected.txt new file mode 100644 index 0000000000000..310655ae54e98 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/domain-rules-expected.txt @@ -0,0 +1,24 @@ +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/domain-rules.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?should_be_blocked_1 +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/domain-rules.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?should_be_blocked_2 +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/domain-rules.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?should_be_blocked_3 +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderText {#text} at (0,0) size 197x18 + text run at (0,0) width 197: "The images below should load." + RenderBR {BR} at (197,0) size 0x18 + RenderImage {IMG} at (0,18) size 100x100 + RenderBR {BR} at (100,104) size 0x17 + RenderImage {IMG} at (0,118) size 100x100 + RenderBR {BR} at (100,204) size 0x17 + RenderText {#text} at (0,218) size 239x18 + text run at (0,218) width 239: "The images below should be blocked." + RenderBR {BR} at (239,218) size 0x18 + RenderImage {IMG} at (0,236) size 0x0 + RenderBR {BR} at (0,222) size 0x17 + RenderImage {IMG} at (0,236) size 0x0 + RenderBR {BR} at (0,222) size 0x17 + RenderImage {IMG} at (0,236) size 0x0 + RenderBR {BR} at (0,222) size 0x17 diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/filters-with-quantifiers-combined-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/filters-with-quantifiers-combined-expected.txt new file mode 100644 index 0000000000000..6f171730ebffc --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/filters-with-quantifiers-combined-expected.txt @@ -0,0 +1,65 @@ +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?abcabc +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?abccabc +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?defghi +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?defgghi +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?jklmno +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?jkljklmno +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?pqrstv +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?pqrabcstv +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?wxyabc +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?wxydefabc +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?acbwxy +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/filters-with-quantifiers-combined.html from loading a resource from http://localhost:8000/resources/square100.png?abcacbdefabcdjklallowlistwxy +layer at (0,0) size 785x952 + RenderView at (0,0) size 785x600 +layer at (0,0) size 785x952 + RenderBlock {HTML} at (0,0) size 785x952 + RenderBody {BODY} at (8,8) size 769x936 + RenderText {#text} at (0,0) size 197x18 + text run at (0,0) width 197: "The images below should load." + RenderBR {BR} at (197,0) size 0x18 + RenderImage {IMG} at (0,18) size 100x100 + RenderBR {BR} at (100,104) size 0x17 + RenderImage {IMG} at (0,118) size 100x100 + RenderBR {BR} at (100,204) size 0x17 + RenderImage {IMG} at (0,218) size 100x100 + RenderBR {BR} at (100,304) size 0x17 + RenderImage {IMG} at (0,318) size 100x100 + RenderBR {BR} at (100,404) size 0x17 + RenderImage {IMG} at (0,418) size 100x100 + RenderBR {BR} at (100,504) size 0x17 + RenderImage {IMG} at (0,518) size 100x100 + RenderBR {BR} at (100,604) size 0x17 + RenderImage {IMG} at (0,618) size 100x100 + RenderBR {BR} at (100,704) size 0x17 + RenderImage {IMG} at (0,718) size 100x100 + RenderBR {BR} at (100,804) size 0x17 + RenderImage {IMG} at (0,818) size 100x100 + RenderBR {BR} at (100,904) size 0x17 + RenderText {#text} at (0,918) size 239x18 + text run at (0,918) width 239: "The images below should be blocked." + RenderBR {BR} at (239,918) size 0x18 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 + RenderImage {IMG} at (0,936) size 0x0 + RenderBR {BR} at (0,922) size 0x17 diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/media-filtered-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/media-filtered-expected.txt new file mode 100644 index 0000000000000..40d4eb08a7981 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/media-filtered-expected.txt @@ -0,0 +1,13 @@ +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/media-filtered.html from loading a resource from http://localhost:8000/media/resources/test.mp4 +CONSOLE MESSAGE: Video error +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderText {#text} at (0,0) size 234x18 + text run at (0,0) width 234: "The following video should not load." + RenderBR {BR} at (234,0) size 0x18 + RenderText {#text} at (0,0) size 0x0 +layer at (8,26) size 300x150 + RenderVideo {VIDEO} at (0,18) size 300x150 diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/subresource-redirect-blocked-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/subresource-redirect-blocked-expected.txt new file mode 100644 index 0000000000000..43840d382af07 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/subresource-redirect-blocked-expected.txt @@ -0,0 +1,14 @@ +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/subresource-redirect-blocked.html from loading a resource from http://localhost:8000/resources/square128.png +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderText {#text} at (0,0) size 152x18 + text run at (0,0) width 152: "This page has an image." + RenderBR {BR} at (152,0) size 0x18 + RenderText {#text} at (0,18) size 407x18 + text run at (0,18) width 407: "The image load should be blocked by the content extension filter" + RenderBR {BR} at (407,18) size 0x18 + RenderImage {IMG} at (0,36) size 20x20 + RenderText {#text} at (0,0) size 0x0 diff --git a/LayoutTests/platform/glib/http/tests/contentextensions/top-url-expected.txt b/LayoutTests/platform/glib/http/tests/contentextensions/top-url-expected.txt new file mode 100644 index 0000000000000..4c7f0dfd63dd9 --- /dev/null +++ b/LayoutTests/platform/glib/http/tests/contentextensions/top-url-expected.txt @@ -0,0 +1,24 @@ +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/top-url.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?should_be_blocked_1 +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/top-url.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?should_be_blocked_2 +CONSOLE MESSAGE: Content blocker prevented frame displaying http://127.0.0.1:8000/contentextensions/top-url.html from loading a resource from http://127.0.0.1:8000/resources/square100.png?should_be_blocked_3 +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 + RenderText {#text} at (0,0) size 197x18 + text run at (0,0) width 197: "The images below should load." + RenderBR {BR} at (197,0) size 0x18 + RenderImage {IMG} at (0,18) size 100x100 + RenderBR {BR} at (100,104) size 0x17 + RenderImage {IMG} at (0,118) size 100x100 + RenderBR {BR} at (100,204) size 0x17 + RenderText {#text} at (0,218) size 239x18 + text run at (0,218) width 239: "The images below should be blocked." + RenderBR {BR} at (239,218) size 0x18 + RenderImage {IMG} at (0,236) size 0x0 + RenderBR {BR} at (0,222) size 0x17 + RenderImage {IMG} at (0,236) size 0x0 + RenderBR {BR} at (0,222) size 0x17 + RenderImage {IMG} at (0,236) size 0x0 + RenderBR {BR} at (0,222) size 0x17 diff --git a/LayoutTests/platform/gtk/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html b/LayoutTests/platform/glib/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html similarity index 100% rename from LayoutTests/platform/gtk/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html rename to LayoutTests/platform/glib/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html diff --git a/LayoutTests/platform/glib/http/tests/websocket/tests/hybi/invalid-continuation-expected.txt b/LayoutTests/platform/glib/http/tests/websocket/tests/hybi/invalid-continuation-expected.txt deleted file mode 100644 index 55a5c02fbc490..0000000000000 --- a/LayoutTests/platform/glib/http/tests/websocket/tests/hybi/invalid-continuation-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -CONSOLE MESSAGE: Received invalid WebSocket response from the server -Test whether WebSocket aborts the connection when it receives an unexpected continuation frame without any leading text or binary frame. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - -onopen() was called. -onclose() was called. -PASS closeEvent.wasClean is false -PASS successfullyParsed is true - -TEST COMPLETE - diff --git a/LayoutTests/platform/glib/http/tests/websocket/tests/hybi/multiple-set-cookies-expected.txt b/LayoutTests/platform/glib/http/tests/websocket/tests/hybi/multiple-set-cookies-expected.txt deleted file mode 100644 index a3c5802e81e08..0000000000000 --- a/LayoutTests/platform/glib/http/tests/websocket/tests/hybi/multiple-set-cookies-expected.txt +++ /dev/null @@ -1,2 +0,0 @@ -ALERT: a=b; c=d - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve25519.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve25519.https.any-expected.txt deleted file mode 100644 index 86ac5006c6139..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve25519.https.any-expected.txt +++ /dev/null @@ -1,21 +0,0 @@ - -PASS setup - define tests -FAIL X25519 key derivation checks for all-zero value result with a key of order 0 assert_true: Public key should be valid. expected true got false -PASS X25519 key derivation checks for all-zero value result with a key of order 1 -PASS X25519 key derivation checks for all-zero value result with a key of order 8 -PASS X25519 key derivation checks for all-zero value result with a key of order p-1 (order 2) -PASS X25519 key derivation checks for all-zero value result with a key of order p (=0, order 4) -PASS X25519 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1) -PASS X25519 good parameters -PASS X25519 mixed case parameters -PASS X25519 short result -PASS X25519 non-multiple of 8 bits -PASS X25519 missing public property -PASS X25519 public property of algorithm is not a CryptoKey -PASS X25519 mismatched algorithms -PASS X25519 no deriveBits usage for base key -PASS X25519 base key is not a private key -PASS X25519 public property value is a private key -PASS X25519 public property value is a secret key -PASS X25519 asking for too many bits - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve25519.https.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve25519.https.any.worker-expected.txt deleted file mode 100644 index 86ac5006c6139..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve25519.https.any.worker-expected.txt +++ /dev/null @@ -1,21 +0,0 @@ - -PASS setup - define tests -FAIL X25519 key derivation checks for all-zero value result with a key of order 0 assert_true: Public key should be valid. expected true got false -PASS X25519 key derivation checks for all-zero value result with a key of order 1 -PASS X25519 key derivation checks for all-zero value result with a key of order 8 -PASS X25519 key derivation checks for all-zero value result with a key of order p-1 (order 2) -PASS X25519 key derivation checks for all-zero value result with a key of order p (=0, order 4) -PASS X25519 key derivation checks for all-zero value result with a key of order p+1 (=1, order 1) -PASS X25519 good parameters -PASS X25519 mixed case parameters -PASS X25519 short result -PASS X25519 non-multiple of 8 bits -PASS X25519 missing public property -PASS X25519 public property of algorithm is not a CryptoKey -PASS X25519 mismatched algorithms -PASS X25519 no deriveBits usage for base key -PASS X25519 base key is not a private key -PASS X25519 public property value is a private key -PASS X25519 public property value is a secret key -PASS X25519 asking for too many bits - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve25519.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve25519.https.any-expected.txt deleted file mode 100644 index b489a602b8bc7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve25519.https.any-expected.txt +++ /dev/null @@ -1,19 +0,0 @@ - -PASS setup - define tests -FAIL X25519 deriveBits checks for all-zero value result with a key of order 0 assert_false: Public key should be valid. expected false got true -PASS X25519 deriveBits checks for all-zero value result with a key of order 1 -PASS X25519 deriveBits checks for all-zero value result with a key of order 8 -PASS X25519 deriveBits checks for all-zero value result with a key of order p-1 (order 2) -PASS X25519 deriveBits checks for all-zero value result with a key of order p (=0, order 4) -PASS X25519 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1) -PASS Key derivation using a X25519 generated keys. -PASS X25519 good parameters -PASS X25519 mixed case parameters -PASS X25519 missing public property -PASS X25519 public property of algorithm is not a CryptoKey -PASS X25519 mismatched algorithms -PASS X25519 no deriveKey usage for base key -PASS X25519 base key is not a private key -PASS X25519 public property value is a private key -PASS X25519 public property value is a secret key - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve25519.https.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve25519.https.any.worker-expected.txt deleted file mode 100644 index b489a602b8bc7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve25519.https.any.worker-expected.txt +++ /dev/null @@ -1,19 +0,0 @@ - -PASS setup - define tests -FAIL X25519 deriveBits checks for all-zero value result with a key of order 0 assert_false: Public key should be valid. expected false got true -PASS X25519 deriveBits checks for all-zero value result with a key of order 1 -PASS X25519 deriveBits checks for all-zero value result with a key of order 8 -PASS X25519 deriveBits checks for all-zero value result with a key of order p-1 (order 2) -PASS X25519 deriveBits checks for all-zero value result with a key of order p (=0, order 4) -PASS X25519 deriveBits checks for all-zero value result with a key of order p+1 (=1, order 1) -PASS Key derivation using a X25519 generated keys. -PASS X25519 good parameters -PASS X25519 mixed case parameters -PASS X25519 missing public property -PASS X25519 public property of algorithm is not a CryptoKey -PASS X25519 mismatched algorithms -PASS X25519 no deriveKey usage for base key -PASS X25519 base key is not a private key -PASS X25519 public property value is a private key -PASS X25519 public property value is a secret key - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt deleted file mode 100644 index 7ed73a009bb37..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt +++ /dev/null @@ -1,44 +0,0 @@ - -PASS P-521 good parameters -PASS P-521 mixed case parameters -PASS P-521 with null length -PASS P-521 short result -FAIL P-521 non-multiple of 8 bits assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS P-521 missing public curve -PASS P-521 public property of algorithm is not a CryptoKey -PASS P-521 mismatched curves -PASS P-521 public property of algorithm is not an ECDSA public key -PASS P-521 no deriveBits usage for base key -PASS P-521 base key is not a private key -PASS P-521 public property value is a private key -PASS P-521 public property value is a secret key -PASS P-521 asking for too many bits -PASS P-256 good parameters -PASS P-256 mixed case parameters -PASS P-256 with null length -PASS P-256 short result -FAIL P-256 non-multiple of 8 bits assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS P-256 missing public curve -PASS P-256 public property of algorithm is not a CryptoKey -PASS P-256 mismatched curves -PASS P-256 public property of algorithm is not an ECDSA public key -PASS P-256 no deriveBits usage for base key -PASS P-256 base key is not a private key -PASS P-256 public property value is a private key -PASS P-256 public property value is a secret key -PASS P-256 asking for too many bits -PASS P-384 good parameters -PASS P-384 mixed case parameters -PASS P-384 with null length -PASS P-384 short result -FAIL P-384 non-multiple of 8 bits assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS P-384 missing public curve -PASS P-384 public property of algorithm is not a CryptoKey -PASS P-384 mismatched curves -PASS P-384 public property of algorithm is not an ECDSA public key -PASS P-384 no deriveBits usage for base key -PASS P-384 base key is not a private key -PASS P-384 public property value is a private key -PASS P-384 public property value is a secret key -PASS P-384 asking for too many bits - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_5001-6000-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_5001-6000-expected.txt index feb8b64cca2e6..018b242c9292f 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_5001-6000-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_5001-6000-expected.txt @@ -754,69 +754,69 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using long password PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using long password, empty salt, PBKDF2, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using long password, empty salt, PBKDF2, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using long password, empty salt, PBKDF2, with 100000 iterations -FAIL empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-384, with 1 iterations PASS empty password, short salt, SHA-384, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key @@ -824,69 +824,69 @@ PASS empty password, short salt, SHA-384, with 1 iterations with non-multiple of PASS empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS empty password, short salt, SHA-384, with 1 iterations with missing deriveBits usage PASS empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-384, with 1000 iterations PASS empty password, short salt, SHA-384, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key @@ -894,69 +894,69 @@ PASS empty password, short salt, SHA-384, with 1000 iterations with non-multiple PASS empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS empty password, short salt, SHA-384, with 1000 iterations with missing deriveBits usage PASS empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-384, with 100000 iterations PASS empty password, short salt, SHA-384, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key @@ -981,23 +981,23 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty passwor PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 0 iterations -FAIL empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-512, with 1 iterations PASS empty password, short salt, SHA-512, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_6001-7000-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_6001-7000-expected.txt deleted file mode 100644 index a413d43e74ac5..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_6001-7000-expected.txt +++ /dev/null @@ -1,1003 +0,0 @@ - -PASS setup - define tests -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 1 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS empty password, short salt, SHA-512, with 1 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-512, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 1000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS empty password, short salt, SHA-512, with 1000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-512, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 100000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS empty password, short salt, SHA-512, with 100000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 0 iterations -FAIL empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-1, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 1 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS empty password, short salt, SHA-1, with 1 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-1, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 1000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS empty password, short salt, SHA-1, with 1000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-1, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 100000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS empty password, short salt, SHA-1, with 100000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 0 iterations -FAIL empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-256, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 1 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS empty password, short salt, SHA-256, with 1 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-256, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 1000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS empty password, short salt, SHA-256, with 1000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-256, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 100000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS empty password, short salt, SHA-256, with 100000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS empty password, short salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS empty password, short salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS empty password, short salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -FAIL empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-384, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 1 iterations with non-multiple of 8 length -PASS empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS empty password, long salt, SHA-384, with 1 iterations with missing deriveBits usage -PASS empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-384, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 1000 iterations with non-multiple of 8 length -PASS empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS empty password, long salt, SHA-384, with 1000 iterations with missing deriveBits usage -PASS empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-384, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 100000 iterations with non-multiple of 8 length -PASS empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS empty password, long salt, SHA-384, with 100000 iterations with missing deriveBits usage -PASS empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 0 iterations -FAIL empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-512, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_7001-8000-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_7001-8000-expected.txt index 17b69fcc00e77..8e577aaea6746 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_7001-8000-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker_7001-8000-expected.txt @@ -2,7 +2,7 @@ PASS setup - define tests PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key @@ -10,69 +10,69 @@ PASS empty password, long salt, SHA-512, with 1 iterations with non-multiple of PASS empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS empty password, long salt, SHA-512, with 1 iterations with missing deriveBits usage PASS empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-512, with 1000 iterations PASS empty password, long salt, SHA-512, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key @@ -80,69 +80,69 @@ PASS empty password, long salt, SHA-512, with 1000 iterations with non-multiple PASS empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS empty password, long salt, SHA-512, with 1000 iterations with missing deriveBits usage PASS empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-512, with 100000 iterations PASS empty password, long salt, SHA-512, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key @@ -167,69 +167,69 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty passwor PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 0 iterations -FAIL empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-1, with 1 iterations PASS empty password, long salt, SHA-1, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key @@ -237,69 +237,69 @@ PASS empty password, long salt, SHA-1, with 1 iterations with non-multiple of 8 PASS empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS empty password, long salt, SHA-1, with 1 iterations with missing deriveBits usage PASS empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-1, with 1000 iterations PASS empty password, long salt, SHA-1, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key @@ -307,69 +307,69 @@ PASS empty password, long salt, SHA-1, with 1000 iterations with non-multiple of PASS empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS empty password, long salt, SHA-1, with 1000 iterations with missing deriveBits usage PASS empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-1, with 100000 iterations PASS empty password, long salt, SHA-1, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key @@ -394,69 +394,69 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty passwor PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 0 iterations -FAIL empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-256, with 1 iterations PASS empty password, long salt, SHA-256, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key @@ -464,69 +464,69 @@ PASS empty password, long salt, SHA-256, with 1 iterations with non-multiple of PASS empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS empty password, long salt, SHA-256, with 1 iterations with missing deriveBits usage PASS empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-256, with 1000 iterations PASS empty password, long salt, SHA-256, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key @@ -534,69 +534,69 @@ PASS empty password, long salt, SHA-256, with 1000 iterations with non-multiple PASS empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS empty password, long salt, SHA-256, with 1000 iterations with missing deriveBits usage PASS empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-256, with 100000 iterations PASS empty password, long salt, SHA-256, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_5001-6000-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_5001-6000-expected.txt index feb8b64cca2e6..018b242c9292f 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_5001-6000-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_5001-6000-expected.txt @@ -754,69 +754,69 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using long password PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using long password, empty salt, PBKDF2, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using long password, empty salt, PBKDF2, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using long password, empty salt, PBKDF2, with 100000 iterations -FAIL empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-384, with 1 iterations PASS empty password, short salt, SHA-384, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key @@ -824,69 +824,69 @@ PASS empty password, short salt, SHA-384, with 1 iterations with non-multiple of PASS empty password, short salt, SHA-384, with 1 iterations with bad hash name SHA384 PASS empty password, short salt, SHA-384, with 1 iterations with missing deriveBits usage PASS empty password, short salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-384, with 1000 iterations PASS empty password, short salt, SHA-384, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key @@ -894,69 +894,69 @@ PASS empty password, short salt, SHA-384, with 1000 iterations with non-multiple PASS empty password, short salt, SHA-384, with 1000 iterations with bad hash name SHA384 PASS empty password, short salt, SHA-384, with 1000 iterations with missing deriveBits usage PASS empty password, short salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-384, with 100000 iterations PASS empty password, short salt, SHA-384, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with bad hash name SHA384 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 100000 iterations with wrong (ECDH) key @@ -981,23 +981,23 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty passwor PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-384, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-384, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-384, with 0 iterations -FAIL empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, short salt, SHA-512, with 1 iterations PASS empty password, short salt, SHA-512, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_6001-7000-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_6001-7000-expected.txt deleted file mode 100644 index a413d43e74ac5..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_6001-7000-expected.txt +++ /dev/null @@ -1,1003 +0,0 @@ - -PASS setup - define tests -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 1 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS empty password, short salt, SHA-512, with 1 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-512, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 1000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-512, with 1000 iterations with bad hash name SHA512 -PASS empty password, short salt, SHA-512, with 1000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-512, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 100000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-512, with 100000 iterations with bad hash name SHA512 -PASS empty password, short salt, SHA-512, with 100000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-512, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-512, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-512, with 0 iterations -FAIL empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-1, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 1 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-1, with 1 iterations with bad hash name SHA1 -PASS empty password, short salt, SHA-1, with 1 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-1, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 1000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-1, with 1000 iterations with bad hash name SHA1 -PASS empty password, short salt, SHA-1, with 1000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-1, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 100000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-1, with 100000 iterations with bad hash name SHA1 -PASS empty password, short salt, SHA-1, with 100000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-1, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-1, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-1, with 0 iterations -FAIL empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-256, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 1 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-256, with 1 iterations with bad hash name SHA256 -PASS empty password, short salt, SHA-256, with 1 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-256, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 1000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-256, with 1000 iterations with bad hash name SHA256 -PASS empty password, short salt, SHA-256, with 1000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, short salt, SHA-256, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 100000 iterations with non-multiple of 8 length -PASS empty password, short salt, SHA-256, with 100000 iterations with bad hash name SHA256 -PASS empty password, short salt, SHA-256, with 100000 iterations with missing deriveBits usage -PASS empty password, short salt, SHA-256, with 100000 iterations with wrong (ECDH) key -PASS empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, SHA-256, with 0 iterations -PASS empty password, short salt, PBKDF2, with 1 iterations with non-digest algorithm PBKDF2 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, PBKDF2, with 1 iterations -PASS empty password, short salt, PBKDF2, with 1000 iterations with non-digest algorithm PBKDF2 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, PBKDF2, with 1000 iterations -PASS empty password, short salt, PBKDF2, with 100000 iterations with non-digest algorithm PBKDF2 -PASS Derived key of type name: AES-CBC length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, short salt, PBKDF2, with 100000 iterations -FAIL empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-384, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 1 iterations with non-multiple of 8 length -PASS empty password, long salt, SHA-384, with 1 iterations with bad hash name SHA384 -PASS empty password, long salt, SHA-384, with 1 iterations with missing deriveBits usage -PASS empty password, long salt, SHA-384, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-384, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 1000 iterations with non-multiple of 8 length -PASS empty password, long salt, SHA-384, with 1000 iterations with bad hash name SHA384 -PASS empty password, long salt, SHA-384, with 1000 iterations with missing deriveBits usage -PASS empty password, long salt, SHA-384, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-384, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 100000 iterations with non-multiple of 8 length -PASS empty password, long salt, SHA-384, with 100000 iterations with bad hash name SHA384 -PASS empty password, long salt, SHA-384, with 100000 iterations with missing deriveBits usage -PASS empty password, long salt, SHA-384, with 100000 iterations with wrong (ECDH) key -PASS empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-384, with 0 iterations -PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-384, with 0 iterations -FAIL empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS empty password, long salt, SHA-512, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage -PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code -PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_7001-8000-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_7001-8000-expected.txt index 17b69fcc00e77..8e577aaea6746 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_7001-8000-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any_7001-8000-expected.txt @@ -2,7 +2,7 @@ PASS setup - define tests PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key @@ -10,69 +10,69 @@ PASS empty password, long salt, SHA-512, with 1 iterations with non-multiple of PASS empty password, long salt, SHA-512, with 1 iterations with bad hash name SHA512 PASS empty password, long salt, SHA-512, with 1 iterations with missing deriveBits usage PASS empty password, long salt, SHA-512, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-512, with 1000 iterations PASS empty password, long salt, SHA-512, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key @@ -80,69 +80,69 @@ PASS empty password, long salt, SHA-512, with 1000 iterations with non-multiple PASS empty password, long salt, SHA-512, with 1000 iterations with bad hash name SHA512 PASS empty password, long salt, SHA-512, with 1000 iterations with missing deriveBits usage PASS empty password, long salt, SHA-512, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-512, with 100000 iterations PASS empty password, long salt, SHA-512, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with bad hash name SHA512 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 100000 iterations with wrong (ECDH) key @@ -167,69 +167,69 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty passwor PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-512, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-512, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-512, with 0 iterations -FAIL empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-1, with 1 iterations PASS empty password, long salt, SHA-1, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key @@ -237,69 +237,69 @@ PASS empty password, long salt, SHA-1, with 1 iterations with non-multiple of 8 PASS empty password, long salt, SHA-1, with 1 iterations with bad hash name SHA1 PASS empty password, long salt, SHA-1, with 1 iterations with missing deriveBits usage PASS empty password, long salt, SHA-1, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-1, with 1000 iterations PASS empty password, long salt, SHA-1, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key @@ -307,69 +307,69 @@ PASS empty password, long salt, SHA-1, with 1000 iterations with non-multiple of PASS empty password, long salt, SHA-1, with 1000 iterations with bad hash name SHA1 PASS empty password, long salt, SHA-1, with 1000 iterations with missing deriveBits usage PASS empty password, long salt, SHA-1, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-1, with 100000 iterations PASS empty password, long salt, SHA-1, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with bad hash name SHA1 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 100000 iterations with wrong (ECDH) key @@ -394,69 +394,69 @@ PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty passwor PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-1, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-1, with 0 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-1, with 0 iterations -FAIL empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-256, with 1 iterations PASS empty password, long salt, SHA-256, with 1 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key @@ -464,69 +464,69 @@ PASS empty password, long salt, SHA-256, with 1 iterations with non-multiple of PASS empty password, long salt, SHA-256, with 1 iterations with bad hash name SHA256 PASS empty password, long salt, SHA-256, with 1 iterations with missing deriveBits usage PASS empty password, long salt, SHA-256, with 1 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-256, with 1000 iterations PASS empty password, long salt, SHA-256, with 1000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key @@ -534,69 +534,69 @@ PASS empty password, long salt, SHA-256, with 1000 iterations with non-multiple PASS empty password, long salt, SHA-256, with 1000 iterations with bad hash name SHA256 PASS empty password, long salt, SHA-256, with 1000 iterations with missing deriveBits usage PASS empty password, long salt, SHA-256, with 1000 iterations with wrong (ECDH) key -FAIL empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveBits failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS empty password, long salt, SHA-256, with 100000 iterations PASS empty password, long salt, SHA-256, with 100000 iterations with 0 length -FAIL Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CBC length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-CTR length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-GCM length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 128 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 192 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: AES-KW length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-1 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-256 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-384 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key -FAIL Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations assert_unreached: deriveKey failed with error OperationError: The operation failed for an operation-specific reason Reached unreachable code +PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with bad hash name SHA256 PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with missing deriveKey usage PASS Derived key of type name: HMAC hash: SHA-512 length: 256 using empty password, long salt, SHA-256, with 100000 iterations with wrong (ECDH) key diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker-expected.txt deleted file mode 100644 index 135e277c8d300..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker-expected.txt +++ /dev/null @@ -1,44 +0,0 @@ - -PASS AES-CBC 128-bit key -PASS AES-CBC 192-bit key -PASS AES-CBC 256-bit key -PASS AES-CBC 128-bit key with altered plaintext -PASS AES-CBC 192-bit key with altered plaintext -PASS AES-CBC 256-bit key with altered plaintext -PASS AES-CBC 128-bit key decryption -PASS AES-CBC 192-bit key decryption -PASS AES-CBC 256-bit key decryption -PASS AES-CBC 128-bit key decryption with altered ciphertext -PASS AES-CBC 192-bit key decryption with altered ciphertext -PASS AES-CBC 256-bit key decryption with altered ciphertext -PASS AES-CBC 128-bit key without encrypt usage -PASS AES-CBC 192-bit key without encrypt usage -PASS AES-CBC 256-bit key without encrypt usage -PASS AES-CBC 128-bit key with mismatched key and algorithm -PASS AES-CBC 192-bit key with mismatched key and algorithm -PASS AES-CBC 256-bit key with mismatched key and algorithm -PASS AES-CBC 128-bit key without decrypt usage -PASS AES-CBC 192-bit key without decrypt usage -PASS AES-CBC 256-bit key without decrypt usage -PASS AES-CBC 128-bit key, 64-bit IV -PASS AES-CBC 128-bit key, 192-bit IV -PASS AES-CBC 192-bit key, 64-bit IV -PASS AES-CBC 192-bit key, 192-bit IV -PASS AES-CBC 256-bit key, 64-bit IV -PASS AES-CBC 256-bit key, 192-bit IV -PASS AES-CBC 128-bit key, 64-bit IV decryption -PASS AES-CBC 128-bit key, 192-bit IV decryption -PASS AES-CBC 192-bit key, 64-bit IV decryption -PASS AES-CBC 192-bit key, 192-bit IV decryption -PASS AES-CBC 256-bit key, 64-bit IV decryption -PASS AES-CBC 256-bit key, 192-bit IV decryption -PASS AES-CBC 128-bit key, zeroPadChar -PASS AES-CBC 128-bit key, bigPadChar -PASS AES-CBC 128-bit key, inconsistentPadChars -PASS AES-CBC 192-bit key, zeroPadChar -PASS AES-CBC 192-bit key, bigPadChar -PASS AES-CBC 192-bit key, inconsistentPadChars -PASS AES-CBC 256-bit key, zeroPadChar -PASS AES-CBC 256-bit key, bigPadChar -PASS AES-CBC 256-bit key, inconsistentPadChars - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker-expected.txt deleted file mode 100644 index 135e277c8d300..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_cbc.worker-expected.txt +++ /dev/null @@ -1,44 +0,0 @@ - -PASS AES-CBC 128-bit key -PASS AES-CBC 192-bit key -PASS AES-CBC 256-bit key -PASS AES-CBC 128-bit key with altered plaintext -PASS AES-CBC 192-bit key with altered plaintext -PASS AES-CBC 256-bit key with altered plaintext -PASS AES-CBC 128-bit key decryption -PASS AES-CBC 192-bit key decryption -PASS AES-CBC 256-bit key decryption -PASS AES-CBC 128-bit key decryption with altered ciphertext -PASS AES-CBC 192-bit key decryption with altered ciphertext -PASS AES-CBC 256-bit key decryption with altered ciphertext -PASS AES-CBC 128-bit key without encrypt usage -PASS AES-CBC 192-bit key without encrypt usage -PASS AES-CBC 256-bit key without encrypt usage -PASS AES-CBC 128-bit key with mismatched key and algorithm -PASS AES-CBC 192-bit key with mismatched key and algorithm -PASS AES-CBC 256-bit key with mismatched key and algorithm -PASS AES-CBC 128-bit key without decrypt usage -PASS AES-CBC 192-bit key without decrypt usage -PASS AES-CBC 256-bit key without decrypt usage -PASS AES-CBC 128-bit key, 64-bit IV -PASS AES-CBC 128-bit key, 192-bit IV -PASS AES-CBC 192-bit key, 64-bit IV -PASS AES-CBC 192-bit key, 192-bit IV -PASS AES-CBC 256-bit key, 64-bit IV -PASS AES-CBC 256-bit key, 192-bit IV -PASS AES-CBC 128-bit key, 64-bit IV decryption -PASS AES-CBC 128-bit key, 192-bit IV decryption -PASS AES-CBC 192-bit key, 64-bit IV decryption -PASS AES-CBC 192-bit key, 192-bit IV decryption -PASS AES-CBC 256-bit key, 64-bit IV decryption -PASS AES-CBC 256-bit key, 192-bit IV decryption -PASS AES-CBC 128-bit key, zeroPadChar -PASS AES-CBC 128-bit key, bigPadChar -PASS AES-CBC 128-bit key, inconsistentPadChars -PASS AES-CBC 192-bit key, zeroPadChar -PASS AES-CBC 192-bit key, bigPadChar -PASS AES-CBC 192-bit key, inconsistentPadChars -PASS AES-CBC 256-bit key, zeroPadChar -PASS AES-CBC 256-bit key, bigPadChar -PASS AES-CBC 256-bit key, inconsistentPadChars - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https-expected.txt deleted file mode 100644 index a7616ecbdd6db..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https-expected.txt +++ /dev/null @@ -1,46 +0,0 @@ -encrypt Tests for AES-CBC - - -PASS AES-CBC 128-bit key -PASS AES-CBC 192-bit key -PASS AES-CBC 256-bit key -PASS AES-CBC 128-bit key with altered plaintext -PASS AES-CBC 192-bit key with altered plaintext -PASS AES-CBC 256-bit key with altered plaintext -PASS AES-CBC 128-bit key decryption -PASS AES-CBC 192-bit key decryption -PASS AES-CBC 256-bit key decryption -PASS AES-CBC 128-bit key decryption with altered ciphertext -PASS AES-CBC 192-bit key decryption with altered ciphertext -PASS AES-CBC 256-bit key decryption with altered ciphertext -PASS AES-CBC 128-bit key without encrypt usage -PASS AES-CBC 192-bit key without encrypt usage -PASS AES-CBC 256-bit key without encrypt usage -PASS AES-CBC 128-bit key with mismatched key and algorithm -PASS AES-CBC 192-bit key with mismatched key and algorithm -PASS AES-CBC 256-bit key with mismatched key and algorithm -PASS AES-CBC 128-bit key without decrypt usage -PASS AES-CBC 192-bit key without decrypt usage -PASS AES-CBC 256-bit key without decrypt usage -PASS AES-CBC 128-bit key, 64-bit IV -PASS AES-CBC 128-bit key, 192-bit IV -PASS AES-CBC 192-bit key, 64-bit IV -PASS AES-CBC 192-bit key, 192-bit IV -PASS AES-CBC 256-bit key, 64-bit IV -PASS AES-CBC 256-bit key, 192-bit IV -PASS AES-CBC 128-bit key, 64-bit IV decryption -PASS AES-CBC 128-bit key, 192-bit IV decryption -PASS AES-CBC 192-bit key, 64-bit IV decryption -PASS AES-CBC 192-bit key, 192-bit IV decryption -PASS AES-CBC 256-bit key, 64-bit IV decryption -PASS AES-CBC 256-bit key, 192-bit IV decryption -PASS AES-CBC 128-bit key, zeroPadChar -PASS AES-CBC 128-bit key, bigPadChar -PASS AES-CBC 128-bit key, inconsistentPadChars -PASS AES-CBC 192-bit key, zeroPadChar -PASS AES-CBC 192-bit key, bigPadChar -PASS AES-CBC 192-bit key, inconsistentPadChars -PASS AES-CBC 256-bit key, zeroPadChar -PASS AES-CBC 256-bit key, bigPadChar -PASS AES-CBC 256-bit key, inconsistentPadChars - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt index b95f2d06e0766..878c9a5ff3111 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt @@ -323,6 +323,42 @@ PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, s PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, false, [decrypt]) +PASS Empty algorithm: generateKey({}, true, [decrypt]) +PASS Empty algorithm: generateKey({}, RED, [decrypt]) +PASS Empty algorithm: generateKey({}, 7, [decrypt]) +PASS Empty algorithm: generateKey({}, false, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, true, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, RED, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, 7, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, false, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, true, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, false, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, true, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, false, [sign]) +PASS Empty algorithm: generateKey({}, true, [sign]) +PASS Empty algorithm: generateKey({}, RED, [sign]) +PASS Empty algorithm: generateKey({}, 7, [sign]) +PASS Empty algorithm: generateKey({}, false, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, true, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, false, [deriveBits]) +PASS Empty algorithm: generateKey({}, true, [deriveBits]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits]) +PASS Empty algorithm: generateKey({}, false, []) +PASS Empty algorithm: generateKey({}, true, []) +PASS Empty algorithm: generateKey({}, RED, []) +PASS Empty algorithm: generateKey({}, 7, []) +PASS Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt index b95f2d06e0766..878c9a5ff3111 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt @@ -323,6 +323,42 @@ PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, s PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, false, [decrypt]) +PASS Empty algorithm: generateKey({}, true, [decrypt]) +PASS Empty algorithm: generateKey({}, RED, [decrypt]) +PASS Empty algorithm: generateKey({}, 7, [decrypt]) +PASS Empty algorithm: generateKey({}, false, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, true, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, RED, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, 7, [sign, decrypt]) +PASS Empty algorithm: generateKey({}, false, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, true, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign, decrypt]) +PASS Empty algorithm: generateKey({}, false, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, true, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits, decrypt]) +PASS Empty algorithm: generateKey({}, false, [sign]) +PASS Empty algorithm: generateKey({}, true, [sign]) +PASS Empty algorithm: generateKey({}, RED, [sign]) +PASS Empty algorithm: generateKey({}, 7, [sign]) +PASS Empty algorithm: generateKey({}, false, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, true, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign]) +PASS Empty algorithm: generateKey({}, false, [deriveBits]) +PASS Empty algorithm: generateKey({}, true, [deriveBits]) +PASS Empty algorithm: generateKey({}, RED, [deriveBits]) +PASS Empty algorithm: generateKey({}, 7, [deriveBits]) +PASS Empty algorithm: generateKey({}, false, []) +PASS Empty algorithm: generateKey({}, true, []) +PASS Empty algorithm: generateKey({}, RED, []) +PASS Empty algorithm: generateKey({}, 7, []) +PASS Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) +PASS Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt deleted file mode 100644 index d6d04e115fec8..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.https.worker-expected.txt +++ /dev/null @@ -1,74 +0,0 @@ - -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) -PASS Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt deleted file mode 100644 index 22d385528b367..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_ECDSA.https.worker-expected.txt +++ /dev/null @@ -1,56 +0,0 @@ - -PASS Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [verify, sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [verify, sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [verify, sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [verify, sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [verify, sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [verify, sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [verify, sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [verify, sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [verify, sign]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [verify, sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [verify, sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [verify, sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [verify, sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [verify, sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [verify, sign]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt deleted file mode 100644 index 5e45f60090e90..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.any-expected.txt +++ /dev/null @@ -1,158 +0,0 @@ - -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt deleted file mode 100644 index 5e45f60090e90..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-OAEP.https.worker-expected.txt +++ /dev/null @@ -1,158 +0,0 @@ - -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt deleted file mode 100644 index eb52405d2fe0b..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt deleted file mode 100644 index eb52405d2fe0b..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.any.worker-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt deleted file mode 100644 index eb52405d2fe0b..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_RSA-PSS.https.worker-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/idlharness.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/idlharness.https.worker-expected.txt deleted file mode 100644 index 5f0cb00dc4bd7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/idlharness.https.worker-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x579 - RenderBlock {PRE} at (0,0) size 784x15 - RenderText {#text} at (0,0) size 312x15 - text run at (0,0) width 312: "{\"error\": {\"message\": \"\", \"code\": 404}}" diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker-expected.txt deleted file mode 100644 index 1426990bd7a42..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x41 - RenderBlock {HTML} at (0,0) size 800x41 - RenderBody {BODY} at (8,13) size 784x15 - RenderBlock {PRE} at (0,0) size 784x15 - RenderText {#text} at (0,0) size 336x15 - text run at (0,0) width 336: "{\"error\": {\"code\": 404, \"message\": \"404\"}}" diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker-expected.txt deleted file mode 100644 index bd8a5404bf531..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker-expected.txt +++ /dev/null @@ -1,482 +0,0 @@ - -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_ec_importKey.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_ec_importKey.https-expected.txt deleted file mode 100644 index 10e400543599d..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_ec_importKey.https-expected.txt +++ /dev/null @@ -1,74 +0,0 @@ - -PASS Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, []) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, true, []) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, true, [sign]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, true, [sign]) -PASS Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, false, []) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-256}, false, []) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDSA, namedCurve: P-256}, false, [sign]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-256}, false, [sign]) -PASS Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, true, []) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, true, []) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, true, [sign]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, true, [sign]) -PASS Good parameters: P-384 bits (spki, buffer(120), {name: ECDSA, namedCurve: P-384}, false, []) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-384}, false, []) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDSA, namedCurve: P-384}, false, [sign]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-384}, false, [sign]) -PASS Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, []) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, []) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign]) -PASS Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, []) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, false, []) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign]) -PASS Good parameters: P-256 bits (spki, buffer(91), {name: ECDH, namedCurve: P-256}, true, []) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-256}, true, []) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveKey]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveKey]) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, true, [deriveBits]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, true, [deriveBits]) -PASS Good parameters: P-256 bits (spki, buffer(91), {name: ECDH, namedCurve: P-256}, false, []) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-256}, false, []) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveKey]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveKey]) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) -PASS Good parameters: P-256 bits (pkcs8, buffer(138), {name: ECDH, namedCurve: P-256}, false, [deriveBits]) -PASS Good parameters: P-256 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-256}, false, [deriveBits]) -PASS Good parameters: P-384 bits (spki, buffer(120), {name: ECDH, namedCurve: P-384}, true, []) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-384}, true, []) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveKey]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveKey]) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, true, [deriveBits]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, true, [deriveBits]) -PASS Good parameters: P-384 bits (spki, buffer(120), {name: ECDH, namedCurve: P-384}, false, []) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-384}, false, []) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveKey]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveKey]) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) -PASS Good parameters: P-384 bits (pkcs8, buffer(185), {name: ECDH, namedCurve: P-384}, false, [deriveBits]) -PASS Good parameters: P-384 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-384}, false, [deriveBits]) -PASS Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, true, []) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, []) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey]) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits]) -PASS Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, false, []) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, false, []) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey]) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) -PASS Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits]) -PASS Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https-expected.txt deleted file mode 100644 index bd8a5404bf531..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.https-expected.txt +++ /dev/null @@ -1,482 +0,0 @@ - -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.worker-expected.txt deleted file mode 100644 index 00230fd58d384..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.https.worker-expected.txt +++ /dev/null @@ -1,170 +0,0 @@ - -PASS ECDSA P-256 with SHA-1 verification -PASS ECDSA P-256 with SHA-256 verification -PASS ECDSA P-256 with SHA-384 verification -PASS ECDSA P-256 with SHA-512 verification -PASS ECDSA P-384 with SHA-1 verification -PASS ECDSA P-384 with SHA-256 verification -PASS ECDSA P-384 with SHA-384 verification -PASS ECDSA P-384 with SHA-512 verification -PASS ECDSA P-521 with SHA-1 verification -PASS ECDSA P-521 with SHA-256 verification -PASS ECDSA P-521 with SHA-384 verification -PASS ECDSA P-521 with SHA-512 verification -PASS ECDSA P-256 with SHA-1 verification with altered signature after call -PASS ECDSA P-256 with SHA-256 verification with altered signature after call -PASS ECDSA P-256 with SHA-384 verification with altered signature after call -PASS ECDSA P-256 with SHA-512 verification with altered signature after call -PASS ECDSA P-384 with SHA-1 verification with altered signature after call -PASS ECDSA P-384 with SHA-256 verification with altered signature after call -PASS ECDSA P-384 with SHA-384 verification with altered signature after call -PASS ECDSA P-384 with SHA-512 verification with altered signature after call -PASS ECDSA P-521 with SHA-1 verification with altered signature after call -PASS ECDSA P-521 with SHA-256 verification with altered signature after call -PASS ECDSA P-521 with SHA-384 verification with altered signature after call -PASS ECDSA P-521 with SHA-512 verification with altered signature after call -PASS ECDSA P-256 with SHA-1 with altered plaintext after call -PASS ECDSA P-256 with SHA-256 with altered plaintext after call -PASS ECDSA P-256 with SHA-384 with altered plaintext after call -PASS ECDSA P-256 with SHA-512 with altered plaintext after call -PASS ECDSA P-384 with SHA-1 with altered plaintext after call -PASS ECDSA P-384 with SHA-256 with altered plaintext after call -PASS ECDSA P-384 with SHA-384 with altered plaintext after call -PASS ECDSA P-384 with SHA-512 with altered plaintext after call -PASS ECDSA P-521 with SHA-1 with altered plaintext after call -PASS ECDSA P-521 with SHA-256 with altered plaintext after call -PASS ECDSA P-521 with SHA-384 with altered plaintext after call -PASS ECDSA P-521 with SHA-512 with altered plaintext after call -PASS ECDSA P-256 with SHA-1 using privateKey to verify -PASS ECDSA P-256 with SHA-256 using privateKey to verify -PASS ECDSA P-256 with SHA-384 using privateKey to verify -PASS ECDSA P-256 with SHA-512 using privateKey to verify -PASS ECDSA P-384 with SHA-1 using privateKey to verify -PASS ECDSA P-384 with SHA-256 using privateKey to verify -PASS ECDSA P-384 with SHA-384 using privateKey to verify -PASS ECDSA P-384 with SHA-512 using privateKey to verify -PASS ECDSA P-521 with SHA-1 using privateKey to verify -PASS ECDSA P-521 with SHA-256 using privateKey to verify -PASS ECDSA P-521 with SHA-384 using privateKey to verify -PASS ECDSA P-521 with SHA-512 using privateKey to verify -PASS ECDSA P-256 with SHA-1 using publicKey to sign -PASS ECDSA P-256 with SHA-256 using publicKey to sign -PASS ECDSA P-256 with SHA-384 using publicKey to sign -PASS ECDSA P-256 with SHA-512 using publicKey to sign -PASS ECDSA P-384 with SHA-1 using publicKey to sign -PASS ECDSA P-384 with SHA-256 using publicKey to sign -PASS ECDSA P-384 with SHA-384 using publicKey to sign -PASS ECDSA P-384 with SHA-512 using publicKey to sign -PASS ECDSA P-521 with SHA-1 using publicKey to sign -PASS ECDSA P-521 with SHA-256 using publicKey to sign -PASS ECDSA P-521 with SHA-384 using publicKey to sign -PASS ECDSA P-521 with SHA-512 using publicKey to sign -PASS ECDSA P-256 with SHA-1 no verify usage -PASS ECDSA P-256 with SHA-256 no verify usage -PASS ECDSA P-256 with SHA-384 no verify usage -PASS ECDSA P-256 with SHA-512 no verify usage -PASS ECDSA P-384 with SHA-1 no verify usage -PASS ECDSA P-384 with SHA-256 no verify usage -PASS ECDSA P-384 with SHA-384 no verify usage -PASS ECDSA P-384 with SHA-512 no verify usage -PASS ECDSA P-521 with SHA-1 no verify usage -PASS ECDSA P-521 with SHA-256 no verify usage -PASS ECDSA P-521 with SHA-384 no verify usage -PASS ECDSA P-521 with SHA-512 no verify usage -PASS ECDSA P-256 with SHA-1 round trip -PASS ECDSA P-256 with SHA-256 round trip -PASS ECDSA P-256 with SHA-384 round trip -PASS ECDSA P-256 with SHA-512 round trip -PASS ECDSA P-384 with SHA-1 round trip -PASS ECDSA P-384 with SHA-256 round trip -PASS ECDSA P-384 with SHA-384 round trip -PASS ECDSA P-384 with SHA-512 round trip -PASS ECDSA P-521 with SHA-1 round trip -PASS ECDSA P-521 with SHA-256 round trip -PASS ECDSA P-521 with SHA-384 round trip -PASS ECDSA P-521 with SHA-512 round trip -PASS ECDSA P-256 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-1 verification failure due to altered signature -PASS ECDSA P-256 with SHA-256 verification failure due to altered signature -PASS ECDSA P-256 with SHA-384 verification failure due to altered signature -PASS ECDSA P-256 with SHA-512 verification failure due to altered signature -PASS ECDSA P-384 with SHA-1 verification failure due to altered signature -PASS ECDSA P-384 with SHA-256 verification failure due to altered signature -PASS ECDSA P-384 with SHA-384 verification failure due to altered signature -PASS ECDSA P-384 with SHA-512 verification failure due to altered signature -PASS ECDSA P-521 with SHA-1 verification failure due to altered signature -PASS ECDSA P-521 with SHA-256 verification failure due to altered signature -PASS ECDSA P-521 with SHA-384 verification failure due to altered signature -PASS ECDSA P-521 with SHA-512 verification failure due to altered signature -PASS ECDSA P-256 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-512 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-512 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-512 verification failure due to altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker-expected.txt deleted file mode 100644 index 00230fd58d384..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker-expected.txt +++ /dev/null @@ -1,170 +0,0 @@ - -PASS ECDSA P-256 with SHA-1 verification -PASS ECDSA P-256 with SHA-256 verification -PASS ECDSA P-256 with SHA-384 verification -PASS ECDSA P-256 with SHA-512 verification -PASS ECDSA P-384 with SHA-1 verification -PASS ECDSA P-384 with SHA-256 verification -PASS ECDSA P-384 with SHA-384 verification -PASS ECDSA P-384 with SHA-512 verification -PASS ECDSA P-521 with SHA-1 verification -PASS ECDSA P-521 with SHA-256 verification -PASS ECDSA P-521 with SHA-384 verification -PASS ECDSA P-521 with SHA-512 verification -PASS ECDSA P-256 with SHA-1 verification with altered signature after call -PASS ECDSA P-256 with SHA-256 verification with altered signature after call -PASS ECDSA P-256 with SHA-384 verification with altered signature after call -PASS ECDSA P-256 with SHA-512 verification with altered signature after call -PASS ECDSA P-384 with SHA-1 verification with altered signature after call -PASS ECDSA P-384 with SHA-256 verification with altered signature after call -PASS ECDSA P-384 with SHA-384 verification with altered signature after call -PASS ECDSA P-384 with SHA-512 verification with altered signature after call -PASS ECDSA P-521 with SHA-1 verification with altered signature after call -PASS ECDSA P-521 with SHA-256 verification with altered signature after call -PASS ECDSA P-521 with SHA-384 verification with altered signature after call -PASS ECDSA P-521 with SHA-512 verification with altered signature after call -PASS ECDSA P-256 with SHA-1 with altered plaintext after call -PASS ECDSA P-256 with SHA-256 with altered plaintext after call -PASS ECDSA P-256 with SHA-384 with altered plaintext after call -PASS ECDSA P-256 with SHA-512 with altered plaintext after call -PASS ECDSA P-384 with SHA-1 with altered plaintext after call -PASS ECDSA P-384 with SHA-256 with altered plaintext after call -PASS ECDSA P-384 with SHA-384 with altered plaintext after call -PASS ECDSA P-384 with SHA-512 with altered plaintext after call -PASS ECDSA P-521 with SHA-1 with altered plaintext after call -PASS ECDSA P-521 with SHA-256 with altered plaintext after call -PASS ECDSA P-521 with SHA-384 with altered plaintext after call -PASS ECDSA P-521 with SHA-512 with altered plaintext after call -PASS ECDSA P-256 with SHA-1 using privateKey to verify -PASS ECDSA P-256 with SHA-256 using privateKey to verify -PASS ECDSA P-256 with SHA-384 using privateKey to verify -PASS ECDSA P-256 with SHA-512 using privateKey to verify -PASS ECDSA P-384 with SHA-1 using privateKey to verify -PASS ECDSA P-384 with SHA-256 using privateKey to verify -PASS ECDSA P-384 with SHA-384 using privateKey to verify -PASS ECDSA P-384 with SHA-512 using privateKey to verify -PASS ECDSA P-521 with SHA-1 using privateKey to verify -PASS ECDSA P-521 with SHA-256 using privateKey to verify -PASS ECDSA P-521 with SHA-384 using privateKey to verify -PASS ECDSA P-521 with SHA-512 using privateKey to verify -PASS ECDSA P-256 with SHA-1 using publicKey to sign -PASS ECDSA P-256 with SHA-256 using publicKey to sign -PASS ECDSA P-256 with SHA-384 using publicKey to sign -PASS ECDSA P-256 with SHA-512 using publicKey to sign -PASS ECDSA P-384 with SHA-1 using publicKey to sign -PASS ECDSA P-384 with SHA-256 using publicKey to sign -PASS ECDSA P-384 with SHA-384 using publicKey to sign -PASS ECDSA P-384 with SHA-512 using publicKey to sign -PASS ECDSA P-521 with SHA-1 using publicKey to sign -PASS ECDSA P-521 with SHA-256 using publicKey to sign -PASS ECDSA P-521 with SHA-384 using publicKey to sign -PASS ECDSA P-521 with SHA-512 using publicKey to sign -PASS ECDSA P-256 with SHA-1 no verify usage -PASS ECDSA P-256 with SHA-256 no verify usage -PASS ECDSA P-256 with SHA-384 no verify usage -PASS ECDSA P-256 with SHA-512 no verify usage -PASS ECDSA P-384 with SHA-1 no verify usage -PASS ECDSA P-384 with SHA-256 no verify usage -PASS ECDSA P-384 with SHA-384 no verify usage -PASS ECDSA P-384 with SHA-512 no verify usage -PASS ECDSA P-521 with SHA-1 no verify usage -PASS ECDSA P-521 with SHA-256 no verify usage -PASS ECDSA P-521 with SHA-384 no verify usage -PASS ECDSA P-521 with SHA-512 no verify usage -PASS ECDSA P-256 with SHA-1 round trip -PASS ECDSA P-256 with SHA-256 round trip -PASS ECDSA P-256 with SHA-384 round trip -PASS ECDSA P-256 with SHA-512 round trip -PASS ECDSA P-384 with SHA-1 round trip -PASS ECDSA P-384 with SHA-256 round trip -PASS ECDSA P-384 with SHA-384 round trip -PASS ECDSA P-384 with SHA-512 round trip -PASS ECDSA P-521 with SHA-1 round trip -PASS ECDSA P-521 with SHA-256 round trip -PASS ECDSA P-521 with SHA-384 round trip -PASS ECDSA P-521 with SHA-512 round trip -PASS ECDSA P-256 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-1 verification failure due to altered signature -PASS ECDSA P-256 with SHA-256 verification failure due to altered signature -PASS ECDSA P-256 with SHA-384 verification failure due to altered signature -PASS ECDSA P-256 with SHA-512 verification failure due to altered signature -PASS ECDSA P-384 with SHA-1 verification failure due to altered signature -PASS ECDSA P-384 with SHA-256 verification failure due to altered signature -PASS ECDSA P-384 with SHA-384 verification failure due to altered signature -PASS ECDSA P-384 with SHA-512 verification failure due to altered signature -PASS ECDSA P-521 with SHA-1 verification failure due to altered signature -PASS ECDSA P-521 with SHA-256 verification failure due to altered signature -PASS ECDSA P-521 with SHA-384 verification failure due to altered signature -PASS ECDSA P-521 with SHA-512 verification failure due to altered signature -PASS ECDSA P-256 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-512 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-512 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-512 verification failure due to altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/eddsa_small_order_points.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/eddsa_small_order_points.https.any-expected.txt new file mode 100644 index 0000000000000..b24d5dd733733 --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/eddsa_small_order_points.https.any-expected.txt @@ -0,0 +1,16 @@ + +PASS Ed25519 Verification checks with small-order key of order - Test 0 +PASS Ed25519 Verification checks with small-order key of order - Test 1 +PASS Ed25519 Verification checks with small-order key of order - Test 2 +FAIL Ed25519 Verification checks with small-order key of order - Test 3 assert_equals: Signature verification result. expected true but got false +PASS Ed25519 Verification checks with small-order key of order - Test 4 +PASS Ed25519 Verification checks with small-order key of order - Test 5 +FAIL Ed25519 Verification checks with small-order key of order - Test 6 assert_equals: Signature verification result. expected false but got true +PASS Ed25519 Verification checks with small-order key of order - Test 7 +PASS Ed25519 Verification checks with small-order key of order - Test 8 +PASS Ed25519 Verification checks with small-order key of order - Test 9 +PASS Ed25519 Verification checks with small-order key of order - Test 10 +PASS Ed25519 Verification checks with small-order key of order - Test 11 +PASS Ed25519 Verification checks with small-order key of order - Test 12 +PASS Ed25519 Verification checks with small-order key of order - Test 13 + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/eddsa_small_order_points.https.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/eddsa_small_order_points.https.any.worker-expected.txt new file mode 100644 index 0000000000000..b24d5dd733733 --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/eddsa_small_order_points.https.any.worker-expected.txt @@ -0,0 +1,16 @@ + +PASS Ed25519 Verification checks with small-order key of order - Test 0 +PASS Ed25519 Verification checks with small-order key of order - Test 1 +PASS Ed25519 Verification checks with small-order key of order - Test 2 +FAIL Ed25519 Verification checks with small-order key of order - Test 3 assert_equals: Signature verification result. expected true but got false +PASS Ed25519 Verification checks with small-order key of order - Test 4 +PASS Ed25519 Verification checks with small-order key of order - Test 5 +FAIL Ed25519 Verification checks with small-order key of order - Test 6 assert_equals: Signature verification result. expected false but got true +PASS Ed25519 Verification checks with small-order key of order - Test 7 +PASS Ed25519 Verification checks with small-order key of order - Test 8 +PASS Ed25519 Verification checks with small-order key of order - Test 9 +PASS Ed25519 Verification checks with small-order key of order - Test 10 +PASS Ed25519 Verification checks with small-order key of order - Test 11 +PASS Ed25519 Verification checks with small-order key of order - Test 12 +PASS Ed25519 Verification checks with small-order key of order - Test 13 + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker-expected.txt deleted file mode 100644 index b6a6d187ff62e..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.https.worker-expected.txt +++ /dev/null @@ -1,46 +0,0 @@ - -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-1 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-256 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-384 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-512 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-1 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-256 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-384 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-512 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-1 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-256 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-384 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-512 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-1 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-256 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-384 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-512 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-1 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-256 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-384 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-512 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-1 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-256 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-384 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-512 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification failure with altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker-expected.txt deleted file mode 100644 index b6a6d187ff62e..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker-expected.txt +++ /dev/null @@ -1,46 +0,0 @@ - -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-1 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-256 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-384 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-512 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-1 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-256 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-384 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-512 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-1 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-256 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-384 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-512 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-1 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-256 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-384 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-512 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-1 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-256 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-384 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-512 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-1 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-256 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-384 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-512 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification failure with altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.https.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.https.worker-expected.txt deleted file mode 100644 index ac29818b58948..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.https.worker-expected.txt +++ /dev/null @@ -1,90 +0,0 @@ - -PASS RSA-PSS with SHA-1 and no salt verification -PASS RSA-PSS with SHA-256 and no salt verification -PASS RSA-PSS with SHA-384 and no salt verification -PASS RSA-PSS with SHA-512 and no salt verification -PASS RSA-PSS with SHA-1, salted verification -PASS RSA-PSS with SHA-256, salted verification -PASS RSA-PSS with SHA-384, salted verification -PASS RSA-PSS with SHA-512, salted verification -PASS RSA-PSS with SHA-1 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-256 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-384 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-512 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-1, salted verification with altered signature after call -PASS RSA-PSS with SHA-256, salted verification with altered signature after call -PASS RSA-PSS with SHA-384, salted verification with altered signature after call -PASS RSA-PSS with SHA-512, salted verification with altered signature after call -PASS RSA-PSS with SHA-1 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-256 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-384 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-512 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-1, salted with altered plaintext after call -PASS RSA-PSS with SHA-256, salted with altered plaintext after call -PASS RSA-PSS with SHA-384, salted with altered plaintext after call -PASS RSA-PSS with SHA-512, salted with altered plaintext after call -PASS RSA-PSS with SHA-1 and no salt using privateKey to verify -PASS RSA-PSS with SHA-256 and no salt using privateKey to verify -PASS RSA-PSS with SHA-384 and no salt using privateKey to verify -PASS RSA-PSS with SHA-512 and no salt using privateKey to verify -PASS RSA-PSS with SHA-1, salted using privateKey to verify -PASS RSA-PSS with SHA-256, salted using privateKey to verify -PASS RSA-PSS with SHA-384, salted using privateKey to verify -PASS RSA-PSS with SHA-512, salted using privateKey to verify -PASS RSA-PSS with SHA-1 and no salt using publicKey to sign -PASS RSA-PSS with SHA-256 and no salt using publicKey to sign -PASS RSA-PSS with SHA-384 and no salt using publicKey to sign -PASS RSA-PSS with SHA-512 and no salt using publicKey to sign -PASS RSA-PSS with SHA-1, salted using publicKey to sign -PASS RSA-PSS with SHA-256, salted using publicKey to sign -PASS RSA-PSS with SHA-384, salted using publicKey to sign -PASS RSA-PSS with SHA-512, salted using publicKey to sign -PASS RSA-PSS with SHA-1 and no salt no verify usage -PASS RSA-PSS with SHA-256 and no salt no verify usage -PASS RSA-PSS with SHA-384 and no salt no verify usage -PASS RSA-PSS with SHA-512 and no salt no verify usage -PASS RSA-PSS with SHA-1, salted no verify usage -PASS RSA-PSS with SHA-256, salted no verify usage -PASS RSA-PSS with SHA-384, salted no verify usage -PASS RSA-PSS with SHA-512, salted no verify usage -PASS RSA-PSS with SHA-1 and no salt round trip -PASS RSA-PSS with SHA-256 and no salt round trip -PASS RSA-PSS with SHA-384 and no salt round trip -PASS RSA-PSS with SHA-512 and no salt round trip -PASS RSA-PSS with SHA-1, salted round trip -PASS RSA-PSS with SHA-256, salted round trip -PASS RSA-PSS with SHA-384, salted round trip -PASS RSA-PSS with SHA-512, salted round trip -PASS RSA-PSS with SHA-1 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-256 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-384 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-512 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-1, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-256, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-384, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-512, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-1 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-256 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-384 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-512 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-1, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-256, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-384, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-512, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-1 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-256 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-384 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-512 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-1, salted verification failure with altered signature -PASS RSA-PSS with SHA-256, salted verification failure with altered signature -PASS RSA-PSS with SHA-384, salted verification failure with altered signature -PASS RSA-PSS with SHA-512, salted verification failure with altered signature -PASS RSA-PSS with SHA-1 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-256 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-384 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-512 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-1, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-256, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-384, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-512, salted verification failure with altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker-expected.txt deleted file mode 100644 index ac29818b58948..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker-expected.txt +++ /dev/null @@ -1,90 +0,0 @@ - -PASS RSA-PSS with SHA-1 and no salt verification -PASS RSA-PSS with SHA-256 and no salt verification -PASS RSA-PSS with SHA-384 and no salt verification -PASS RSA-PSS with SHA-512 and no salt verification -PASS RSA-PSS with SHA-1, salted verification -PASS RSA-PSS with SHA-256, salted verification -PASS RSA-PSS with SHA-384, salted verification -PASS RSA-PSS with SHA-512, salted verification -PASS RSA-PSS with SHA-1 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-256 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-384 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-512 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-1, salted verification with altered signature after call -PASS RSA-PSS with SHA-256, salted verification with altered signature after call -PASS RSA-PSS with SHA-384, salted verification with altered signature after call -PASS RSA-PSS with SHA-512, salted verification with altered signature after call -PASS RSA-PSS with SHA-1 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-256 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-384 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-512 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-1, salted with altered plaintext after call -PASS RSA-PSS with SHA-256, salted with altered plaintext after call -PASS RSA-PSS with SHA-384, salted with altered plaintext after call -PASS RSA-PSS with SHA-512, salted with altered plaintext after call -PASS RSA-PSS with SHA-1 and no salt using privateKey to verify -PASS RSA-PSS with SHA-256 and no salt using privateKey to verify -PASS RSA-PSS with SHA-384 and no salt using privateKey to verify -PASS RSA-PSS with SHA-512 and no salt using privateKey to verify -PASS RSA-PSS with SHA-1, salted using privateKey to verify -PASS RSA-PSS with SHA-256, salted using privateKey to verify -PASS RSA-PSS with SHA-384, salted using privateKey to verify -PASS RSA-PSS with SHA-512, salted using privateKey to verify -PASS RSA-PSS with SHA-1 and no salt using publicKey to sign -PASS RSA-PSS with SHA-256 and no salt using publicKey to sign -PASS RSA-PSS with SHA-384 and no salt using publicKey to sign -PASS RSA-PSS with SHA-512 and no salt using publicKey to sign -PASS RSA-PSS with SHA-1, salted using publicKey to sign -PASS RSA-PSS with SHA-256, salted using publicKey to sign -PASS RSA-PSS with SHA-384, salted using publicKey to sign -PASS RSA-PSS with SHA-512, salted using publicKey to sign -PASS RSA-PSS with SHA-1 and no salt no verify usage -PASS RSA-PSS with SHA-256 and no salt no verify usage -PASS RSA-PSS with SHA-384 and no salt no verify usage -PASS RSA-PSS with SHA-512 and no salt no verify usage -PASS RSA-PSS with SHA-1, salted no verify usage -PASS RSA-PSS with SHA-256, salted no verify usage -PASS RSA-PSS with SHA-384, salted no verify usage -PASS RSA-PSS with SHA-512, salted no verify usage -PASS RSA-PSS with SHA-1 and no salt round trip -PASS RSA-PSS with SHA-256 and no salt round trip -PASS RSA-PSS with SHA-384 and no salt round trip -PASS RSA-PSS with SHA-512 and no salt round trip -PASS RSA-PSS with SHA-1, salted round trip -PASS RSA-PSS with SHA-256, salted round trip -PASS RSA-PSS with SHA-384, salted round trip -PASS RSA-PSS with SHA-512, salted round trip -PASS RSA-PSS with SHA-1 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-256 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-384 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-512 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-1, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-256, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-384, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-512, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-1 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-256 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-384 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-512 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-1, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-256, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-384, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-512, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-1 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-256 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-384 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-512 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-1, salted verification failure with altered signature -PASS RSA-PSS with SHA-256, salted verification failure with altered signature -PASS RSA-PSS with SHA-384, salted verification failure with altered signature -PASS RSA-PSS with SHA-512, salted verification failure with altered signature -PASS RSA-PSS with SHA-1 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-256 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-384 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-512 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-1, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-256, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-384, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-512, salted verification failure with altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_ecdsa.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_ecdsa.https-expected.txt deleted file mode 100644 index 87b886f6d5812..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_ecdsa.https-expected.txt +++ /dev/null @@ -1,172 +0,0 @@ -sign and verify Tests for ECDSA - - -PASS ECDSA P-256 with SHA-1 verification -PASS ECDSA P-256 with SHA-256 verification -PASS ECDSA P-256 with SHA-384 verification -PASS ECDSA P-256 with SHA-512 verification -PASS ECDSA P-384 with SHA-1 verification -PASS ECDSA P-384 with SHA-256 verification -PASS ECDSA P-384 with SHA-384 verification -PASS ECDSA P-384 with SHA-512 verification -PASS ECDSA P-521 with SHA-1 verification -PASS ECDSA P-521 with SHA-256 verification -PASS ECDSA P-521 with SHA-384 verification -PASS ECDSA P-521 with SHA-512 verification -PASS ECDSA P-256 with SHA-1 verification with altered signature after call -PASS ECDSA P-256 with SHA-256 verification with altered signature after call -PASS ECDSA P-256 with SHA-384 verification with altered signature after call -PASS ECDSA P-256 with SHA-512 verification with altered signature after call -PASS ECDSA P-384 with SHA-1 verification with altered signature after call -PASS ECDSA P-384 with SHA-256 verification with altered signature after call -PASS ECDSA P-384 with SHA-384 verification with altered signature after call -PASS ECDSA P-384 with SHA-512 verification with altered signature after call -PASS ECDSA P-521 with SHA-1 verification with altered signature after call -PASS ECDSA P-521 with SHA-256 verification with altered signature after call -PASS ECDSA P-521 with SHA-384 verification with altered signature after call -PASS ECDSA P-521 with SHA-512 verification with altered signature after call -PASS ECDSA P-256 with SHA-1 with altered plaintext after call -PASS ECDSA P-256 with SHA-256 with altered plaintext after call -PASS ECDSA P-256 with SHA-384 with altered plaintext after call -PASS ECDSA P-256 with SHA-512 with altered plaintext after call -PASS ECDSA P-384 with SHA-1 with altered plaintext after call -PASS ECDSA P-384 with SHA-256 with altered plaintext after call -PASS ECDSA P-384 with SHA-384 with altered plaintext after call -PASS ECDSA P-384 with SHA-512 with altered plaintext after call -PASS ECDSA P-521 with SHA-1 with altered plaintext after call -PASS ECDSA P-521 with SHA-256 with altered plaintext after call -PASS ECDSA P-521 with SHA-384 with altered plaintext after call -PASS ECDSA P-521 with SHA-512 with altered plaintext after call -PASS ECDSA P-256 with SHA-1 using privateKey to verify -PASS ECDSA P-256 with SHA-256 using privateKey to verify -PASS ECDSA P-256 with SHA-384 using privateKey to verify -PASS ECDSA P-256 with SHA-512 using privateKey to verify -PASS ECDSA P-384 with SHA-1 using privateKey to verify -PASS ECDSA P-384 with SHA-256 using privateKey to verify -PASS ECDSA P-384 with SHA-384 using privateKey to verify -PASS ECDSA P-384 with SHA-512 using privateKey to verify -PASS ECDSA P-521 with SHA-1 using privateKey to verify -PASS ECDSA P-521 with SHA-256 using privateKey to verify -PASS ECDSA P-521 with SHA-384 using privateKey to verify -PASS ECDSA P-521 with SHA-512 using privateKey to verify -PASS ECDSA P-256 with SHA-1 using publicKey to sign -PASS ECDSA P-256 with SHA-256 using publicKey to sign -PASS ECDSA P-256 with SHA-384 using publicKey to sign -PASS ECDSA P-256 with SHA-512 using publicKey to sign -PASS ECDSA P-384 with SHA-1 using publicKey to sign -PASS ECDSA P-384 with SHA-256 using publicKey to sign -PASS ECDSA P-384 with SHA-384 using publicKey to sign -PASS ECDSA P-384 with SHA-512 using publicKey to sign -PASS ECDSA P-521 with SHA-1 using publicKey to sign -PASS ECDSA P-521 with SHA-256 using publicKey to sign -PASS ECDSA P-521 with SHA-384 using publicKey to sign -PASS ECDSA P-521 with SHA-512 using publicKey to sign -PASS ECDSA P-256 with SHA-1 no verify usage -PASS ECDSA P-256 with SHA-256 no verify usage -PASS ECDSA P-256 with SHA-384 no verify usage -PASS ECDSA P-256 with SHA-512 no verify usage -PASS ECDSA P-384 with SHA-1 no verify usage -PASS ECDSA P-384 with SHA-256 no verify usage -PASS ECDSA P-384 with SHA-384 no verify usage -PASS ECDSA P-384 with SHA-512 no verify usage -PASS ECDSA P-521 with SHA-1 no verify usage -PASS ECDSA P-521 with SHA-256 no verify usage -PASS ECDSA P-521 with SHA-384 no verify usage -PASS ECDSA P-521 with SHA-512 no verify usage -PASS ECDSA P-256 with SHA-1 round trip -PASS ECDSA P-256 with SHA-256 round trip -PASS ECDSA P-256 with SHA-384 round trip -PASS ECDSA P-256 with SHA-512 round trip -PASS ECDSA P-384 with SHA-1 round trip -PASS ECDSA P-384 with SHA-256 round trip -PASS ECDSA P-384 with SHA-384 round trip -PASS ECDSA P-384 with SHA-512 round trip -PASS ECDSA P-521 with SHA-1 round trip -PASS ECDSA P-521 with SHA-256 round trip -PASS ECDSA P-521 with SHA-384 round trip -PASS ECDSA P-521 with SHA-512 round trip -PASS ECDSA P-256 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-384 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-1 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-256 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-384 signing with wrong algorithm name -PASS ECDSA P-521 with SHA-512 signing with wrong algorithm name -PASS ECDSA P-256 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-384 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-1 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-256 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-384 verifying with wrong algorithm name -PASS ECDSA P-521 with SHA-512 verifying with wrong algorithm name -PASS ECDSA P-256 with SHA-1 verification failure due to altered signature -PASS ECDSA P-256 with SHA-256 verification failure due to altered signature -PASS ECDSA P-256 with SHA-384 verification failure due to altered signature -PASS ECDSA P-256 with SHA-512 verification failure due to altered signature -PASS ECDSA P-384 with SHA-1 verification failure due to altered signature -PASS ECDSA P-384 with SHA-256 verification failure due to altered signature -PASS ECDSA P-384 with SHA-384 verification failure due to altered signature -PASS ECDSA P-384 with SHA-512 verification failure due to altered signature -PASS ECDSA P-521 with SHA-1 verification failure due to altered signature -PASS ECDSA P-521 with SHA-256 verification failure due to altered signature -PASS ECDSA P-521 with SHA-384 verification failure due to altered signature -PASS ECDSA P-521 with SHA-512 verification failure due to altered signature -PASS ECDSA P-256 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-384 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-1 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-256 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-384 verification failure due to wrong hash -PASS ECDSA P-521 with SHA-512 verification failure due to wrong hash -PASS ECDSA P-256 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-384 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-1 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-256 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-384 verification failure due to bad hash name -PASS ECDSA P-521 with SHA-512 verification failure due to bad hash name -PASS ECDSA P-256 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-384 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-1 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-256 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-384 verification failure due to shortened signature -PASS ECDSA P-521 with SHA-512 verification failure due to shortened signature -PASS ECDSA P-256 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-256 with SHA-512 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-384 with SHA-512 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-1 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-256 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-384 verification failure due to altered plaintext -PASS ECDSA P-521 with SHA-512 verification failure due to altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.https-expected.txt deleted file mode 100644 index 44aa931f4ebb8..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.https-expected.txt +++ /dev/null @@ -1,48 +0,0 @@ -sign and verify Tests for RSASSA-PKCS1-v1_5 - - -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification with altered signature after call -PASS RSASSA-PKCS1-v1_5 with SHA-1 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-256 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-384 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-512 with altered plaintext after call -PASS RSASSA-PKCS1-v1_5 with SHA-1 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-256 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-384 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-512 using privateKey to verify -PASS RSASSA-PKCS1-v1_5 with SHA-1 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-256 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-384 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-512 using publicKey to sign -PASS RSASSA-PKCS1-v1_5 with SHA-1 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-256 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-384 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-512 no verify usage -PASS RSASSA-PKCS1-v1_5 with SHA-1 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-256 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-384 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-512 round trip -PASS RSASSA-PKCS1-v1_5 with SHA-1 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-256 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-384 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-512 signing with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification with wrong algorithm name -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification failure with altered signature -PASS RSASSA-PKCS1-v1_5 with SHA-1 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-256 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-384 verification failure with altered plaintext -PASS RSASSA-PKCS1-v1_5 with SHA-512 verification failure with altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.https-expected.txt deleted file mode 100644 index b8014aa3a641a..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.https-expected.txt +++ /dev/null @@ -1,92 +0,0 @@ -sign and verify Tests for RSA-PSS - - -PASS RSA-PSS with SHA-1 and no salt verification -PASS RSA-PSS with SHA-256 and no salt verification -PASS RSA-PSS with SHA-384 and no salt verification -PASS RSA-PSS with SHA-512 and no salt verification -PASS RSA-PSS with SHA-1, salted verification -PASS RSA-PSS with SHA-256, salted verification -PASS RSA-PSS with SHA-384, salted verification -PASS RSA-PSS with SHA-512, salted verification -PASS RSA-PSS with SHA-1 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-256 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-384 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-512 and no salt verification with altered signature after call -PASS RSA-PSS with SHA-1, salted verification with altered signature after call -PASS RSA-PSS with SHA-256, salted verification with altered signature after call -PASS RSA-PSS with SHA-384, salted verification with altered signature after call -PASS RSA-PSS with SHA-512, salted verification with altered signature after call -PASS RSA-PSS with SHA-1 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-256 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-384 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-512 and no salt with altered plaintext after call -PASS RSA-PSS with SHA-1, salted with altered plaintext after call -PASS RSA-PSS with SHA-256, salted with altered plaintext after call -PASS RSA-PSS with SHA-384, salted with altered plaintext after call -PASS RSA-PSS with SHA-512, salted with altered plaintext after call -PASS RSA-PSS with SHA-1 and no salt using privateKey to verify -PASS RSA-PSS with SHA-256 and no salt using privateKey to verify -PASS RSA-PSS with SHA-384 and no salt using privateKey to verify -PASS RSA-PSS with SHA-512 and no salt using privateKey to verify -PASS RSA-PSS with SHA-1, salted using privateKey to verify -PASS RSA-PSS with SHA-256, salted using privateKey to verify -PASS RSA-PSS with SHA-384, salted using privateKey to verify -PASS RSA-PSS with SHA-512, salted using privateKey to verify -PASS RSA-PSS with SHA-1 and no salt using publicKey to sign -PASS RSA-PSS with SHA-256 and no salt using publicKey to sign -PASS RSA-PSS with SHA-384 and no salt using publicKey to sign -PASS RSA-PSS with SHA-512 and no salt using publicKey to sign -PASS RSA-PSS with SHA-1, salted using publicKey to sign -PASS RSA-PSS with SHA-256, salted using publicKey to sign -PASS RSA-PSS with SHA-384, salted using publicKey to sign -PASS RSA-PSS with SHA-512, salted using publicKey to sign -PASS RSA-PSS with SHA-1 and no salt no verify usage -PASS RSA-PSS with SHA-256 and no salt no verify usage -PASS RSA-PSS with SHA-384 and no salt no verify usage -PASS RSA-PSS with SHA-512 and no salt no verify usage -PASS RSA-PSS with SHA-1, salted no verify usage -PASS RSA-PSS with SHA-256, salted no verify usage -PASS RSA-PSS with SHA-384, salted no verify usage -PASS RSA-PSS with SHA-512, salted no verify usage -PASS RSA-PSS with SHA-1 and no salt round trip -PASS RSA-PSS with SHA-256 and no salt round trip -PASS RSA-PSS with SHA-384 and no salt round trip -PASS RSA-PSS with SHA-512 and no salt round trip -PASS RSA-PSS with SHA-1, salted round trip -PASS RSA-PSS with SHA-256, salted round trip -PASS RSA-PSS with SHA-384, salted round trip -PASS RSA-PSS with SHA-512, salted round trip -PASS RSA-PSS with SHA-1 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-256 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-384 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-512 and no salt signing with wrong algorithm name -PASS RSA-PSS with SHA-1, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-256, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-384, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-512, salted signing with wrong algorithm name -PASS RSA-PSS with SHA-1 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-256 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-384 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-512 and no salt verification with wrong algorithm name -PASS RSA-PSS with SHA-1, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-256, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-384, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-512, salted verification with wrong algorithm name -PASS RSA-PSS with SHA-1 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-256 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-384 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-512 and no salt verification failure with altered signature -PASS RSA-PSS with SHA-1, salted verification failure with altered signature -PASS RSA-PSS with SHA-256, salted verification failure with altered signature -PASS RSA-PSS with SHA-384, salted verification failure with altered signature -PASS RSA-PSS with SHA-512, salted verification failure with altered signature -PASS RSA-PSS with SHA-1 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-256 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-384 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-512 and no salt verification failure with altered plaintext -PASS RSA-PSS with SHA-1, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-256, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-384, salted verification failure with altered plaintext -PASS RSA-PSS with SHA-512, salted verification failure with altered plaintext - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any-expected.txt deleted file mode 100644 index 58d7b4ef114af..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ - -FAIL the length of brotli data should be shorter than that of the original data promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS the length of deflated data should be shorter than that of the original data -PASS the length of gzipped data should be shorter than that of the original data -PASS the length of deflated (with -raw) data should be shorter than that of the original data - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.serviceworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.serviceworker-expected.txt deleted file mode 100644 index 58d7b4ef114af..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.serviceworker-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ - -FAIL the length of brotli data should be shorter than that of the original data promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS the length of deflated data should be shorter than that of the original data -PASS the length of gzipped data should be shorter than that of the original data -PASS the length of deflated (with -raw) data should be shorter than that of the original data - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.sharedworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.sharedworker-expected.txt deleted file mode 100644 index 58d7b4ef114af..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.sharedworker-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ - -FAIL the length of brotli data should be shorter than that of the original data promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS the length of deflated data should be shorter than that of the original data -PASS the length of gzipped data should be shorter than that of the original data -PASS the length of deflated (with -raw) data should be shorter than that of the original data - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.worker-expected.txt deleted file mode 100644 index 58d7b4ef114af..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/compression-output-length.tentative.any.worker-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ - -FAIL the length of brotli data should be shorter than that of the original data promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS the length of deflated data should be shorter than that of the original data -PASS the length of gzipped data should be shorter than that of the original data -PASS the length of deflated (with -raw) data should be shorter than that of the original data - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any-expected.txt deleted file mode 100644 index da5cb2f0bf1a7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -FAIL chunk of type undefined should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type undefined should error the stream for gzip -PASS chunk of type undefined should error the stream for deflate -PASS chunk of type undefined should error the stream for deflate-raw -FAIL chunk of type null should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type null should error the stream for gzip -PASS chunk of type null should error the stream for deflate -PASS chunk of type null should error the stream for deflate-raw -FAIL chunk of type numeric should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type numeric should error the stream for gzip -PASS chunk of type numeric should error the stream for deflate -PASS chunk of type numeric should error the stream for deflate-raw -FAIL chunk of type object, not BufferSource should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type object, not BufferSource should error the stream for gzip -PASS chunk of type object, not BufferSource should error the stream for deflate -PASS chunk of type object, not BufferSource should error the stream for deflate-raw -FAIL chunk of type array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type array should error the stream for gzip -PASS chunk of type array should error the stream for deflate -PASS chunk of type array should error the stream for deflate-raw -FAIL chunk of type SharedArrayBuffer should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type SharedArrayBuffer should error the stream for gzip -PASS chunk of type SharedArrayBuffer should error the stream for deflate -PASS chunk of type SharedArrayBuffer should error the stream for deflate-raw -FAIL chunk of type shared Uint8Array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type shared Uint8Array should error the stream for gzip -PASS chunk of type shared Uint8Array should error the stream for deflate -PASS chunk of type shared Uint8Array should error the stream for deflate-raw -FAIL chunk of type invalid deflate bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid deflate bytes should error the stream for gzip -PASS chunk of type invalid deflate bytes should error the stream for deflate -PASS chunk of type invalid deflate bytes should error the stream for deflate-raw -FAIL chunk of type invalid gzip bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid gzip bytes should error the stream for gzip -PASS chunk of type invalid gzip bytes should error the stream for deflate -PASS chunk of type invalid gzip bytes should error the stream for deflate-raw - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.serviceworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.serviceworker-expected.txt deleted file mode 100644 index da5cb2f0bf1a7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.serviceworker-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -FAIL chunk of type undefined should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type undefined should error the stream for gzip -PASS chunk of type undefined should error the stream for deflate -PASS chunk of type undefined should error the stream for deflate-raw -FAIL chunk of type null should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type null should error the stream for gzip -PASS chunk of type null should error the stream for deflate -PASS chunk of type null should error the stream for deflate-raw -FAIL chunk of type numeric should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type numeric should error the stream for gzip -PASS chunk of type numeric should error the stream for deflate -PASS chunk of type numeric should error the stream for deflate-raw -FAIL chunk of type object, not BufferSource should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type object, not BufferSource should error the stream for gzip -PASS chunk of type object, not BufferSource should error the stream for deflate -PASS chunk of type object, not BufferSource should error the stream for deflate-raw -FAIL chunk of type array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type array should error the stream for gzip -PASS chunk of type array should error the stream for deflate -PASS chunk of type array should error the stream for deflate-raw -FAIL chunk of type SharedArrayBuffer should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type SharedArrayBuffer should error the stream for gzip -PASS chunk of type SharedArrayBuffer should error the stream for deflate -PASS chunk of type SharedArrayBuffer should error the stream for deflate-raw -FAIL chunk of type shared Uint8Array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type shared Uint8Array should error the stream for gzip -PASS chunk of type shared Uint8Array should error the stream for deflate -PASS chunk of type shared Uint8Array should error the stream for deflate-raw -FAIL chunk of type invalid deflate bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid deflate bytes should error the stream for gzip -PASS chunk of type invalid deflate bytes should error the stream for deflate -PASS chunk of type invalid deflate bytes should error the stream for deflate-raw -FAIL chunk of type invalid gzip bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid gzip bytes should error the stream for gzip -PASS chunk of type invalid gzip bytes should error the stream for deflate -PASS chunk of type invalid gzip bytes should error the stream for deflate-raw - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.sharedworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.sharedworker-expected.txt deleted file mode 100644 index da5cb2f0bf1a7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.sharedworker-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -FAIL chunk of type undefined should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type undefined should error the stream for gzip -PASS chunk of type undefined should error the stream for deflate -PASS chunk of type undefined should error the stream for deflate-raw -FAIL chunk of type null should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type null should error the stream for gzip -PASS chunk of type null should error the stream for deflate -PASS chunk of type null should error the stream for deflate-raw -FAIL chunk of type numeric should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type numeric should error the stream for gzip -PASS chunk of type numeric should error the stream for deflate -PASS chunk of type numeric should error the stream for deflate-raw -FAIL chunk of type object, not BufferSource should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type object, not BufferSource should error the stream for gzip -PASS chunk of type object, not BufferSource should error the stream for deflate -PASS chunk of type object, not BufferSource should error the stream for deflate-raw -FAIL chunk of type array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type array should error the stream for gzip -PASS chunk of type array should error the stream for deflate -PASS chunk of type array should error the stream for deflate-raw -FAIL chunk of type SharedArrayBuffer should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type SharedArrayBuffer should error the stream for gzip -PASS chunk of type SharedArrayBuffer should error the stream for deflate -PASS chunk of type SharedArrayBuffer should error the stream for deflate-raw -FAIL chunk of type shared Uint8Array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type shared Uint8Array should error the stream for gzip -PASS chunk of type shared Uint8Array should error the stream for deflate -PASS chunk of type shared Uint8Array should error the stream for deflate-raw -FAIL chunk of type invalid deflate bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid deflate bytes should error the stream for gzip -PASS chunk of type invalid deflate bytes should error the stream for deflate -PASS chunk of type invalid deflate bytes should error the stream for deflate-raw -FAIL chunk of type invalid gzip bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid gzip bytes should error the stream for gzip -PASS chunk of type invalid gzip bytes should error the stream for deflate -PASS chunk of type invalid gzip bytes should error the stream for deflate-raw - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.worker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.worker-expected.txt deleted file mode 100644 index da5cb2f0bf1a7..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/compression/decompression-bad-chunks.tentative.any.worker-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ - -FAIL chunk of type undefined should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type undefined should error the stream for gzip -PASS chunk of type undefined should error the stream for deflate -PASS chunk of type undefined should error the stream for deflate-raw -FAIL chunk of type null should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type null should error the stream for gzip -PASS chunk of type null should error the stream for deflate -PASS chunk of type null should error the stream for deflate-raw -FAIL chunk of type numeric should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type numeric should error the stream for gzip -PASS chunk of type numeric should error the stream for deflate -PASS chunk of type numeric should error the stream for deflate-raw -FAIL chunk of type object, not BufferSource should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type object, not BufferSource should error the stream for gzip -PASS chunk of type object, not BufferSource should error the stream for deflate -PASS chunk of type object, not BufferSource should error the stream for deflate-raw -FAIL chunk of type array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type array should error the stream for gzip -PASS chunk of type array should error the stream for deflate -PASS chunk of type array should error the stream for deflate-raw -FAIL chunk of type SharedArrayBuffer should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type SharedArrayBuffer should error the stream for gzip -PASS chunk of type SharedArrayBuffer should error the stream for deflate -PASS chunk of type SharedArrayBuffer should error the stream for deflate-raw -FAIL chunk of type shared Uint8Array should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type shared Uint8Array should error the stream for gzip -PASS chunk of type shared Uint8Array should error the stream for deflate -PASS chunk of type shared Uint8Array should error the stream for deflate-raw -FAIL chunk of type invalid deflate bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid deflate bytes should error the stream for gzip -PASS chunk of type invalid deflate bytes should error the stream for deflate -PASS chunk of type invalid deflate bytes should error the stream for deflate-raw -FAIL chunk of type invalid gzip bytes should error the stream for brotli promise_test: Unhandled rejection with value: object "NotSupportedError: Unsupported algorithm" -PASS chunk of type invalid gzip bytes should error the stream for gzip -PASS chunk of type invalid gzip bytes should error the stream for deflate -PASS chunk of type invalid gzip bytes should error the stream for deflate-raw - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block-expected.txt deleted file mode 100644 index 64655e6631a1f..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block-expected.txt +++ /dev/null @@ -1,4 +0,0 @@ - - -PASS A 'frame-ancestors' CSP directive with a value 'same' should block render in same-origin nested frames. - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/content-security-policy/reporting/report-original-url-on-mixed-content-frame.https.sub-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/content-security-policy/reporting/report-original-url-on-mixed-content-frame.https.sub-expected.txt deleted file mode 100644 index fe4b12427862b..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/content-security-policy/reporting/report-original-url-on-mixed-content-frame.https.sub-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - -FAIL Violation report status OK. assert_true: blocked-uri value of "http://web-platform.test:8800" did not match https://web-platform.test:9443/common/redirect.py?location=http%3A%2F%2Fweb-platform.test%3A8800%2Fcontent-security-policy%2Fsupport%2Ffail.html%3Ft%3D1. expected true got false - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_document_cookie.https.window-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_document_cookie.https.window-expected.txt deleted file mode 100644 index 006615b24a356..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_document_cookie.https.window-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ - -PASS document.cookie set/overwrite/delete observed by CookieStore -PASS CookieStore set/overwrite/delete observed by document.cookie -PASS CookieStore agrees with document.cookie on encoding non-ASCII cookies -PASS document.cookie agrees with CookieStore on encoding non-ASCII cookies - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window-expected.txt deleted file mode 100644 index 8998c3c0de2ec..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window-expected.txt +++ /dev/null @@ -1,7 +0,0 @@ - -PASS HTTP set/overwrite/delete observed in CookieStore -PASS CookieStore agreed with HTTP headers agree on encoding non-ASCII cookies -PASS CookieStore set/overwrite/delete observed in HTTP headers -PASS HTTP headers agreed with CookieStore on encoding non-ASCII cookies -PASS Binary HTTP set/overwrite/delete observed in CookieStore - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_and_no_value.https.window-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_and_no_value.https.window-expected.txt deleted file mode 100644 index e10251414c864..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_and_no_value.https.window-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - -FAIL Verify behavior of no-name and no-value cookies. promise_test: Unhandled rejection with value: object "TypeError: The cookie name and value must not both be empty." - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_equals_in_value.https.window-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_equals_in_value.https.window-expected.txt deleted file mode 100644 index a8f5f74b2abc9..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_equals_in_value.https.window-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - -FAIL Verify that attempting to set a cookie with no name and with '=' in the value does not work. promise_test: Unhandled rejection with value: object "TypeError: The cookie name and value must not both be empty." - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_multiple_values.https.window-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_multiple_values.https.window-expected.txt deleted file mode 100644 index 5ed98edc53094..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/change_eventhandler_for_no_name_multiple_values.https.window-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - -FAIL Verify behavior of multiple no-name cookies promise_test: Unhandled rejection with value: object "TypeError: The cookie name and value must not both be empty." - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any-expected.txt deleted file mode 100644 index ef8e39f81cede..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ - -FAIL CookieListItem - cookieStore.set defaults with positional name and value assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set defaults with name and value in options assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with expires set to a timestamp 10 years in the future assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with expires set to a Date 10 years in the future assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with domain set to the current hostname assert_equals: expected (object) null but got (undefined) undefined -FAIL CookieListItem - cookieStore.set with path set to the current directory assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set adds / to path if it does not end with / assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with sameSite set to strict assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with sameSite set to lax assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with sameSite set to none assert_equals: expected (object) null but got (string) "web-platform.test" -PASS CookieListItem - secure defaults to true - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.serviceworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.serviceworker-expected.txt deleted file mode 100644 index ef8e39f81cede..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieListItem_attributes.https.any.serviceworker-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ - -FAIL CookieListItem - cookieStore.set defaults with positional name and value assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set defaults with name and value in options assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with expires set to a timestamp 10 years in the future assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with expires set to a Date 10 years in the future assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with domain set to the current hostname assert_equals: expected (object) null but got (undefined) undefined -FAIL CookieListItem - cookieStore.set with path set to the current directory assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set adds / to path if it does not end with / assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with sameSite set to strict assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with sameSite set to lax assert_equals: expected (object) null but got (string) "web-platform.test" -FAIL CookieListItem - cookieStore.set with sameSite set to none assert_equals: expected (object) null but got (string) "web-platform.test" -PASS CookieListItem - secure defaults to true - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any-expected.txt deleted file mode 100644 index ea50301085419..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any-expected.txt +++ /dev/null @@ -1,18 +0,0 @@ - -Harness Error (FAIL), message = Test named 'cookieStore.delete with positional empty name' specified 1 'cleanup' function, and 1 failed. - -PASS cookieStore.delete with positional name -PASS cookieStore.delete with name in options -PASS cookieStore.delete domain starts with "." -PASS cookieStore.delete with domain that is not equal current host -PASS cookieStore.delete with domain set to the current hostname -PASS cookieStore.delete with domain set to a subdomain of the current hostname -PASS cookieStore.delete with domain set to a non-domain-matching suffix of the current hostname -PASS cookieStore.delete with path set to the current directory -PASS cookieStore.delete with path set to subdirectory of the current directory -PASS cookieStore.delete with missing / at the end of path -PASS cookieStore.delete with path that does not start with / -PASS cookieStore.delete with get result -FAIL cookieStore.delete with positional empty name promise_test: Unhandled rejection with value: object "TypeError: The cookie name and value must not both be empty." -NOTRUN cookieStore.delete with empty name in options - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any.serviceworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any.serviceworker-expected.txt deleted file mode 100644 index ea50301085419..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_delete_arguments.https.any.serviceworker-expected.txt +++ /dev/null @@ -1,18 +0,0 @@ - -Harness Error (FAIL), message = Test named 'cookieStore.delete with positional empty name' specified 1 'cleanup' function, and 1 failed. - -PASS cookieStore.delete with positional name -PASS cookieStore.delete with name in options -PASS cookieStore.delete domain starts with "." -PASS cookieStore.delete with domain that is not equal current host -PASS cookieStore.delete with domain set to the current hostname -PASS cookieStore.delete with domain set to a subdomain of the current hostname -PASS cookieStore.delete with domain set to a non-domain-matching suffix of the current hostname -PASS cookieStore.delete with path set to the current directory -PASS cookieStore.delete with path set to subdirectory of the current directory -PASS cookieStore.delete with missing / at the end of path -PASS cookieStore.delete with path that does not start with / -PASS cookieStore.delete with get result -FAIL cookieStore.delete with positional empty name promise_test: Unhandled rejection with value: object "TypeError: The cookie name and value must not both be empty." -NOTRUN cookieStore.delete with empty name in options - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_event_delete.https.window-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_event_delete.https.window-expected.txt deleted file mode 100644 index a36758474f016..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_event_delete.https.window-expected.txt +++ /dev/null @@ -1,4 +0,0 @@ - -PASS cookieStore fires change event for cookie deleted by cookieStore.delete() -PASS cookieStore does not fire change events for non-existing expired cookies - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_get_set_across_origins.sub.https-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_get_set_across_origins.sub.https-expected.txt deleted file mode 100644 index 9742790844351..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/cookieStore_get_set_across_origins.sub.https-expected.txt +++ /dev/null @@ -1,4 +0,0 @@ - -PASS cookieStore.get() sees cookieStore.set() in cross-origin frame -PASS cookieStore.get() in cross-origin frame sees cookieStore.set() - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any-expected.txt deleted file mode 100644 index 1f85b26c58cf3..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any-expected.txt +++ /dev/null @@ -1,4 +0,0 @@ - -PASS BOM not stripped from name -PASS BOM not stripped from value - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any.serviceworker-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any.serviceworker-expected.txt deleted file mode 100644 index 1f85b26c58cf3..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/encoding.https.any.serviceworker-expected.txt +++ /dev/null @@ -1,4 +0,0 @@ - -PASS BOM not stripped from name -PASS BOM not stripped from value - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.https.sub-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.https.sub-expected.txt deleted file mode 100644 index 67004d933667c..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/cookie-store/serviceworker_cookieStore_cross_origin.https.sub-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - -PASS cookieStore.get() in ServiceWorker reads cookie set in cross-origin frame - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css-font-loading/fontface-loadingevent-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css-font-loading/fontface-loadingevent-expected.txt deleted file mode 100644 index a365625925f89..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css-font-loading/fontface-loadingevent-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - -FAIL FontFaceSet fires correct loading event assert_true: The 'loading' event should have fired expected true got false - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-color/system-color-consistency-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-color/system-color-consistency-expected.txt new file mode 100644 index 0000000000000..700b4f0eb602e --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-color/system-color-consistency-expected.txt @@ -0,0 +1,64 @@ + +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a button (light) assert_equals: expected "rgb(192, 192, 192)" but got "rgb(255, 255, 255)" +PASS Property color value 'ButtonFace' resolves to the same color as the background-color of a button (light) +PASS Property color value 'ButtonText' resolves to the same color as text on a button (light) +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a submit button (light) assert_equals: expected "rgb(192, 192, 192)" but got "rgb(255, 255, 255)" +PASS Property color value 'ButtonFace' resolves to the same color as the background-color of a submit button (light) +PASS Property color value 'ButtonText' resolves to the same color as text on a submit button (light) +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a reset button (light) assert_equals: expected "rgb(192, 192, 192)" but got "rgb(255, 255, 255)" +PASS Property color value 'ButtonFace' resolves to the same color as the background-color of a reset button (light) +PASS Property color value 'ButtonText' resolves to the same color as text on a reset button (light) +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a color picker (light) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 255, 255)" +FAIL Property color value 'ButtonFace' resolves to the same color as the background-color of a color picker (light) assert_equals: expected "rgb(255, 255, 255)" but got "rgb(192, 192, 192)" +FAIL Property color value 'ButtonText' resolves to the same color as text on a color picker (light) assert_equals: expected "rgb(0, 0, 0)" but got "rgba(0, 0, 0, 0.8)" +PASS Property color value 'CanvasText' has the same color as the color of the html element (light) +PASS Property color value 'Field' resolves to the same color as the background-color of a text field (light) +PASS Property color value 'FieldText' resolves to the same color as text on a text field (light) +PASS Property color value 'Field' resolves to the same color as the background-color of a password field (light) +PASS Property color value 'FieldText' resolves to the same color as text on a password field (light) +PASS Property color value 'Field' resolves to the same color as the background-color of a email field (light) +PASS Property color value 'FieldText' resolves to the same color as text on a email field (light) +PASS Property color value 'Field' resolves to the same color as the background-color of a number field (light) +PASS Property color value 'FieldText' resolves to the same color as text on a number field (light) +PASS Property color value 'Field' resolves to the same color as the background-color of a date field (light) +PASS Property color value 'FieldText' resolves to the same color as text on a date field (light) +PASS Property color value 'Field' resolves to the same color as the background-color of a text area (light) +PASS Property color value 'FieldText' resolves to the same color as text on a text area (light) +PASS Property color value 'Mark' has the same color as the background-color of a mark element (light) +PASS Property color value 'MarkText' has the same color as the color of a mark element (light) +PASS Property color value 'LinkText' has the same color as the color of an anchor element (light) +PASS LinkText should not match Canvas in light mode +PASS ActiveText should not match Canvas in light mode +PASS VisitedText should not match Canvas in light mode +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a button (dark) assert_equals: expected "rgb(192, 192, 192)" but got "rgb(255, 255, 255)" +PASS Property color value 'ButtonFace' resolves to the same color as the background-color of a button (dark) +PASS Property color value 'ButtonText' resolves to the same color as text on a button (dark) +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a submit button (dark) assert_equals: expected "rgb(192, 192, 192)" but got "rgb(255, 255, 255)" +PASS Property color value 'ButtonFace' resolves to the same color as the background-color of a submit button (dark) +PASS Property color value 'ButtonText' resolves to the same color as text on a submit button (dark) +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a reset button (dark) assert_equals: expected "rgb(192, 192, 192)" but got "rgb(255, 255, 255)" +PASS Property color value 'ButtonFace' resolves to the same color as the background-color of a reset button (dark) +PASS Property color value 'ButtonText' resolves to the same color as text on a reset button (dark) +FAIL Property color value 'ButtonBorder' resolves to the same color as the border-color of a color picker (dark) assert_equals: expected "rgb(128, 128, 128)" but got "rgb(255, 255, 255)" +FAIL Property color value 'ButtonFace' resolves to the same color as the background-color of a color picker (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(192, 192, 192)" +PASS Property color value 'ButtonText' resolves to the same color as text on a color picker (dark) +PASS Property color value 'CanvasText' has the same color as the color of the html element (dark) +FAIL Property color value 'Field' resolves to the same color as the background-color of a text field (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(45, 45, 45)" +PASS Property color value 'FieldText' resolves to the same color as text on a text field (dark) +FAIL Property color value 'Field' resolves to the same color as the background-color of a password field (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(45, 45, 45)" +PASS Property color value 'FieldText' resolves to the same color as text on a password field (dark) +FAIL Property color value 'Field' resolves to the same color as the background-color of a email field (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(45, 45, 45)" +PASS Property color value 'FieldText' resolves to the same color as text on a email field (dark) +FAIL Property color value 'Field' resolves to the same color as the background-color of a number field (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(45, 45, 45)" +PASS Property color value 'FieldText' resolves to the same color as text on a number field (dark) +FAIL Property color value 'Field' resolves to the same color as the background-color of a date field (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(45, 45, 45)" +PASS Property color value 'FieldText' resolves to the same color as text on a date field (dark) +FAIL Property color value 'Field' resolves to the same color as the background-color of a text area (dark) assert_equals: expected "rgb(30, 30, 30)" but got "rgb(45, 45, 45)" +PASS Property color value 'FieldText' resolves to the same color as text on a text area (dark) +PASS Property color value 'Mark' has the same color as the background-color of a mark element (dark) +PASS Property color value 'MarkText' has the same color as the color of a mark element (dark) +PASS Property color value 'LinkText' has the same color as the color of an anchor element (dark) +PASS LinkText should not match Canvas in dark mode +PASS ActiveText should not match Canvas in dark mode +PASS VisitedText should not match Canvas in dark mode + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt deleted file mode 100644 index 6521ec496edc2..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-contain/container-queries/counters-flex-circular-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ - -PASS #item1, #container, and #inner should all have the same width: 175 -PASS The container query should match the layed out width -PASS The sum of the item widths should match the flexbox width -PASS The size of the flex item #2 should be given by its contents - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007-expected.txt new file mode 100644 index 0000000000000..510b41ce6e947 --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007-expected.txt @@ -0,0 +1,5 @@ +--a1 +--a2OO + +FAIL CSS Content Visibility: auto not skipped due to being an indirect influence on anchoring assert_approx_equals: #positioned should be anchored because #anchor is on-screen. expected 44 +/- 1 but got -15 + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-flexbox/intrinsic-size/row-use-cases-001-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-flexbox/intrinsic-size/row-use-cases-001-expected.txt new file mode 100644 index 0000000000000..3c2184bd12903 --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-flexbox/intrinsic-size/row-use-cases-001-expected.txt @@ -0,0 +1,33 @@ +https://bugs.chromium.org/p/chromium/issues/detail?id=423112 + + +first checkbox example + +second checkbox example +https://bugs.chromium.org/p/chromium/issues/detail?id=464210 + +MMMMM +MMMMM +https://bugs.chromium.org/p/chromium/issues/detail?id=533627#c3 + +hello +hello +https://bugs.chromium.org/p/chromium/issues/detail?id=441768 author wants below blue block to have 0 width + +https://bugs.chromium.org/p/chromium/issues/detail?id=1144312 + +phantom whitespace +also phantom whitespace +no more phantom whitespace +https://bugs.chromium.org/p/chromium/issues/detail?id=1154243 + +Test content +Test content + +FAIL left < right assert_less_than_equal: expected a number less than or equal to 204 but got 232 +FAIL no overflow assert_less_than_equal: expected a number less than or equal to 176 but got 233 +FAIL same widths assert_equals: expected 278 but got 51 +FAIL zero width assert_equals: expected 0 but got 200 +FAIL same heights assert_equals: expected 28 but got 40 +FAIL no overflow 2 assert_less_than_equal: expected a number less than or equal to 183 but got 301 + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-001-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-001-expected.txt new file mode 100644 index 0000000000000..be03332eadb0c --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-001-expected.txt @@ -0,0 +1,19 @@ +00000 +00000 + +PASS @font-face matching for quoted and unquoted serif +PASS @font-face matching for quoted and unquoted sans-serif +PASS @font-face matching for quoted and unquoted cursive +PASS @font-face matching for quoted and unquoted fantasy +PASS @font-face matching for quoted and unquoted monospace +FAIL @font-face matching for quoted and unquoted system-ui assert_equals: unquoted system-ui does not match @font-face rule expected 30 but got 50 +FAIL @font-face matching for quoted and unquoted math assert_equals: quoted math matches @font-face rule expected 50 but got 25 +PASS @font-face matching for quoted and unquoted generic(fangsong) +PASS @font-face matching for quoted and unquoted generic(kai) +PASS @font-face matching for quoted and unquoted generic(khmer-mul) +PASS @font-face matching for quoted and unquoted generic(nastaliq) +FAIL @font-face matching for quoted and unquoted ui-serif assert_equals: unquoted ui-serif does not match @font-face rule expected 25 but got 50 +FAIL @font-face matching for quoted and unquoted ui-sans-serif assert_equals: unquoted ui-sans-serif does not match @font-face rule expected 30 but got 50 +FAIL @font-face matching for quoted and unquoted ui-monospace assert_equals: unquoted ui-monospace does not match @font-face rule expected 25 but got 50 +FAIL @font-face matching for quoted and unquoted ui-rounded assert_equals: unquoted ui-rounded does not match @font-face rule expected 25 but got 50 + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt index cd5e0e8fbbd76..314e4a99510ee 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt @@ -2,7 +2,7 @@ 00000 FAIL font-family: -webkit-serif treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-sans-serif treated as , not assert_equals: expected 50 but got 30 +PASS font-family: -webkit-sans-serif treated as , not FAIL font-family: -webkit-cursive treated as , not assert_equals: expected 50 but got 25 FAIL font-family: -webkit-fantasy treated as , not assert_equals: expected 50 but got 25 FAIL font-family: -webkit-monospace treated as , not assert_equals: expected 50 but got 30 diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-grid/masonry.tentative/masonry-grid-template-columns-computed-withcontent-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-grid/masonry.tentative/masonry-grid-template-columns-computed-withcontent-expected.txt deleted file mode 100644 index af2e54f4a8549..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-grid/masonry.tentative/masonry-grid-template-columns-computed-withcontent-expected.txt +++ /dev/null @@ -1,30 +0,0 @@ - -FAIL Property grid-template-rows value 'masonry' assert_true: 'masonry' is a supported value for grid-template-rows. expected true got false -FAIL Property grid-template-columns value 'none' assert_equals: expected "none" but got "300px" -PASS Property grid-template-columns value '20%' -PASS Property grid-template-columns value 'calc(-0.5em + 10px)' -PASS Property grid-template-columns value 'calc(0.5em + 10px)' -PASS Property grid-template-columns value 'calc(30% + 40px)' -PASS Property grid-template-columns value '5fr' -PASS Property grid-template-columns value 'min-content' -PASS Property grid-template-columns value 'max-content' -PASS Property grid-template-columns value 'auto' -PASS Property grid-template-columns value 'minmax(10px, auto)' -PASS Property grid-template-columns value 'minmax(20%, max-content)' -PASS Property grid-template-columns value 'minmax(min-content, calc(-0.5em + 10px))' -PASS Property grid-template-columns value 'minmax(auto, 0)' -PASS Property grid-template-columns value 'fit-content(70px)' -PASS Property grid-template-columns value 'fit-content(20%)' -PASS Property grid-template-columns value 'fit-content(calc(-0.5em + 10px))' -PASS Property grid-template-columns value 'repeat(1, 10px)' -PASS Property grid-template-columns value 'repeat(1, [one two] 20%)' -PASS Property grid-template-columns value 'repeat(2, minmax(10px, auto))' -PASS Property grid-template-columns value 'repeat(2, fit-content(20%) [three four] 30px 40px [five six])' -PASS Property grid-template-columns value 'min-content repeat(5, minmax(10px, auto))' -PASS Property grid-template-columns value '[] 150px [] 1fr []' -PASS Property grid-template-columns value 'repeat(auto-fill, 200px)' -PASS Property grid-template-columns value 'repeat(auto-fit, [one] 20%)' -PASS Property grid-template-columns value 'repeat(auto-fill, minmax(100px, 5fr) [two])' -PASS Property grid-template-columns value 'repeat(auto-fit, [three] minmax(max-content, 6em) [four])' -PASS Property grid-template-columns value '[one] repeat(2, minmax(50px, auto)) [two] 30px [three] repeat(auto-fill, 10px) 40px [four five] repeat(2, minmax(200px, auto)) [six]' - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-pseudo/marker-hit-testing-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-pseudo/marker-hit-testing-expected.txt new file mode 100644 index 0000000000000..34d5691b11c7e --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-pseudo/marker-hit-testing-expected.txt @@ -0,0 +1,23 @@ + + +PASS outside image ::marker's content +PASS outside image ::marker +PASS outside string ::marker's content +PASS outside string ::marker +PASS outside marker ::marker's content +PASS outside marker ::marker +PASS outside nested image ::marker's content +FAIL outside nested image ::marker assert_equals: event.target expected Element node
  • but got Element node
  • +PASS outside nested string ::marker's content +PASS outside nested string ::marker +PASS inside image ::marker's content +PASS inside image ::marker +PASS inside string ::marker's content +PASS inside string ::marker +PASS inside marker ::marker's content +PASS inside marker ::marker +PASS inside nested image ::marker's content +PASS inside nested image ::marker +PASS inside nested string ::marker's content +PASS inside nested string ::marker + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-margin-focus-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-margin-focus-expected.txt new file mode 100644 index 0000000000000..d6aef754895ae --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-scroll-snap/scroll-margin-focus-expected.txt @@ -0,0 +1,6 @@ +This header may obscure content below it. +Focus this button +Start on this button + +FAIL Focus should scroll button outside of scroll margin assert_equals: scrolls to bottom of scroller expected 84 but got 0 + diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-001-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-001.tentative-expected.txt similarity index 100% rename from LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-001-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-001.tentative-expected.txt diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-004-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-004-expected.txt deleted file mode 100644 index 22ed7f3fa76b5..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-004-expected.txt +++ /dev/null @@ -1,27 +0,0 @@ - -FAIL linebreak only ₩24 assert_equals: expected 71 but got 78 -FAIL spaces linebreak ₩24 assert_equals: expected 71 but got 78 -FAIL linebreak spaces ₩24 assert_equals: expected 71 but got 78 -FAIL spaces linebreak spaces ₩24 assert_equals: expected 71 but got 78 -FAIL multiple linebreaks ₩24 assert_equals: expected 71 but got 78 -FAIL multiple linebreaks + spaces ₩24 assert_equals: expected 71 but got 78 -FAIL linebreak only 24₩ assert_equals: expected 71 but got 78 -FAIL spaces linebreak 24₩ assert_equals: expected 71 but got 78 -FAIL linebreak spaces 24₩ assert_equals: expected 71 but got 78 -FAIL spaces linebreak spaces 24₩ assert_equals: expected 71 but got 78 -FAIL multiple linebreaks 24₩ assert_equals: expected 71 but got 78 -FAIL multiple linebreaks + spaces 24₩ assert_equals: expected 71 but got 78 -₩ 24 -₩ 24 -₩ 24 -₩ 24 -₩ 24 -₩ 24 -₩24 -24 ₩ -24 ₩ -24 ₩ -24 ₩ -24 ₩ -24 ₩ -24₩ diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-016-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-016.tentative-expected.txt similarity index 100% rename from LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-016-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-016.tentative-expected.txt diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-017-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-017.tentative-expected.txt similarity index 100% rename from LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-017-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-text/white-space/seg-break-transformation-017.tentative-expected.txt diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/css-transform-inherit-rotate-expected.png b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/css-transform-inherit-rotate-expected.png deleted file mode 100644 index 34328200e4e0f..0000000000000 Binary files a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/css-transform-inherit-rotate-expected.png and /dev/null differ diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/css-transform-inherit-rotate-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/css-transform-inherit-rotate-expected.txt deleted file mode 100644 index a39ca50db9e57..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/css-transform-inherit-rotate-expected.txt +++ /dev/null @@ -1,15 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x0 - RenderBlock {HTML} at (0,0) size 800x0 - RenderBody {BODY} at (0,0) size 800x0 -layer at (0,300) size 501x18 - RenderBlock (positioned) {P} at (0,300) size 501x18 - RenderText {#text} at (0,0) size 501x17 - text run at (0,0) width 501: "The test passes if there is a green square and no red. And it is rotated 45 degree." -layer at (50,50) size 200x200 - RenderBlock (positioned) {DIV} at (50,50) size 200x200 [bgcolor=#008000] -layer at (100,100) size 100x100 - RenderBlock (positioned) {DIV} at (50,50) size 100x100 [bgcolor=#FF0000] -layer at (100,100) size 100x100 - RenderBlock (positioned) zI: 2 {DIV} at (100,100) size 100x100 [bgcolor=#008000] diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt deleted file mode 100644 index 31416de2ae0bd..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-ui/appearance-cssom-001-expected.txt +++ /dev/null @@ -1,345 +0,0 @@ -Test - -PASS -webkit-appearance: none -PASS -webkit-appearance: auto -PASS -webkit-appearance: button -PASS -webkit-appearance: checkbox -PASS -webkit-appearance: listbox -PASS -webkit-appearance: menulist -PASS -webkit-appearance: menulist-button -PASS -webkit-appearance: meter -PASS -webkit-appearance: progress-bar -PASS -webkit-appearance: push-button -PASS -webkit-appearance: radio -PASS -webkit-appearance: searchfield -PASS -webkit-appearance: slider-horizontal -PASS -webkit-appearance: square-button -PASS -webkit-appearance: textarea -PASS -webkit-appearance: textfield -PASS -webkit-appearance: bogus-button (invalid) -PASS -webkit-appearance: attachment (invalid) -PASS -webkit-appearance: button-bevel (invalid) -PASS -webkit-appearance: borderless-attachment (invalid) -PASS -webkit-appearance: button-arrow-down (invalid) -PASS -webkit-appearance: button-arrow-next (invalid) -PASS -webkit-appearance: button-arrow-previous (invalid) -PASS -webkit-appearance: button-arrow-up (invalid) -PASS -webkit-appearance: button-focus (invalid) -PASS -webkit-appearance: caps-lock-indicator (invalid) -PASS -webkit-appearance: caret (invalid) -PASS -webkit-appearance: checkbox-container (invalid) -PASS -webkit-appearance: checkbox-label (invalid) -PASS -webkit-appearance: checkmenuitem (invalid) -PASS -webkit-appearance: color-well (invalid) -PASS -webkit-appearance: continuous-capacity-level-indicator (invalid) -PASS -webkit-appearance: default-button (invalid) -PASS -webkit-appearance: discrete-capacity-level-indicator (invalid) -PASS -webkit-appearance: dualbutton (invalid) -PASS -webkit-appearance: groupbox (invalid) -PASS -webkit-appearance: image-controls-button (invalid) -PASS -webkit-appearance: inner-spin-button (invalid) -PASS -webkit-appearance: list-button (invalid) -PASS -webkit-appearance: listitem (invalid) -PASS -webkit-appearance: media-controls-background (invalid) -PASS -webkit-appearance: media-controls-dark-bar-background (invalid) -PASS -webkit-appearance: media-controls-fullscreen-background (invalid) -PASS -webkit-appearance: media-controls-light-bar-background (invalid) -PASS -webkit-appearance: media-current-time-display (invalid) -PASS -webkit-appearance: media-enter-fullscreen-button (invalid) -PASS -webkit-appearance: media-exit-fullscreen-button (invalid) -PASS -webkit-appearance: media-fullscreen-volume-slider (invalid) -PASS -webkit-appearance: media-fullscreen-volume-slider-thumb (invalid) -PASS -webkit-appearance: media-mute-button (invalid) -PASS -webkit-appearance: media-overlay-play-button (invalid) -PASS -webkit-appearance: media-play-button (invalid) -PASS -webkit-appearance: media-return-to-realtime-button (invalid) -PASS -webkit-appearance: media-rewind-button (invalid) -PASS -webkit-appearance: media-seek-back-button (invalid) -PASS -webkit-appearance: media-seek-forward-button (invalid) -PASS -webkit-appearance: media-slider (invalid) -PASS -webkit-appearance: media-sliderthumb (invalid) -PASS -webkit-appearance: media-time-remaining-display (invalid) -PASS -webkit-appearance: media-toggle-closed-captions-button (invalid) -PASS -webkit-appearance: media-volume-slider (invalid) -PASS -webkit-appearance: media-volume-slider-container (invalid) -PASS -webkit-appearance: media-volume-slider-mute-button (invalid) -PASS -webkit-appearance: media-volume-sliderthumb (invalid) -PASS -webkit-appearance: menuarrow (invalid) -PASS -webkit-appearance: menubar (invalid) -PASS -webkit-appearance: menucheckbox (invalid) -PASS -webkit-appearance: menuimage (invalid) -PASS -webkit-appearance: menuitem (invalid) -PASS -webkit-appearance: menuitemtext (invalid) -PASS -webkit-appearance: menulist-text (invalid) -PASS -webkit-appearance: menulist-textfield (invalid) -PASS -webkit-appearance: menupopup (invalid) -PASS -webkit-appearance: menuradio (invalid) -PASS -webkit-appearance: menuseparator (invalid) -PASS -webkit-appearance: meterbar (invalid) -PASS -webkit-appearance: meterchunk (invalid) -PASS -webkit-appearance: number-input (invalid) -PASS -webkit-appearance: progress-bar-value (invalid) -PASS -webkit-appearance: progressbar (invalid) -PASS -webkit-appearance: progressbar-vertical (invalid) -PASS -webkit-appearance: progresschunk (invalid) -PASS -webkit-appearance: progresschunk-vertical (invalid) -PASS -webkit-appearance: radio-container (invalid) -PASS -webkit-appearance: radio-label (invalid) -PASS -webkit-appearance: radiomenuitem (invalid) -PASS -webkit-appearance: range (invalid) -PASS -webkit-appearance: range-thumb (invalid) -PASS -webkit-appearance: rating-level-indicator (invalid) -PASS -webkit-appearance: relevancy-level-indicator (invalid) -PASS -webkit-appearance: resizer (invalid) -PASS -webkit-appearance: resizerpanel (invalid) -PASS -webkit-appearance: scale-horizontal (invalid) -PASS -webkit-appearance: scale-vertical (invalid) -PASS -webkit-appearance: scalethumb-horizontal (invalid) -PASS -webkit-appearance: scalethumb-vertical (invalid) -PASS -webkit-appearance: scalethumbend (invalid) -PASS -webkit-appearance: scalethumbstart (invalid) -PASS -webkit-appearance: scalethumbtick (invalid) -PASS -webkit-appearance: scrollbarbutton-down (invalid) -PASS -webkit-appearance: scrollbarbutton-left (invalid) -PASS -webkit-appearance: scrollbarbutton-right (invalid) -PASS -webkit-appearance: scrollbarbutton-up (invalid) -PASS -webkit-appearance: scrollbarthumb-horizontal (invalid) -PASS -webkit-appearance: scrollbarthumb-vertical (invalid) -PASS -webkit-appearance: scrollbartrack-horizontal (invalid) -PASS -webkit-appearance: scrollbartrack-vertical (invalid) -PASS -webkit-appearance: searchfield-cancel-button (invalid) -PASS -webkit-appearance: searchfield-decoration (invalid) -PASS -webkit-appearance: searchfield-results-button (invalid) -PASS -webkit-appearance: searchfield-results-decoration (invalid) -PASS -webkit-appearance: separator (invalid) -PASS -webkit-appearance: sheet (invalid) -FAIL -webkit-appearance: slider-vertical (invalid) assert_equals: style.WebkitAppearance (uppercase W) expected "" but got "slider-vertical" -PASS -webkit-appearance: sliderthumb-horizontal (invalid) -PASS -webkit-appearance: sliderthumb-vertical (invalid) -PASS -webkit-appearance: snapshotted-plugin-overlay (invalid) -PASS -webkit-appearance: spinner (invalid) -PASS -webkit-appearance: spinner-downbutton (invalid) -PASS -webkit-appearance: spinner-textfield (invalid) -PASS -webkit-appearance: spinner-upbutton (invalid) -PASS -webkit-appearance: splitter (invalid) -PASS -webkit-appearance: statusbar (invalid) -PASS -webkit-appearance: statusbarpanel (invalid) -PASS -webkit-appearance: tab (invalid) -PASS -webkit-appearance: tab-scroll-arrow-back (invalid) -PASS -webkit-appearance: tab-scroll-arrow-forward (invalid) -PASS -webkit-appearance: tabpanel (invalid) -PASS -webkit-appearance: tabpanels (invalid) -PASS -webkit-appearance: textfield-multiline (invalid) -PASS -webkit-appearance: toolbar (invalid) -PASS -webkit-appearance: toolbarbutton (invalid) -PASS -webkit-appearance: toolbarbutton-dropdown (invalid) -PASS -webkit-appearance: toolbargripper (invalid) -PASS -webkit-appearance: toolbox (invalid) -PASS -webkit-appearance: tooltip (invalid) -PASS -webkit-appearance: treeheader (invalid) -PASS -webkit-appearance: treeheadercell (invalid) -PASS -webkit-appearance: treeheadersortarrow (invalid) -PASS -webkit-appearance: treeitem (invalid) -PASS -webkit-appearance: treeline (invalid) -PASS -webkit-appearance: treetwisty (invalid) -PASS -webkit-appearance: treetwistyopen (invalid) -PASS -webkit-appearance: treeview (invalid) -PASS -webkit-appearance: -apple-pay-button (invalid) -PASS -webkit-appearance: -moz-win-borderless-glass (invalid) -PASS -webkit-appearance: -moz-win-browsertabbar-toolbox (invalid) -PASS -webkit-appearance: -moz-win-communications-toolbox (invalid) -PASS -webkit-appearance: -moz-win-communicationstext (invalid) -PASS -webkit-appearance: -moz-win-exclude-glass (invalid) -PASS -webkit-appearance: -moz-win-glass (invalid) -PASS -webkit-appearance: -moz-win-media-toolbox (invalid) -PASS -webkit-appearance: -moz-window-button-box (invalid) -PASS -webkit-appearance: -moz-window-button-box-maximized (invalid) -PASS -webkit-appearance: -moz-window-button-close (invalid) -PASS -webkit-appearance: -moz-window-button-maximize (invalid) -PASS -webkit-appearance: -moz-window-button-minimize (invalid) -PASS -webkit-appearance: -moz-window-button-restore (invalid) -PASS -webkit-appearance: -moz-window-frame-bottom (invalid) -PASS -webkit-appearance: -moz-window-frame-left (invalid) -PASS -webkit-appearance: -moz-window-frame-right (invalid) -PASS -webkit-appearance: -moz-window-titlebar (invalid) -PASS -webkit-appearance: -moz-window-titlebar-maximized (invalid) -PASS appearance: none -PASS appearance: auto -PASS appearance: button -PASS appearance: checkbox -PASS appearance: listbox -PASS appearance: menulist -PASS appearance: menulist-button -PASS appearance: meter -PASS appearance: progress-bar -PASS appearance: push-button -PASS appearance: radio -PASS appearance: searchfield -PASS appearance: slider-horizontal -PASS appearance: square-button -PASS appearance: textarea -PASS appearance: textfield -PASS appearance: bogus-button (invalid) -PASS appearance: attachment (invalid) -PASS appearance: button-bevel (invalid) -PASS appearance: borderless-attachment (invalid) -PASS appearance: button-arrow-down (invalid) -PASS appearance: button-arrow-next (invalid) -PASS appearance: button-arrow-previous (invalid) -PASS appearance: button-arrow-up (invalid) -PASS appearance: button-focus (invalid) -PASS appearance: caps-lock-indicator (invalid) -PASS appearance: caret (invalid) -PASS appearance: checkbox-container (invalid) -PASS appearance: checkbox-label (invalid) -PASS appearance: checkmenuitem (invalid) -PASS appearance: color-well (invalid) -PASS appearance: continuous-capacity-level-indicator (invalid) -PASS appearance: default-button (invalid) -PASS appearance: discrete-capacity-level-indicator (invalid) -PASS appearance: dualbutton (invalid) -PASS appearance: groupbox (invalid) -PASS appearance: image-controls-button (invalid) -PASS appearance: inner-spin-button (invalid) -PASS appearance: list-button (invalid) -PASS appearance: listitem (invalid) -PASS appearance: media-controls-background (invalid) -PASS appearance: media-controls-dark-bar-background (invalid) -PASS appearance: media-controls-fullscreen-background (invalid) -PASS appearance: media-controls-light-bar-background (invalid) -PASS appearance: media-current-time-display (invalid) -PASS appearance: media-enter-fullscreen-button (invalid) -PASS appearance: media-exit-fullscreen-button (invalid) -PASS appearance: media-fullscreen-volume-slider (invalid) -PASS appearance: media-fullscreen-volume-slider-thumb (invalid) -PASS appearance: media-mute-button (invalid) -PASS appearance: media-overlay-play-button (invalid) -PASS appearance: media-play-button (invalid) -PASS appearance: media-return-to-realtime-button (invalid) -PASS appearance: media-rewind-button (invalid) -PASS appearance: media-seek-back-button (invalid) -PASS appearance: media-seek-forward-button (invalid) -PASS appearance: media-slider (invalid) -PASS appearance: media-sliderthumb (invalid) -PASS appearance: media-time-remaining-display (invalid) -PASS appearance: media-toggle-closed-captions-button (invalid) -PASS appearance: media-volume-slider (invalid) -PASS appearance: media-volume-slider-container (invalid) -PASS appearance: media-volume-slider-mute-button (invalid) -PASS appearance: media-volume-sliderthumb (invalid) -PASS appearance: menuarrow (invalid) -PASS appearance: menubar (invalid) -PASS appearance: menucheckbox (invalid) -PASS appearance: menuimage (invalid) -PASS appearance: menuitem (invalid) -PASS appearance: menuitemtext (invalid) -PASS appearance: menulist-text (invalid) -PASS appearance: menulist-textfield (invalid) -PASS appearance: menupopup (invalid) -PASS appearance: menuradio (invalid) -PASS appearance: menuseparator (invalid) -PASS appearance: meterbar (invalid) -PASS appearance: meterchunk (invalid) -PASS appearance: number-input (invalid) -PASS appearance: progress-bar-value (invalid) -PASS appearance: progressbar (invalid) -PASS appearance: progressbar-vertical (invalid) -PASS appearance: progresschunk (invalid) -PASS appearance: progresschunk-vertical (invalid) -PASS appearance: radio-container (invalid) -PASS appearance: radio-label (invalid) -PASS appearance: radiomenuitem (invalid) -PASS appearance: range (invalid) -PASS appearance: range-thumb (invalid) -PASS appearance: rating-level-indicator (invalid) -PASS appearance: relevancy-level-indicator (invalid) -PASS appearance: resizer (invalid) -PASS appearance: resizerpanel (invalid) -PASS appearance: scale-horizontal (invalid) -PASS appearance: scale-vertical (invalid) -PASS appearance: scalethumb-horizontal (invalid) -PASS appearance: scalethumb-vertical (invalid) -PASS appearance: scalethumbend (invalid) -PASS appearance: scalethumbstart (invalid) -PASS appearance: scalethumbtick (invalid) -PASS appearance: scrollbarbutton-down (invalid) -PASS appearance: scrollbarbutton-left (invalid) -PASS appearance: scrollbarbutton-right (invalid) -PASS appearance: scrollbarbutton-up (invalid) -PASS appearance: scrollbarthumb-horizontal (invalid) -PASS appearance: scrollbarthumb-vertical (invalid) -PASS appearance: scrollbartrack-horizontal (invalid) -PASS appearance: scrollbartrack-vertical (invalid) -PASS appearance: searchfield-cancel-button (invalid) -PASS appearance: searchfield-decoration (invalid) -PASS appearance: searchfield-results-button (invalid) -PASS appearance: searchfield-results-decoration (invalid) -PASS appearance: separator (invalid) -PASS appearance: sheet (invalid) -FAIL appearance: slider-vertical (invalid) assert_equals: style.appearance expected "" but got "slider-vertical" -PASS appearance: sliderthumb-horizontal (invalid) -PASS appearance: sliderthumb-vertical (invalid) -PASS appearance: snapshotted-plugin-overlay (invalid) -PASS appearance: spinner (invalid) -PASS appearance: spinner-downbutton (invalid) -PASS appearance: spinner-textfield (invalid) -PASS appearance: spinner-upbutton (invalid) -PASS appearance: splitter (invalid) -PASS appearance: statusbar (invalid) -PASS appearance: statusbarpanel (invalid) -PASS appearance: tab (invalid) -PASS appearance: tab-scroll-arrow-back (invalid) -PASS appearance: tab-scroll-arrow-forward (invalid) -PASS appearance: tabpanel (invalid) -PASS appearance: tabpanels (invalid) -PASS appearance: textfield-multiline (invalid) -PASS appearance: toolbar (invalid) -PASS appearance: toolbarbutton (invalid) -PASS appearance: toolbarbutton-dropdown (invalid) -PASS appearance: toolbargripper (invalid) -PASS appearance: toolbox (invalid) -PASS appearance: tooltip (invalid) -PASS appearance: treeheader (invalid) -PASS appearance: treeheadercell (invalid) -PASS appearance: treeheadersortarrow (invalid) -PASS appearance: treeitem (invalid) -PASS appearance: treeline (invalid) -PASS appearance: treetwisty (invalid) -PASS appearance: treetwistyopen (invalid) -PASS appearance: treeview (invalid) -PASS appearance: -apple-pay-button (invalid) -PASS appearance: -moz-win-borderless-glass (invalid) -PASS appearance: -moz-win-browsertabbar-toolbox (invalid) -PASS appearance: -moz-win-communications-toolbox (invalid) -PASS appearance: -moz-win-communicationstext (invalid) -PASS appearance: -moz-win-exclude-glass (invalid) -PASS appearance: -moz-win-glass (invalid) -PASS appearance: -moz-win-media-toolbox (invalid) -PASS appearance: -moz-window-button-box (invalid) -PASS appearance: -moz-window-button-box-maximized (invalid) -PASS appearance: -moz-window-button-close (invalid) -PASS appearance: -moz-window-button-maximize (invalid) -PASS appearance: -moz-window-button-minimize (invalid) -PASS appearance: -moz-window-button-restore (invalid) -PASS appearance: -moz-window-frame-bottom (invalid) -PASS appearance: -moz-window-frame-left (invalid) -PASS appearance: -moz-window-frame-right (invalid) -PASS appearance: -moz-window-titlebar (invalid) -PASS appearance: -moz-window-titlebar-maximized (invalid) -PASS -ms-appearance (should not be supported) -PASS mso-appearance (should not be supported) -PASS -moz-appearance (should not be supported) -PASS -o-appearance (should not be supported) -PASS -xv-appearance (should not be supported) -PASS -atsc-appearance (should not be supported) -PASS -wap-appearance (should not be supported) -PASS -khtml-appearance (should not be supported) -PASS -konq-appearance (should not be supported) -PASS -apple-appearance (should not be supported) -PASS prince-appearance (should not be supported) -PASS -ah-appearance (should not be supported) -PASS -hp-appearance (should not be supported) -PASS -ro-appearance (should not be supported) -PASS -rim-appearance (should not be supported) -PASS -tc-appearance (should not be supported) - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-values/attr-pseudo-elem-invalidation-2-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-values/attr-pseudo-elem-invalidation-2-expected.txt deleted file mode 100644 index 39c9496ba4808..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-values/attr-pseudo-elem-invalidation-2-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -Some text -Item - -Some content - - -PASS CSS Values and Units Test: attr() invalidation of pseudo elements -PASS CSS Values and Units Test: attr() invalidation of pseudo elements 1 -PASS CSS Values and Units Test: attr() invalidation of pseudo elements 2 -PASS CSS Values and Units Test: attr() invalidation of pseudo elements 3 -PASS CSS Values and Units Test: attr() invalidation of pseudo elements 4 -FAIL CSS Values and Units Test: attr() invalidation of pseudo elements 5 assert_not_equals: Change of attribute value should lead to invalidation of ::placeholder element style. got disallowed value "16px" -FAIL CSS Values and Units Test: attr() invalidation of pseudo elements 6 assert_not_equals: Change of attribute value should lead to invalidation of ::file-selector-button element style. got disallowed value "16px" -FAIL CSS Values and Units Test: attr() invalidation of pseudo elements 7 assert_not_equals: Change of attribute value should lead to invalidation of ::details-content element style. got disallowed value "16px" -PASS CSS Values and Units Test: attr() invalidation of pseudo elements 8 - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-stuck.tentative-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-stuck.tentative-expected.txt new file mode 100644 index 0000000000000..59ea412e0e718 --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/cssom-view/scrollIntoView-stuck.tentative-expected.txt @@ -0,0 +1,4 @@ + + +FAIL CSSOM View - scrollIntoView doesn't consider scroll-padding when target is stuck assert_equals: Shouldn't have scrolled expected 2324 but got 2424 + diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/invalidation/media-loading-pseudo-classes-in-has-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/invalidation/media-loading-pseudo-classes-in-has-expected.txt deleted file mode 100644 index 5833858356a42..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/invalidation/media-loading-pseudo-classes-in-has-expected.txt +++ /dev/null @@ -1,7 +0,0 @@ - - -Harness Error (TIMEOUT), message = null - -TIMEOUT Test :has(:stalled) invalidation Test timed out -NOTRUN Test :has(:buffering) invalidation - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/media/media-loading-state-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/media/media-loading-state-expected.txt deleted file mode 100644 index 1d8b0e7251efe..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/media/media-loading-state-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ - - -Harness Error (TIMEOUT), message = null - -PASS Test :pseudo-class syntax is supported without throwing a SyntaxError -TIMEOUT Test :stalled pseudo-class Test timed out -NOTRUN Test :buffering pseudo-class - diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-20-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-20-expected.txt new file mode 100644 index 0000000000000..ea2a3dbe518fd --- /dev/null +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-20-expected.txt @@ -0,0 +1,5 @@ +The background color of anchors in this page should turn to green when they have the focus. + + +PASS Verify :focus matches focused elements + diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt similarity index 100% rename from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt rename to LayoutTests/platform/glib/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/dom/nodes/moveBefore/focus-preserve-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/dom/nodes/moveBefore/focus-preserve-expected.txt index d116319c39e9d..b7d92f90f2740 100644 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/dom/nodes/moveBefore/focus-preserve-expected.txt +++ b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/dom/nodes/moveBefore/focus-preserve-expected.txt @@ -1,7 +1,7 @@ Button -FAIL when reparenting an element, don't automatically reset the document focus new_parent.moveBefore is not a function. (In 'new_parent.moveBefore(button, null)', 'new_parent.moveBefore' is undefined) -FAIL when reparenting a focused element into an inert parent, reset the document focus promise_test: Unhandled rejection with value: object "TypeError: inert_parent.moveBefore is not a function. (In 'inert_parent.moveBefore(button, null)', 'inert_parent.moveBefore' is undefined)" -FAIL when reparenting a focused element into a hidden parent, reset the document focus promise_test: Unhandled rejection with value: object "TypeError: hidden_parent.moveBefore is not a function. (In 'hidden_parent.moveBefore(button, null)', 'hidden_parent.moveBefore' is undefined)" -FAIL when reparenting an ancestor of an focused element into a hidden parent, reset the document focus promise_test: Unhandled rejection with value: object "TypeError: hidden_parent.moveBefore is not a function. (In 'hidden_parent.moveBefore(old_parent, null)', 'hidden_parent.moveBefore' is undefined)" +PASS when reparenting an element, don't automatically reset the document focus +PASS when reparenting a focused element into an inert parent, reset the document focus +PASS when reparenting a focused element into a hidden parent, reset the document focus +FAIL when reparenting an ancestor of an focused element into a hidden parent, reset the document focus promise_test: Unhandled rejection with value: undefined diff --git a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative-expected.txt b/LayoutTests/platform/glib/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative-expected.txt deleted file mode 100644 index 1445c52a6753b..0000000000000 --- a/LayoutTests/platform/glib/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative-expected.txt +++ /dev/null @@ -1,1559 +0,0 @@ -Here is Text: - -PASS In , execCommand("getHTML", false, null), a[b]c): The command should not be supported -PASS In , execCommand("getHTML", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("bold", false, bold), a[b]c): The command should be supported -PASS In , execCommand("bold", false, bold), a[b]c): The command should not be enabled -PASS In , execCommand("bold", false, bold), a[b]c): execCommand() should return false -PASS In , execCommand("bold", false, bold), a[b]c): .value should be "a[b]c" -PASS In , execCommand("bold", false, bold), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("bold", false, bold), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("bold", false, bold), a[b]c): input.inputType should be undefined -PASS In , execCommand("bold", false, bold), a[b]c): input.target should be undefined -PASS In , execCommand("italic", false, null), a[b]c): The command should be supported -PASS In , execCommand("italic", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("italic", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("italic", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("italic", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("italic", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("italic", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("italic", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("underline", false, null), a[b]c): The command should be supported -PASS In , execCommand("underline", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("underline", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("underline", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("underline", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("underline", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("underline", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("underline", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): The command should be supported -PASS In , execCommand("strikethrough", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("strikethrough", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("strikethrough", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("strikethrough", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): The command should be supported -PASS In , execCommand("superscript", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("superscript", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("superscript", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("superscript", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("cut", false, null), ab[]c): The command should be supported -PASS In , execCommand("cut", false, null), ab[]c): The command should not be enabled -PASS In , execCommand("cut", false, null), ab[]c): execCommand() should return false -PASS In , execCommand("cut", false, null), ab[]c): .value should be "ab[]c" -PASS In , execCommand("cut", false, null), ab[]c): beforeinput.inputType should be undefined -PASS In , execCommand("cut", false, null), ab[]c): beforeinput.target should be undefined -PASS In , execCommand("cut", false, null), ab[]c): input.inputType should be undefined -PASS In , execCommand("cut", false, null), ab[]c): input.target should be undefined -PASS In , execCommand("cut", false, null), a[b]c): The command should be supported -PASS In , execCommand("cut", false, null), a[b]c): The command should be enabled -PASS In , execCommand("cut", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("cut", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("cut", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteByCut" -FAIL In , execCommand("cut", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("cut", false, null), a[b]c): input.inputType should be deleteByCut -PASS In , execCommand("cut", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("copy", false, null), abc[]d): The command should be supported -PASS In , execCommand("copy", false, null), abc[]d): The command should not be enabled -PASS In , execCommand("copy", false, null), abc[]d): execCommand() should return false -PASS In , execCommand("copy", false, null), abc[]d): .value should be "abc[]d" -PASS In , execCommand("copy", false, null), abc[]d): beforeinput.inputType should be undefined -PASS In , execCommand("copy", false, null), abc[]d): beforeinput.target should be undefined -PASS In , execCommand("copy", false, null), abc[]d): input.inputType should be undefined -PASS In , execCommand("copy", false, null), abc[]d): input.target should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): The command should be supported -PASS In , execCommand("copy", false, null), a[bc]d): The command should be enabled -PASS In , execCommand("copy", false, null), a[bc]d): execCommand() should return true -PASS In , execCommand("copy", false, null), a[bc]d): .value should be "a[bc]d" -PASS In , execCommand("copy", false, null), a[bc]d): beforeinput.inputType should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): beforeinput.target should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): input.inputType should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): input.target should be undefined -PASS In , execCommand("paste", false, null), a[]c): The command should be supported -PASS In , execCommand("paste", false, null), a[]c): The command should be enabled -PASS In , execCommand("paste", false, null), a[]c): execCommand() should return true -FAIL In , execCommand("paste", false, null), a[]c): .value should be "a[bc]c" assert_equals: expected "a[bc]c" but got "abc[]c" -FAIL In , execCommand("paste", false, null), a[]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertFromPaste" -FAIL In , execCommand("paste", false, null), a[]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("paste", false, null), a[]c): input.inputType should be insertFromPaste -PASS In , execCommand("paste", false, null), a[]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("delete", false, null), ab[]c): The command should be supported -PASS In , execCommand("delete", false, null), ab[]c): The command should be enabled -PASS In , execCommand("delete", false, null), ab[]c): execCommand() should return true -PASS In , execCommand("delete", false, null), ab[]c): .value should be "a[]c" -FAIL In , execCommand("delete", false, null), ab[]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentBackward" -FAIL In , execCommand("delete", false, null), ab[]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("delete", false, null), ab[]c): input.inputType should be deleteContentBackward -PASS In , execCommand("delete", false, null), ab[]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("delete", false, null), a[b]c): The command should be supported -PASS In , execCommand("delete", false, null), a[b]c): The command should be enabled -PASS In , execCommand("delete", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("delete", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("delete", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentBackward" -FAIL In , execCommand("delete", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("delete", false, null), a[b]c): input.inputType should be deleteContentBackward -PASS In , execCommand("delete", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("forwarddelete", false, null), a[b]c): The command should be supported -PASS In , execCommand("forwarddelete", false, null), a[b]c): The command should be enabled -PASS In , execCommand("forwarddelete", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("forwarddelete", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("forwarddelete", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentForward" -FAIL In , execCommand("forwarddelete", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("forwarddelete", false, null), a[b]c): input.inputType should be deleteContentForward -PASS In , execCommand("forwarddelete", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("forwarddelete", false, null), a[]bc): The command should be supported -PASS In , execCommand("forwarddelete", false, null), a[]bc): The command should be enabled -PASS In , execCommand("forwarddelete", false, null), a[]bc): execCommand() should return true -PASS In , execCommand("forwarddelete", false, null), a[]bc): .value should be "a[]c" -FAIL In , execCommand("forwarddelete", false, null), a[]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentForward" -FAIL In , execCommand("forwarddelete", false, null), a[]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("forwarddelete", false, null), a[]bc): input.inputType should be deleteContentForward -PASS In , execCommand("forwarddelete", false, null), a[]bc): input.target should be [object HTMLInputElement] -PASS In , execCommand("selectall", false, null), a[b]c): The command should be supported -PASS In , execCommand("selectall", false, null), a[b]c): The command should be enabled -PASS In , execCommand("selectall", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("selectall", false, null), a[b]c): .value should be "[abc]" -PASS In , execCommand("selectall", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("selectall", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("selectall", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("selectall", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("undo", false, null), [a]bc): The command should be supported -FAIL In , execCommand("undo", false, null), [a]bc): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("undo", false, null), [a]bc): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("undo", false, null), [a]bc): .value should be "[a]bc" -FAIL In , execCommand("undo", false, null), [a]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In , execCommand("undo", false, null), [a]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In , execCommand("undo", false, null), [a]bc): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In , execCommand("undo", false, null), [a]bc): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("undo", false, null), a[b]c): The command should be supported -PASS In , execCommand("undo", false, null), a[b]c): The command should be enabled -PASS In , execCommand("undo", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("undo", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("undo", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In , execCommand("undo", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("undo", false, null), a[b]c): input.inputType should be historyUndo -PASS In , execCommand("undo", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("redo", false, null), [a]bc): The command should be supported -FAIL In , execCommand("redo", false, null), [a]bc): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("redo", false, null), [a]bc): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("redo", false, null), [a]bc): .value should be "[a]bc" -FAIL In , execCommand("redo", false, null), [a]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In , execCommand("redo", false, null), [a]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In , execCommand("redo", false, null), [a]bc): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In , execCommand("redo", false, null), [a]bc): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("redo", false, null), a[b]c): The command should be supported -PASS In , execCommand("redo", false, null), a[b]c): The command should be enabled -PASS In , execCommand("redo", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("redo", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("redo", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In , execCommand("redo", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("redo", false, null), a[b]c): input.inputType should be historyRedo -PASS In , execCommand("redo", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("indent", false, null), a[b]c): The command should be supported -PASS In , execCommand("indent", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("indent", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("indent", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("indent", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("indent", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("indent", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("indent", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): The command should be supported -PASS In , execCommand("outdent", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("outdent", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("outdent", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("outdent", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): The command should be supported -PASS In , execCommand("backcolor", false, #000000), a[b]c): The command should not be enabled -PASS In , execCommand("backcolor", false, #000000), a[b]c): execCommand() should return false -PASS In , execCommand("backcolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In , execCommand("backcolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): input.target should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): The command should be supported -PASS In , execCommand("forecolor", false, #000000), a[b]c): The command should not be enabled -PASS In , execCommand("forecolor", false, #000000), a[b]c): execCommand() should return false -PASS In , execCommand("forecolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In , execCommand("forecolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): input.target should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): The command should be supported -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): The command should not be enabled -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): execCommand() should return false -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): input.target should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): The command should be supported -PASS In , execCommand("fontname", false, DummyFont), a[b]c): The command should not be enabled -PASS In , execCommand("fontname", false, DummyFont), a[b]c): execCommand() should return false -PASS In , execCommand("fontname", false, DummyFont), a[b]c): .value should be "a[b]c" -PASS In , execCommand("fontname", false, DummyFont), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): input.inputType should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): input.target should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): The command should be supported -PASS In , execCommand("fontsize", false, 5), a[b]c): The command should not be enabled -PASS In , execCommand("fontsize", false, 5), a[b]c): execCommand() should return false -PASS In , execCommand("fontsize", false, 5), a[b]c): .value should be "a[b]c" -PASS In , execCommand("fontsize", false, 5), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): input.inputType should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): input.target should be undefined -PASS In , execCommand("increasefontsize", false, null), a[b]c): The command should not be supported -PASS In , execCommand("increasefontsize", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("decreasefontsize", false, null), a[b]c): The command should not be supported -PASS In , execCommand("decreasefontsize", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): The command should be supported -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): The command should be supported -PASS In , execCommand("createlink", false, foo.html), a[b]c): The command should not be enabled -PASS In , execCommand("createlink", false, foo.html), a[b]c): execCommand() should return false -PASS In , execCommand("createlink", false, foo.html), a[b]c): .value should be "a[b]c" -PASS In , execCommand("createlink", false, foo.html), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): input.inputType should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): input.target should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): The command should be supported -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): The command should not be enabled -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): execCommand() should return false -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): .value should be "a[b]c" -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): input.target should be undefined -PASS In , execCommand("inserthtml", false, inserted), a[b]c): The command should be supported -PASS In , execCommand("inserthtml", false, inserted), a[b]c): The command should be enabled -PASS In , execCommand("inserthtml", false, inserted), a[b]c): execCommand() should return true -PASS In , execCommand("inserthtml", false, inserted), a[b]c): .value should be "ainserted[]c" -FAIL In , execCommand("inserthtml", false, inserted), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In , execCommand("inserthtml", false, inserted), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("inserthtml", false, inserted), a[b]c): input.inputType should be insertText -PASS In , execCommand("inserthtml", false, inserted), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): The command should be supported -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): The command should be enabled -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): execCommand() should return true -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): .value should be "a**inserted**[]c" -FAIL In , execCommand("inserttext", false, **inserted**), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In , execCommand("inserttext", false, **inserted**), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): input.inputType should be insertText -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("justifyleft", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifyleft", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifyleft", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifyleft", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifyleft", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifyleft", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifyleft", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifyleft", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifyright", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifyright", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifyright", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifyright", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifycenter", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifycenter", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifycenter", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifycenter", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifyfull", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifyfull", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifyfull", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifyfull", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("removeformat", false, null), a[b]c): The command should be supported -FAIL In , execCommand("removeformat", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("removeformat", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("removeformat", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("removeformat", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "" -FAIL In , execCommand("removeformat", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In , execCommand("removeformat", false, null), a[b]c): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "" -FAIL In , execCommand("removeformat", false, null), a[b]c): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("unlink", false, null), a[b]c): The command should be supported -PASS In , execCommand("unlink", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("unlink", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("unlink", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("unlink", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("unlink", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("unlink", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("unlink", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): The command should be supported -PASS In , execCommand("insertorderedlist", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("insertorderedlist", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("insertorderedlist", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("insertorderedlist", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): The command should be supported -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertparagraph", false, null), a[b]c): The command should be supported -FAIL In , execCommand("insertparagraph", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("insertparagraph", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("insertparagraph", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("insertparagraph", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertParagraph" -FAIL In , execCommand("insertparagraph", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("insertparagraph", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertparagraph", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertlinebreak", false, null), a[b]c): The command should be supported -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("insertlinebreak", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertLineBreak" -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("insertlinebreak", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertlinebreak", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): The command should be supported -PASS In , execCommand("formatblock", false, div), a[b]c): The command should not be enabled -PASS In , execCommand("formatblock", false, div), a[b]c): execCommand() should return false -PASS In , execCommand("formatblock", false, div), a[b]c): .value should be "a[b]c" -PASS In , execCommand("formatblock", false, div), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): input.inputType should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): input.target should be undefined -PASS In , execCommand("heading", false, h1), a[b]c): The command should not be supported -PASS In , execCommand("heading", false, h1), a[b]c): The command should not be enabled -PASS In , execCommand("styleWithCSS", false, true), a[b]c): The command should be supported -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("styleWithCSS", false, true), a[b]c): .value should be "a[b]c" -PASS In , execCommand("styleWithCSS", false, true), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, true), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("styleWithCSS", false, true), a[b]c): input.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, true), a[b]c): input.target should be undefined -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): styleWithCSS state should be false when has focus assert_equals: expected false but got true -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): styleWithCSS state should be false when does not have focus assert_equals: expected false but got true -PASS In , execCommand("styleWithCSS", false, false), a[b]c): The command should be supported -FAIL In , execCommand("styleWithCSS", false, false), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("styleWithCSS", false, false), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("styleWithCSS", false, false), a[b]c): .value should be "a[b]c" -PASS In , execCommand("styleWithCSS", false, false), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): input.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): input.target should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): styleWithCSS state should be false when has focus -PASS In , execCommand("styleWithCSS", false, false), a[b]c): styleWithCSS state should be false when does not have focus -PASS In , execCommand("contentReadOnly", false, true), a[b]c): The command should not be supported -PASS In , execCommand("contentReadOnly", false, true), a[b]c): The command should not be enabled -PASS In , execCommand("contentReadOnly", false, false), a[b]c): The command should not be supported -PASS In , execCommand("contentReadOnly", false, false), a[b]c): The command should not be enabled -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): The command should be supported -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): .value should be "a[b]c" -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): input.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): input.target should be undefined -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): defaultParagraphSeparator value should be "p" when has focus assert_equals: expected "div" but got "p" -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): defaultParagraphSeparator value should be "p" when does not have focus assert_equals: expected "div" but got "p" -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): The command should be supported -FAIL In , execCommand("defaultParagraphSeparator", false, div), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("defaultParagraphSeparator", false, div), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): .value should be "a[b]c" -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): input.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): input.target should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): defaultParagraphSeparator value should be "div" when has focus -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): defaultParagraphSeparator value should be "div" when does not have focus -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In - AXRole: AXTextField - computedRoleString: textbox - - - AXRole: AXImageMap - - - AXRole: AXListItem - computedRoleString: listitem - - - AXRole: AXButton - computedRoleString: button - - - AXRole: AXLabel - - - AXRole: AXCanvas - - - AXRole: AXCanvas - - - AXRole: AXButton - computedRoleString: button - - - AXRole: AXCheckBox - computedRoleString: checkbox - - - AXRole: AXRadioButton - computedRoleString: radio - - - AXRole: AXButton - computedRoleString: button - - - AXRole: AXToggleButton - computedRoleString: button - - - AXRole: AXTextField - computedRoleString: textbox - - - AXRole: AXTextField - computedRoleString: textbox - - - AXRole: AXSlider - computedRoleString: slider - - - AXRole: AXTextField - computedRoleString: searchbox - - - AXRole: AXHeading - computedRoleString: heading - - - AXRole: AXDeletion - computedRoleString: deletion - - - AXRole: AXInsertion - computedRoleString: insertion - - - AXRole: AXSubscript - computedRoleString: subscript - - - AXRole: AXSuperscript - computedRoleString: superscript - - - AXRole: AXSection - computedRoleString: code - - - AXRole: AXDescriptionTerm - computedRoleString: term - - - AXRole: AXDescriptionValue - computedRoleString: definition - - - AXRole: AXDescriptionList - - - AXRole: AXGroup - computedRoleString: group - - - AXRole: AXGroup - computedRoleString: group - - - AXRole: AXGroup - computedRoleString: figure - - - AXRole: AXParagraph - computedRoleString: paragraph - - - AXRole: AXLabel - - - AXRole: AXDescriptionTerm - computedRoleString: term - - - AXRole: AXSection - computedRoleString: generic - - - AXRole: AXForm - computedRoleString: form - - - AXRole: AXArticle - computedRoleString: article - -
    - AXRole: AXLandmarkMain - computedRoleString: main - - - AXRole: AXLandmarkNavigation - computedRoleString: navigation - - - AXRole: AXLandmarkComplementary - computedRoleString: complementary - - - AXRole: AXLandmarkRegion - computedRoleString: region - - - AXRole: AXSection - - - AXRole: AXBlockquote - computedRoleString: blockquote - - - - computedRoleString: mark - - - AXRole: AXSection - - - AXRole: AXUnknown - computedRoleString: group - - - AXRole: AXUnknown - - - AXRole: AXStatusBar - computedRoleString: status - - - AXRole: AXGroup - computedRoleString: group - - - AXRole: AXSeparator - computedRoleString: separator - - - AXRole: AXStatic - computedRoleString: time - - -PASS successfullyParsed is true - -TEST COMPLETE - - - diff --git a/LayoutTests/platform/wpe/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png b/LayoutTests/platform/wpe/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png deleted file mode 100644 index bd0767ced4f17..0000000000000 Binary files a/LayoutTests/platform/wpe/compositing/repaint/invalidations-on-composited-layers-with-subpixel-positions-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/compositing/rtl/rtl-overflow-scrolling-expected.txt b/LayoutTests/platform/wpe/compositing/rtl/rtl-overflow-scrolling-expected.txt new file mode 100644 index 0000000000000..6b692b3a5991b --- /dev/null +++ b/LayoutTests/platform/wpe/compositing/rtl/rtl-overflow-scrolling-expected.txt @@ -0,0 +1,8 @@ +layer at (0,0) size 800x600 + RenderView at (0,0) size 800x600 +layer at (0,0) size 800x600 + RenderBlock {HTML} at (0,0) size 800x600 + RenderBody {BODY} at (8,8) size 784x584 +layer at (8,8) size 300x300 clip at (23,8) size 285x285 scrollWidth 1000 scrollHeight 1000 + RenderBlock {DIV} at (0,0) size 300x300 + RenderBlock {DIV} at (-700,0) size 1000x1000 [bgcolor=#008000] diff --git a/LayoutTests/platform/wpe/compositing/tile-coverage-subpixel-empty-rect-expected.txt b/LayoutTests/platform/wpe/compositing/tile-coverage-subpixel-empty-rect-expected.txt new file mode 100644 index 0000000000000..fd28fdda0a009 --- /dev/null +++ b/LayoutTests/platform/wpe/compositing/tile-coverage-subpixel-empty-rect-expected.txt @@ -0,0 +1,35 @@ +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 3001.00 5100.00) + (children 1 + (GraphicsLayer + (bounds 3001.00 5100.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 1.00 2000.00) + (bounds 3000.00 3100.00) + (children 1 + (GraphicsLayer + (position -1.00 0.00) + (anchor 0.50 0.50) + (bounds 3001.00 3101.00) + (drawsContent 1) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-1.00 0.00 0.00 1.00]) + (children 1 + (GraphicsLayer + (position 0.00 3000.00) + (anchor 0.50 0.50) + (bounds 101.00 101.00) + (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 1.00 1.00]) + ) + ) + ) + ) + ) + ) + ) + ) +) +Offscreen, but large, content + diff --git a/LayoutTests/platform/wpe/compositing/tiling/tiled-layers-limit-contents-scale-expected.txt b/LayoutTests/platform/wpe/compositing/tiling/tiled-layers-limit-contents-scale-expected.txt new file mode 100644 index 0000000000000..43930081e8ac9 --- /dev/null +++ b/LayoutTests/platform/wpe/compositing/tiling/tiled-layers-limit-contents-scale-expected.txt @@ -0,0 +1,21 @@ +Layer with backing store +(GraphicsLayer + (anchor 0.00 0.00) + (bounds 785.00 10243.00) + (children 1 + (GraphicsLayer + (bounds 785.00 10243.00) + (contentsOpaque 1) + (children 1 + (GraphicsLayer + (position 18.00 10.00) + (anchor 0.00 0.00) + (bounds 10220.00 10220.00) + (drawsContent 1) + (transform [0.05 0.00 0.00 0.00] [0.00 0.05 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00]) + ) + ) + ) + ) +) + diff --git a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-default-value-expected.png b/LayoutTests/platform/wpe/css3/blending/background-blend-mode-default-value-expected.png deleted file mode 100644 index 7653269754139..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-default-value-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-different-image-formats-expected.png b/LayoutTests/platform/wpe/css3/blending/background-blend-mode-different-image-formats-expected.png deleted file mode 100644 index d6e864b195302..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-different-image-formats-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-gif-color-2-expected.png b/LayoutTests/platform/wpe/css3/blending/background-blend-mode-gif-color-2-expected.png deleted file mode 100644 index f5883da172425..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-gif-color-2-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-gif-color-expected.png b/LayoutTests/platform/wpe/css3/blending/background-blend-mode-gif-color-expected.png deleted file mode 100644 index 23dd86083e201..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-gif-color-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-single-layer-no-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/background-blend-mode-single-layer-no-blending-expected.png deleted file mode 100644 index 457e0220979e0..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/background-blend-mode-single-layer-no-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-background-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-background-expected.png deleted file mode 100644 index e40d42191aad4..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-background-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png deleted file mode 100644 index b5b9aca2e840c..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png deleted file mode 100644 index 7b8e815e09dc3..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-append-stacking-context-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png deleted file mode 100644 index d9d56ed55251e..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png deleted file mode 100644 index d9d56ed55251e..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png deleted file mode 100644 index e7ba910b369e2..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png deleted file mode 100644 index 011305eac4542..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png deleted file mode 100644 index 8804387fb35fc..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-off-stacking-context-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png deleted file mode 100644 index 18d7d213ca743..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-blending-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png b/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png deleted file mode 100644 index e7ba910b369e2..0000000000000 Binary files a/LayoutTests/platform/wpe/css3/blending/blend-mode-isolation-flags-turn-on-stacking-context-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/editing/selection/doubleclick-crash-expected.txt b/LayoutTests/platform/wpe/editing/selection/doubleclick-crash-expected.txt deleted file mode 100644 index 03544637ea2c8..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/doubleclick-crash-expected.txt +++ /dev/null @@ -1,20 +0,0 @@ -EDITING DELEGATE: shouldChangeSelectedDOMRange:(null) toDOMRange:range from 5 of #text > PRE > BODY > HTML > #document to 5 of #text > PRE > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 5 of #text > PRE > BODY > HTML > #document to 5 of #text > PRE > BODY > HTML > #document toDOMRange:range from 5 of #text > PRE > BODY > HTML > #document to 6 of #text > PRE > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x587 - RenderBlock {PRE} at (0,0) size 800x75 - RenderText {#text} at (0,0) size 40x75 - text run at (0,0) width 40: "Test." - text run at (40,0) width 0: " " - text run at (0,15) width 40: "Test." - text run at (40,15) width 0: " " - text run at (0,30) width 0: " " - text run at (0,45) width 0: " " - text run at (0,60) width 0: " " -selection start: position 5 of child 0 {#text} of child 1 {PRE} of body -selection end: position 6 of child 0 {#text} of child 1 {PRE} of body diff --git a/LayoutTests/platform/wpe/editing/selection/extend-inside-transforms-backward-expected.txt b/LayoutTests/platform/wpe/editing/selection/extend-inside-transforms-backward-expected.txt deleted file mode 100644 index 421d8475d6a19..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/extend-inside-transforms-backward-expected.txt +++ /dev/null @@ -1,15 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x216 - RenderBlock {HTML} at (0,0) size 800x216 - RenderBody {BODY} at (8,8) size 784x200 -layer at (8,8) size 200x200 - RenderBlock {DIV} at (0,0) size 200x200 - RenderBlock {P} at (0,0) size 200x57 - RenderText {#text} at (0,0) size 150x57 - text run at (0,0) width 150: "hello" - RenderBlock {P} at (0,57) size 200x57 - RenderText {#text} at (0,0) size 150x57 - text run at (0,0) width 150: "world" -selection start: position 3 of child 0 {#text} of child 1 {P} of child 1 {DIV} of body -selection end: position 3 of child 0 {#text} of child 3 {P} of child 1 {DIV} of body diff --git a/LayoutTests/platform/wpe/editing/selection/extend-inside-transforms-forward-expected.txt b/LayoutTests/platform/wpe/editing/selection/extend-inside-transforms-forward-expected.txt deleted file mode 100644 index 8317d83f2d1ca..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/extend-inside-transforms-forward-expected.txt +++ /dev/null @@ -1,15 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x216 - RenderBlock {HTML} at (0,0) size 800x216 - RenderBody {BODY} at (8,8) size 784x200 -layer at (8,8) size 200x200 - RenderBlock {DIV} at (0,0) size 200x200 - RenderBlock {P} at (0,0) size 200x57 - RenderText {#text} at (0,0) size 150x57 - text run at (0,0) width 150: "hello" - RenderBlock {P} at (0,57) size 200x57 - RenderText {#text} at (0,0) size 150x57 - text run at (0,0) width 150: "world" -selection start: position 2 of child 0 {#text} of child 1 {P} of child 1 {DIV} of body -selection end: position 2 of child 0 {#text} of child 3 {P} of child 1 {DIV} of body diff --git a/LayoutTests/platform/wpe/editing/selection/select-all-001-expected.txt b/LayoutTests/platform/wpe/editing/selection/select-all-001-expected.txt deleted file mode 100644 index 6806d7d1b4185..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/select-all-001-expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document -EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 737 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -layer at (0,0) size 820x900 - RenderView at (0,0) size 785x585 -layer at (0,0) size 785x900 - RenderBlock {HTML} at (0,0) size 785x900 - RenderBody {BODY} at (8,64) size 769x772 - RenderBlock {DIV} at (64,0) size 748x772 [border: (50px solid #FF0000)] - RenderBlock {DIV} at (74,74) size 600x624 - RenderText {#text} at (0,11) size 604x602 - text run at (0,11) width 558: "Four score and seven years ago our fathers brought forth, " - text run at (0,59) width 588: "upon this continent, a new nation, conceived in Liberty, and " - text run at (0,107) width 577: "dedicated to the proposition that all men are created equal. " - text run at (0,155) width 602: "Now we are engaged in a great civil war, testing whether that " - text run at (0,203) width 565: "nation, or any nation, so conceived, and so dedicated, can " - text run at (0,251) width 570: "long endure. We are met here on a great battlefield of that " - text run at (0,299) width 542: "war. We have come to dedicate a portion of it as a final " - text run at (0,347) width 557: "resting place for those who here gave their lives that that " - text run at (0,395) width 579: "nation might live. It is altogether fitting and proper that we " - text run at (0,443) width 565: "should do this. Four score and seven years ago our fathers " - text run at (0,491) width 604: "brought forth, upon this continent, a new nation, conceived in " - text run at (0,539) width 559: "Liberty, and dedicated to the proposition that all men are " - text run at (0,587) width 136: "created equal." -selection start: position 1 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of body -selection end: position 737 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of body diff --git a/LayoutTests/platform/wpe/editing/selection/select-all-002-expected.txt b/LayoutTests/platform/wpe/editing/selection/select-all-002-expected.txt deleted file mode 100644 index 827f58a1f76c9..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/select-all-002-expected.txt +++ /dev/null @@ -1,34 +0,0 @@ -EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document -EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > DIV > DIV > BODY > HTML > #document to 180 of #text > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -layer at (0,0) size 820x900 - RenderView at (0,0) size 785x585 -layer at (0,0) size 785x900 - RenderBlock {HTML} at (0,0) size 785x900 - RenderBody {BODY} at (8,64) size 769x772 - RenderBlock {DIV} at (64,0) size 748x772 [border: (50px solid #FF0000)] - RenderBlock {DIV} at (74,74) size 600x624 - RenderText {#text} at (0,11) size 588x122 - text run at (0,11) width 558: "Four score and seven years ago our fathers brought forth, " - text run at (0,59) width 588: "upon this continent, a new nation, conceived in Liberty, and " - text run at (0,107) width 399: "dedicated to the proposition that all men " - RenderBR {BR} at (399,107) size 0x26 - RenderText {#text} at (0,155) size 590x122 - text run at (0,155) width 582: "are created equal. Now we are engaged in a great civil war, " - text run at (0,203) width 590: "testing whether that nation, or any nation, so conceived, and " - text run at (0,251) width 568: "so dedicated, can long endure. We are met here on a great " - RenderBR {BR} at (567,251) size 1x26 - RenderText {#text} at (0,299) size 603x170 - text run at (0,299) width 603: "battlefield of that war. We have come to dedicate a portion of " - text run at (0,347) width 585: "it as a final resting place for those who here gave their lives " - text run at (0,395) width 588: "that that nation might live. It is altogether fitting and proper " - text run at (0,443) width 224: "that we should do this. " - RenderBR {BR} at (224,443) size 0x26 - RenderText {#text} at (0,491) size 588x122 - text run at (0,491) width 558: "Four score and seven years ago our fathers brought forth, " - text run at (0,539) width 588: "upon this continent, a new nation, conceived in Liberty, and " - text run at (0,587) width 571: "dedicated to the proposition that all men are created equal." -selection start: position 1 of child 0 {#text} of child 1 {DIV} of child 1 {DIV} of body -selection end: position 180 of child 6 {#text} of child 1 {DIV} of child 1 {DIV} of body diff --git a/LayoutTests/platform/wpe/editing/selection/select-all-003-expected.txt b/LayoutTests/platform/wpe/editing/selection/select-all-003-expected.txt deleted file mode 100644 index 08d7c9b9e7683..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/select-all-003-expected.txt +++ /dev/null @@ -1,32 +0,0 @@ -EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of BODY > HTML > #document to 12 of BODY > HTML > #document -EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 6 of BODY > HTML > #document to 6 of BODY > HTML > #document toDOMRange:range from 1 of BODY > HTML > #document to 6 of BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -layer at (0,0) size 812x1044 - RenderView at (0,0) size 785x585 -layer at (0,0) size 785x1044 - RenderBlock {HTML} at (0,0) size 785x1044 - RenderBody {BODY} at (64,64) size 748x916 [border: (50px solid #FF0000)] - RenderBlock (anonymous) at (74,74) size 600x768 - RenderBR {BR} at (0,11) size 0x26 - RenderBR {BR} at (0,59) size 0x26 - RenderText {#text} at (0,107) size 604x602 - text run at (0,107) width 558: "Four score and seven years ago our fathers brought forth, " - text run at (0,155) width 588: "upon this continent, a new nation, conceived in Liberty, and " - text run at (0,203) width 577: "dedicated to the proposition that all men are created equal. " - text run at (0,251) width 602: "Now we are engaged in a great civil war, testing whether that " - text run at (0,299) width 565: "nation, or any nation, so conceived, and so dedicated, can " - text run at (0,347) width 570: "long endure. We are met here on a great battlefield of that " - text run at (0,395) width 542: "war. We have come to dedicate a portion of it as a final " - text run at (0,443) width 557: "resting place for those who here gave their lives that that " - text run at (0,491) width 579: "nation might live. It is altogether fitting and proper that we " - text run at (0,539) width 565: "should do this. Four score and seven years ago our fathers " - text run at (0,587) width 604: "brought forth, upon this continent, a new nation, conceived in " - text run at (0,635) width 559: "Liberty, and dedicated to the proposition that all men are " - text run at (0,683) width 142: "created equal. " - RenderBR {BR} at (142,683) size 0x26 - RenderBR {BR} at (0,731) size 0x26 - RenderBlock {DIV} at (74,842) size 600x0 -selection start: position 0 of child 1 {BR} of body -selection end: position 1 of child 5 {BR} of body diff --git a/LayoutTests/platform/wpe/editing/selection/select-all-004-expected.txt b/LayoutTests/platform/wpe/editing/selection/select-all-004-expected.txt deleted file mode 100644 index aa027a4551748..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/select-all-004-expected.txt +++ /dev/null @@ -1,22 +0,0 @@ -EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of BODY > HTML > #document to 8 of BODY > HTML > #document -EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of #text > BODY > HTML > #document to 0 of #text > BODY > HTML > #document toDOMRange:range from 1 of #text > BODY > HTML > #document to 5 of BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -layer at (0,0) size 812x585 - RenderView at (0,0) size 800x585 -layer at (0,0) size 800x585 - RenderBlock {HTML} at (0,0) size 800x585 - RenderBody {BODY} at (64,64) size 748x457 [border: (50px solid #FF0000)] - RenderBlock {DIV} at (74,74) size 600x0 - RenderBlock (anonymous) at (74,74) size 600x48 - RenderText {#text} at (0,11) size 54x26 - text run at (0,11) width 54: "Hello" - RenderTable {TABLE} at (74,122) size 6x24 - RenderTableSection {TBODY} at (0,0) size 6x24 - RenderTableRow {TR} at (0,2) size 6x20 - RenderTableCell {TD} at (2,2) size 2x20 [r=0 c=0 rs=1 cs=1] - RenderBlock (anonymous) at (74,146) size 600x48 - RenderBR {BR} at (0,11) size 0x26 -selection start: position 1 of child 2 {#text} of body -selection end: position 0 of child 5 {BR} of body diff --git a/LayoutTests/platform/wpe/editing/selection/simple-line-layout-caret-is-gone-expected.txt b/LayoutTests/platform/wpe/editing/selection/simple-line-layout-caret-is-gone-expected.txt deleted file mode 100644 index 87dfbb000afb2..0000000000000 --- a/LayoutTests/platform/wpe/editing/selection/simple-line-layout-caret-is-gone-expected.txt +++ /dev/null @@ -1 +0,0 @@ -36 0 1 17 diff --git a/LayoutTests/platform/wpe/editing/spelling/spelling-expected.txt b/LayoutTests/platform/wpe/editing/spelling/spelling-expected.txt deleted file mode 100644 index 89457c22b6e95..0000000000000 --- a/LayoutTests/platform/wpe/editing/spelling/spelling-expected.txt +++ /dev/null @@ -1,38 +0,0 @@ -EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV > BODY > HTML > #document to 3 of DIV > BODY > HTML > #document -EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > BODY > HTML > #document to 0 of DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > BODY > HTML > #document toDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 0 of DIV > DIV > BODY > HTML > #document to 0 of DIV > DIV > BODY > HTML > #document toDOMRange:range from 1 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 1 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 1 of #text > SPAN > DIV > DIV > BODY > HTML > #document toDOMRange:range from 2 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 2 of #text > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -EDITING DELEGATE: shouldChangeSelectedDOMRange:range from 2 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 2 of #text > SPAN > DIV > DIV > BODY > HTML > #document toDOMRange:range from 3 of #text > SPAN > DIV > DIV > BODY > HTML > #document to 3 of #text > SPAN > DIV > DIV > BODY > HTML > #document affinity:NSSelectionAffinityDownstream stillSelecting:FALSE -EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification -EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DIV} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 766x18 - text run at (0,0) width 766: "You should see 'a' on the first line below, and 'zz a' on the second line. 'zz' (and only 'zz') should be marked as misspelled." - RenderBlock {DIV} at (0,18) size 784x82 [border: (2px solid #FF0000)] - RenderBlock (anonymous) at (14,14) size 756x27 - RenderInline {SPAN} at (0,0) size 11x27 - RenderText {#text} at (0,0) size 11x27 - text run at (0,0) width 11: "a" - RenderBlock {DIV} at (14,41) size 756x27 - RenderInline {SPAN} at (0,0) size 39x27 - RenderText {#text} at (0,0) size 39x27 - text run at (0,0) width 39: "zz a" - RenderText {#text} at (0,0) size 0x0 -caret: position 3 of child 0 {#text} of child 0 {SPAN} of child 2 {DIV} of child 3 {DIV} of body diff --git a/LayoutTests/platform/wpe/fast/css/font-face-opentype-expected.png b/LayoutTests/platform/wpe/fast/css/font-face-opentype-expected.png deleted file mode 100644 index bfcab1e199a99..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/css/font-face-opentype-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html b/LayoutTests/platform/wpe/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html deleted file mode 100644 index 993b16feb45bf..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/font-fallback-private-use-area-apple-logo-exception-expected.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - diff --git a/LayoutTests/platform/wpe/fast/css/font-smoothing-expected.png b/LayoutTests/platform/wpe/fast/css/font-smoothing-expected.png deleted file mode 100644 index 3c003f9023fff..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/css/font-smoothing-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/css/line-height-determined-by-primary-font-expected.txt b/LayoutTests/platform/wpe/fast/css/line-height-determined-by-primary-font-expected.txt deleted file mode 100644 index 090b3011d0422..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/line-height-determined-by-primary-font-expected.txt +++ /dev/null @@ -1,62 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x272 - RenderBlock {HTML} at (0,0) size 800x272 - RenderBody {BODY} at (8,12) size 784x248 - RenderBlock {P} at (0,0) size 784x30 - RenderText {#text} at (0,0) size 779x30 - text run at (0,0) width 779: "This test verifies that line height is determined solely by a box's primary font, not by its fallback fonts. The following two lines should have a solid, unbroken red line" - text run at (0,15) width 58: "below them:" - RenderBlock {DIV} at (0,42) size 784x97 - RenderBlock {UL} at (0,0) size 567x97 - RenderBlock (floating) {LI} at (40,0) size 58x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,7) size 36x16 - RenderText {#text} at (12,7) size 36x16 - text run at (12,7) width 36: "\x{6EE8}\x{5D0E}\x{6B65}" - RenderBlock (floating) {LI} at (98,0) size 76x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,5) size 54x20 - RenderText {#text} at (12,5) size 54x20 - text run at (12,5) width 54: "\x{8521}\x{4F9D}\x{6797}" - RenderBlock (floating) {LI} at (174,0) size 79x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,2) size 57x26 - RenderText {#text} at (12,2) size 57x26 - text run at (12,2) width 57: "\x{9648}\x{7EEE}\x{8D1E}" - RenderBlock (floating) {LI} at (253,0) size 72x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,5) size 50x20 - RenderText {#text} at (12,5) size 50x20 - text run at (12,5) width 50: "\x{9648}\x{5955}\x{8FC5}" - RenderBlock (floating) {LI} at (325,0) size 52x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,8) size 30x14 - RenderText {#text} at (12,8) size 30x14 - text run at (12,8) width 30: "\x{9ED1}\x{9E2D}\x{5B50}" - RenderBlock (floating) {LI} at (377,0) size 64x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,7) size 42x16 - RenderText {#text} at (12,7) size 42x16 - text run at (12,7) width 42: "\x{674E}\x{5B87}\x{6625}" - RenderBlock (floating) {LI} at (441,0) size 64x31 [border: none (1px solid #FF0000) none] - RenderInline {A} at (12,7) size 42x16 - RenderText {#text} at (12,7) size 42x16 - text run at (12,7) width 42: "\x{6881}\x{9759}\x{8339}" - RenderBlock {DIV} at (0,151) size 784x97 - RenderBlock {UL} at (0,0) size 567x97 - RenderBlock (floating) {LI} at (40,0) size 58x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,7) size 36x16 - text run at (12,7) width 36: "\x{6EE8}\x{5D0E}\x{6B65}" - RenderBlock (floating) {LI} at (98,0) size 76x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,5) size 54x20 - text run at (12,5) width 54: "\x{8521}\x{4F9D}\x{6797}" - RenderBlock (floating) {LI} at (174,0) size 79x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,2) size 57x26 - text run at (12,2) width 57: "\x{9648}\x{7EEE}\x{8D1E}" - RenderBlock (floating) {LI} at (253,0) size 72x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,5) size 50x20 - text run at (12,5) width 50: "\x{9648}\x{5955}\x{8FC5}" - RenderBlock (floating) {LI} at (325,0) size 52x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,8) size 30x14 - text run at (12,8) width 30: "\x{9ED1}\x{9E2D}\x{5B50}" - RenderBlock (floating) {LI} at (377,0) size 64x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,7) size 42x16 - text run at (12,7) width 42: "\x{674E}\x{5B87}\x{6625}" - RenderBlock (floating) {LI} at (441,0) size 64x31 [border: none (1px solid #FF0000) none] - RenderText {#text} at (12,7) size 42x16 - text run at (12,7) width 42: "\x{6881}\x{9759}\x{8339}" diff --git a/LayoutTests/platform/wpe/fast/css/line-height-font-order-expected.txt b/LayoutTests/platform/wpe/fast/css/line-height-font-order-expected.txt deleted file mode 100644 index 4bc10b8a6d908..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/line-height-font-order-expected.txt +++ /dev/null @@ -1,21 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x197 - RenderBlock {HTML} at (0,0) size 800x197 - RenderBody {BODY} at (8,15) size 784x167 - RenderBlock {P} at (0,0) size 784x75 - RenderText {#text} at (0,29) size 90x17 - text run at (0,29) width 90: "This tests bug " - RenderInline {A} at (90,29) size 618x17 [color=#0000EE] - RenderText {#text} at (90,29) size 618x17 - text run at (90,29) width 618: "Bug 13174: line-height in font shorthand does not override a previously stated line-height property" - RenderText {#text} at (708,29) size 4x17 - text run at (708,29) width 4: "." - RenderBlock {P} at (0,90) size 784x77 - RenderText {#text} at (0,29) size 123x17 - text run at (0,29) width 123: "This text should be " - RenderInline {CODE} at (123,30) size 189x18 - RenderText {#text} at (123,30) size 189x18 - text run at (123,30) width 189: "font:15px/5em Georgia" - RenderText {#text} at (312,29) size 4x17 - text run at (312,29) width 4: "." diff --git a/LayoutTests/platform/wpe/fast/css/line-height-negative-expected.txt b/LayoutTests/platform/wpe/fast/css/line-height-negative-expected.txt deleted file mode 100644 index 9e7ea2918a346..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/line-height-negative-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DIV} at (0,0) size 784x10 - RenderText {#text} at (0,-1) size 225x12 - text run at (0,0) width 225: "This should be fairly small text, rather than huge." -layer at (8,34) size 200x48 - RenderBlock (positioned) {DIV} at (8,34) size 200x48 [bgcolor=#FF0000] - RenderText {#text} at (0,15) size 4x18 - text run at (0,15) width 4: " " -layer at (8,34) size 200x48 - RenderBlock (positioned) {SPAN} at (0,0) size 200x48 [bgcolor=#008000] - RenderText {#text} at (0,15) size 177x18 - text run at (0,15) width 177: "There should be no red here" diff --git a/LayoutTests/platform/wpe/fast/css/line-height-overflow-expected.txt b/LayoutTests/platform/wpe/fast/css/line-height-overflow-expected.txt deleted file mode 100644 index 9d4274658ca82..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/line-height-overflow-expected.txt +++ /dev/null @@ -1,17 +0,0 @@ -layer at (0,0) size 785x32802 - RenderView at (0,0) size 785x600 -layer at (0,0) size 785x32802 - RenderBlock {HTML} at (0,0) size 785x32802 - RenderBody {BODY} at (8,8) size 769x32786 - RenderBlock (anonymous) at (0,0) size 769x18 - RenderText {#text} at (0,0) size 558x18 - text run at (0,0) width 558: "You should see a large green block below that is 32,768px tall. No red should be visible." - RenderBR {BR} at (557,0) size 1x18 - RenderBlock {DIV} at (0,18) size 769x32768 [bgcolor=#FF0000] - RenderIFrame {IFRAME} at (0,0) size 769x32768 [bgcolor=#008000] - layer at (0,0) size 769x32768 - RenderView at (0,0) size 769x32768 - layer at (0,0) size 769x32768 - RenderBlock {HTML} at (0,0) size 769x32768 - RenderBody {BODY} at (8,8) size 753x32752 - RenderText {#text} at (0,0) size 0x0 diff --git a/LayoutTests/platform/wpe/fast/css/resize-corner-tracking-transformed-expected.txt b/LayoutTests/platform/wpe/fast/css/resize-corner-tracking-transformed-expected.txt deleted file mode 100644 index a52454e401b4f..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/resize-corner-tracking-transformed-expected.txt +++ /dev/null @@ -1,23 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x542 - RenderBlock {P} at (0,18) size 784x18 - RenderText {#text} at (0,0) size 52x18 - text run at (0,0) width 52: "Test for " - RenderInline {I} at (51,0) size 646x18 - RenderInline {A} at (51,0) size 307x18 [color=#0000EE] - RenderText {#text} at (51,0) size 307x18 - text run at (51,0) width 307: "https://bugs.webkit.org/show_bug.cgi?id=22118" - RenderText {#text} at (357,0) size 340x18 - text run at (357,0) width 5: " " - text run at (361,0) width 336: "Resize corner does not track in transformed elements" - RenderText {#text} at (696,0) size 5x18 - text run at (696,0) width 5: "." -layer at (8,8) size 784x2 clip at (0,0) size 0x0 - RenderBlock {HR} at (0,0) size 784x2 [color=#808080] [border: (1px inset #808080)] -layer at (8,60) size 784x2 clip at (0,0) size 0x0 - RenderBlock {HR} at (0,52) size 784x2 [color=#808080] [border: (1px inset #808080)] -layer at (58,112) size 163x129 clip at (60,114) size 159x125 - RenderBlock {DIV} at (50,104) size 163x129 [border: (2px solid #0000FF)] diff --git a/LayoutTests/platform/wpe/fast/css/resize-corner-tracking-transformed-iframe-expected.txt b/LayoutTests/platform/wpe/fast/css/resize-corner-tracking-transformed-iframe-expected.txt deleted file mode 100644 index b7a61318d3dc3..0000000000000 --- a/LayoutTests/platform/wpe/fast/css/resize-corner-tracking-transformed-iframe-expected.txt +++ /dev/null @@ -1,30 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {P} at (0,18) size 784x18 - RenderText {#text} at (0,0) size 52x18 - text run at (0,0) width 52: "Test for " - RenderInline {I} at (51,0) size 552x18 - RenderInline {A} at (51,0) size 300x18 [color=#0000EE] - RenderText {#text} at (51,0) size 300x18 - text run at (51,0) width 300: "https://bugs.webkit.org/show_bug.cgi?id=9221" - RenderText {#text} at (350,0) size 253x18 - text run at (350,0) width 5: " " - text run at (354,0) width 249: "resize property doesn't work on iframes" - RenderText {#text} at (602,0) size 5x18 - text run at (602,0) width 5: "." - RenderBlock (anonymous) at (0,62) size 784x230 - RenderText {#text} at (0,0) size 0x0 -layer at (8,8) size 784x2 clip at (0,0) size 0x0 - RenderBlock {HR} at (0,0) size 784x2 [color=#808080] [border: (1px inset #808080)] -layer at (8,60) size 784x2 clip at (0,0) size 0x0 - RenderBlock {HR} at (0,52) size 784x2 [color=#808080] [border: (1px inset #808080)] -layer at (58,120) size 163x130 - RenderIFrame {IFRAME} at (50,50) size 163x130 [border: (2px solid #0000FF)] - layer at (0,0) size 159x126 - RenderView at (0,0) size 159x126 - layer at (0,0) size 159x126 - RenderBlock {HTML} at (0,0) size 159x126 - RenderBody {BODY} at (8,8) size 143x110 diff --git a/LayoutTests/platform/wpe/fast/css/word-space-extra-expected.png b/LayoutTests/platform/wpe/fast/css/word-space-extra-expected.png deleted file mode 100644 index 7fed29a092faa..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/css/word-space-extra-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt b/LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt deleted file mode 100644 index dd50872128bb9..0000000000000 --- a/LayoutTests/platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt +++ /dev/null @@ -1,81 +0,0 @@ -This tests that the navigator object of a deleted frame is disconnected properly. Accessing fields or methods shouldn't crash the browser. - Check Navigator -navigator.appCodeName is OK -navigator.appName is OK -navigator.appVersion is OK -navigator.clearAppBadge() is OK -navigator.clipboard is OK -navigator.contacts is OK -navigator.cookieEnabled is OK -navigator.devicePosture is OK -navigator.gpu is OK -navigator.hardwareConcurrency is OK -navigator.isLoggedIn() is OK -navigator.javaEnabled() is OK -navigator.language is OK -navigator.languages is OK -navigator.locks is OK -navigator.maxTouchPoints is OK -navigator.mediaCapabilities is OK -navigator.mediaSession is OK -navigator.mimeTypes is OK -navigator.onLine is OK -navigator.pdfViewerEnabled is OK -navigator.permissions is OK -navigator.platform is OK -navigator.plugins is OK -navigator.product is OK -navigator.productSub is OK -navigator.requestMediaKeySystemAccess() is OK -navigator.sendBeacon() threw err TypeError: Not enough arguments -navigator.serviceWorker is OK -navigator.setAppBadge() is OK -navigator.setStatus() is OK -navigator.storage is OK -navigator.userActivation is OK -navigator.userAgent is OK -navigator.vendor is OK -navigator.vendorSub is OK -navigator.wakeLock is OK -navigator.webdriver is OK -navigator.xr is OK -navigator.appCodeName is OK -navigator.appName is OK -navigator.appVersion is OK -navigator.clearAppBadge() is OK -navigator.clipboard is OK -navigator.contacts is OK -navigator.cookieEnabled is OK -navigator.devicePosture is OK -navigator.gpu is OK -navigator.hardwareConcurrency is OK -navigator.isLoggedIn() is OK -navigator.javaEnabled() is OK -navigator.language is OK -navigator.languages is OK -navigator.locks is OK -navigator.maxTouchPoints is OK -navigator.mediaCapabilities is OK -navigator.mediaSession is OK -navigator.mimeTypes is OK -navigator.onLine is OK -navigator.pdfViewerEnabled is OK -navigator.permissions is OK -navigator.platform is OK -navigator.plugins is OK -navigator.product is OK -navigator.productSub is OK -navigator.requestMediaKeySystemAccess() is OK -navigator.sendBeacon() threw err TypeError: Not enough arguments -navigator.serviceWorker is OK -navigator.setAppBadge() is OK -navigator.setStatus() is OK -navigator.storage is OK -navigator.userActivation is OK -navigator.userAgent is OK -navigator.vendor is OK -navigator.vendorSub is OK -navigator.wakeLock is OK -navigator.webdriver is OK -navigator.xr is OK - diff --git a/LayoutTests/platform/wpe/fast/forms/date/date-pseudo-elements-expected.txt b/LayoutTests/platform/wpe/fast/forms/date/date-pseudo-elements-expected.txt deleted file mode 100644 index c7adf5a02ffbe..0000000000000 --- a/LayoutTests/platform/wpe/fast/forms/date/date-pseudo-elements-expected.txt +++ /dev/null @@ -1,48 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderText {#text} at (106,4) size 4x17 - text run at (106,4) width 4: " " - RenderText {#text} at (0,0) size 0x0 -layer at (8,8) size 106x29 clip at (10,10) size 102x25 - RenderFlexibleBox {INPUT} at (0,0) size 106x29 [bgcolor=#FFFFFF] [border: (2px inset #808080)] -layer at (11,11) size 100x23 clip at (12,12) size 98x21 - RenderBlock {DIV} at (3,3) size 100x23 [border: (1px solid #FF0000)] - RenderBlock {DIV} at (2,2) size 96x19 - RenderBlock {DIV} at (0,0) size 20x19 [color=#FF0000] - RenderText {#text} at (1,1) size 18x17 - text run at (1,1) width 18: "04" - RenderInline {DIV} at (20,1) size 9x17 [color=#FFFF00] - RenderText {#text} at (20,1) size 9x17 - text run at (20,1) width 9: "/" - RenderBlock {DIV} at (29,0) size 20x19 [color=#008000] - RenderText {#text} at (1,1) size 18x17 - text run at (1,1) width 18: "01" - RenderInline {DIV} at (49,1) size 9x17 [color=#FFFF00] - RenderText {#text} at (49,1) size 9x17 - text run at (49,1) width 9: "/" - RenderBlock {DIV} at (58,0) size 38x19 [color=#0000FF] - RenderText {#text} at (1,1) size 36x17 - text run at (1,1) width 36: "1976" -layer at (118,8) size 106x29 clip at (120,10) size 102x25 - RenderFlexibleBox {INPUT} at (110,0) size 106x29 [bgcolor=#FFFFFF] [border: (2px inset #808080)] -layer at (121,11) size 100x23 clip at (122,12) size 98x21 - RenderBlock {DIV} at (3,3) size 100x23 [border: (1px solid #FF0000)] - RenderBlock {DIV} at (2,2) size 96x19 - RenderBlock {DIV} at (76,0) size 20x19 [color=#FF0000] - RenderText {#text} at (1,1) size 18x17 - text run at (1,1) width 18: "04" - RenderInline {DIV} at (67,1) size 9x17 [color=#FFFF00] - RenderText {#text} at (67,1) size 9x17 - text run at (67,1) width 9 RTL: "/" - RenderBlock {DIV} at (47,0) size 20x19 [color=#008000] - RenderText {#text} at (1,1) size 18x17 - text run at (1,1) width 18: "01" - RenderInline {DIV} at (38,1) size 9x17 [color=#FFFF00] - RenderText {#text} at (38,1) size 9x17 - text run at (38,1) width 9 RTL: "/" - RenderBlock {DIV} at (0,0) size 38x19 [color=#0000FF] - RenderText {#text} at (1,1) size 36x17 - text run at (1,1) width 36: "1976" diff --git a/LayoutTests/platform/wpe/fast/forms/indeterminate-expected.txt b/LayoutTests/platform/wpe/fast/forms/indeterminate-expected.txt deleted file mode 100644 index 38fde3e1b8af9..0000000000000 --- a/LayoutTests/platform/wpe/fast/forms/indeterminate-expected.txt +++ /dev/null @@ -1,10 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderText {#text} at (16,1) size 491x17 - text run at (16,1) width 491: " This checkbox should look 50% transparent and should be in the mixed state." - RenderText {#text} at (0,0) size 0x0 -layer at (10,11) size 12x12 - RenderBlock {INPUT} at (2,3) size 12x12 diff --git a/LayoutTests/platform/wpe/fast/forms/input-align-image-expected.txt b/LayoutTests/platform/wpe/fast/forms/input-align-image-expected.txt deleted file mode 100644 index 0ee16688c6a4c..0000000000000 --- a/LayoutTests/platform/wpe/fast/forms/input-align-image-expected.txt +++ /dev/null @@ -1,22 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 579x18 - text run at (0,0) width 579: "The following 4 images should be all be rendered exactly the same, aligned to the right side." - RenderImage {INPUT} at (767,34) size 17x19 - RenderBlock (anonymous) at (0,34) size 784x108 - RenderBR {BR} at (0,0) size 0x18 - RenderBR {BR} at (0,18) size 0x18 - RenderImage {INPUT} at (767,36) size 17x19 - RenderText {#text} at (0,0) size 0x0 - RenderBR {BR} at (0,36) size 0x18 - RenderBR {BR} at (0,54) size 0x18 - RenderImage {INPUT} at (767,72) size 17x19 - RenderText {#text} at (0,0) size 0x0 - RenderBR {BR} at (0,72) size 0x18 - RenderBR {BR} at (0,90) size 0x18 - RenderBlock {DIV} at (0,142) size 784x0 - RenderImage {INPUT} at (767,0) size 17x19 diff --git a/LayoutTests/platform/wpe/fast/forms/text-control-intrinsic-widths-expected.txt b/LayoutTests/platform/wpe/fast/forms/text-control-intrinsic-widths-expected.txt deleted file mode 100644 index fae30f7f2f609..0000000000000 --- a/LayoutTests/platform/wpe/fast/forms/text-control-intrinsic-widths-expected.txt +++ /dev/null @@ -1,387 +0,0 @@ -This test measures the width of textareas and text inputs for different fonts. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -Lucida Grande -input -size=1 clientWidth=34 -size=2 clientWidth=41 -size=3 clientWidth=48 -size=4 clientWidth=55 -size=5 clientWidth=62 -size=10 clientWidth=97 -size=20 clientWidth=167 -size=50 clientWidth=377 -size=100 clientWidth=727 -size=500 clientWidth=3527 -size=1000 clientWidth=7027 - -textarea -cols=1 clientWidth=29 -cols=2 clientWidth=39 -cols=3 clientWidth=49 -cols=4 clientWidth=59 -cols=5 clientWidth=69 -cols=10 clientWidth=119 -cols=20 clientWidth=219 -cols=50 clientWidth=519 -cols=100 clientWidth=1019 -cols=500 clientWidth=5019 -cols=1000 clientWidth=10019 - -Courier -input -size=1 clientWidth=13 -size=2 clientWidth=23 -size=3 clientWidth=33 -size=4 clientWidth=43 -size=5 clientWidth=53 -size=10 clientWidth=103 -size=20 clientWidth=203 -size=50 clientWidth=503 -size=100 clientWidth=1003 -size=500 clientWidth=5003 -size=1000 clientWidth=10003 - -textarea -cols=1 clientWidth=29 -cols=2 clientWidth=39 -cols=3 clientWidth=49 -cols=4 clientWidth=59 -cols=5 clientWidth=69 -cols=10 clientWidth=119 -cols=20 clientWidth=219 -cols=50 clientWidth=519 -cols=100 clientWidth=1019 -cols=500 clientWidth=5019 -cols=1000 clientWidth=10019 - -Helvetica -input -size=1 clientWidth=12 -size=2 clientWidth=21 -size=3 clientWidth=30 -size=4 clientWidth=39 -size=5 clientWidth=48 -size=10 clientWidth=93 -size=20 clientWidth=183 -size=50 clientWidth=453 -size=100 clientWidth=903 -size=500 clientWidth=4503 -size=1000 clientWidth=9003 - -textarea -cols=1 clientWidth=28 -cols=2 clientWidth=37 -cols=3 clientWidth=46 -cols=4 clientWidth=55 -cols=5 clientWidth=64 -cols=10 clientWidth=109 -cols=20 clientWidth=199 -cols=50 clientWidth=469 -cols=100 clientWidth=919 -cols=500 clientWidth=4519 -cols=1000 clientWidth=9019 - -Monaco -input -size=1 clientWidth=13 -size=2 clientWidth=23 -size=3 clientWidth=33 -size=4 clientWidth=43 -size=5 clientWidth=53 -size=10 clientWidth=103 -size=20 clientWidth=203 -size=50 clientWidth=503 -size=100 clientWidth=1003 -size=500 clientWidth=5003 -size=1000 clientWidth=10003 - -textarea -cols=1 clientWidth=29 -cols=2 clientWidth=39 -cols=3 clientWidth=49 -cols=4 clientWidth=59 -cols=5 clientWidth=69 -cols=10 clientWidth=119 -cols=20 clientWidth=219 -cols=50 clientWidth=519 -cols=100 clientWidth=1019 -cols=500 clientWidth=5019 -cols=1000 clientWidth=10019 - -Times -input -size=1 clientWidth=11 -size=2 clientWidth=19 -size=3 clientWidth=27 -size=4 clientWidth=35 -size=5 clientWidth=43 -size=10 clientWidth=83 -size=20 clientWidth=163 -size=50 clientWidth=403 -size=100 clientWidth=803 -size=500 clientWidth=4003 -size=1000 clientWidth=8003 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Andale Mono -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Arial -input -size=1 clientWidth=17 -size=2 clientWidth=26 -size=3 clientWidth=35 -size=4 clientWidth=44 -size=5 clientWidth=53 -size=10 clientWidth=98 -size=20 clientWidth=188 -size=50 clientWidth=458 -size=100 clientWidth=908 -size=500 clientWidth=4508 -size=1000 clientWidth=9008 - -textarea -cols=1 clientWidth=28 -cols=2 clientWidth=37 -cols=3 clientWidth=46 -cols=4 clientWidth=55 -cols=5 clientWidth=64 -cols=10 clientWidth=109 -cols=20 clientWidth=199 -cols=50 clientWidth=469 -cols=100 clientWidth=919 -cols=500 clientWidth=4519 -cols=1000 clientWidth=9019 - -Comic Sans MS -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Courier New -input -size=1 clientWidth=16 -size=2 clientWidth=26 -size=3 clientWidth=36 -size=4 clientWidth=46 -size=5 clientWidth=56 -size=10 clientWidth=106 -size=20 clientWidth=206 -size=50 clientWidth=506 -size=100 clientWidth=1006 -size=500 clientWidth=5006 -size=1000 clientWidth=10006 - -textarea -cols=1 clientWidth=29 -cols=2 clientWidth=39 -cols=3 clientWidth=49 -cols=4 clientWidth=59 -cols=5 clientWidth=69 -cols=10 clientWidth=119 -cols=20 clientWidth=219 -cols=50 clientWidth=519 -cols=100 clientWidth=1019 -cols=500 clientWidth=5019 -cols=1000 clientWidth=10019 - -Georgia -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Times New Roman -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Trebuchet MS -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Verdana -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -Webdings -input -size=1 clientWidth=17 -size=2 clientWidth=25 -size=3 clientWidth=33 -size=4 clientWidth=41 -size=5 clientWidth=49 -size=10 clientWidth=89 -size=20 clientWidth=169 -size=50 clientWidth=409 -size=100 clientWidth=809 -size=500 clientWidth=4009 -size=1000 clientWidth=8009 - -textarea -cols=1 clientWidth=27 -cols=2 clientWidth=35 -cols=3 clientWidth=43 -cols=4 clientWidth=51 -cols=5 clientWidth=59 -cols=10 clientWidth=99 -cols=20 clientWidth=179 -cols=50 clientWidth=419 -cols=100 clientWidth=819 -cols=500 clientWidth=4019 -cols=1000 clientWidth=8019 - -PASS successfullyParsed is true - -TEST COMPLETE - diff --git a/LayoutTests/platform/wpe/fast/frames/sandboxed-iframe-about-blank-expected.txt b/LayoutTests/platform/wpe/fast/frames/sandboxed-iframe-about-blank-expected.txt deleted file mode 100644 index c6c26ac4abb7d..0000000000000 --- a/LayoutTests/platform/wpe/fast/frames/sandboxed-iframe-about-blank-expected.txt +++ /dev/null @@ -1,11 +0,0 @@ - -This test verifies that sandboxing 'about:blank' does not make the containing frame sandboxed. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -FAIL containing frame was unable to instantiate plugin -PASS successfullyParsed is true - -TEST COMPLETE - diff --git a/LayoutTests/platform/wpe/fast/frames/sandboxed-iframe-navigation-allowed-expected.txt b/LayoutTests/platform/wpe/fast/frames/sandboxed-iframe-navigation-allowed-expected.txt deleted file mode 100644 index 4a8dc6720b6a9..0000000000000 --- a/LayoutTests/platform/wpe/fast/frames/sandboxed-iframe-navigation-allowed-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -This test verifies that a sandboxed iframe CAN navigate both itself and a child in the frame tree. It also verifies that the sandbox attribute remains intact after a frame has been navigated, and that sandbox attributes are propagated through the frame hierarchy. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -PASS (self.sandboxedFrame.frameWithPlugin.document.getElementById('plugin').destroyStream) == undefined is true -FAIL (self.frameWithPlugin.document.getElementById('plugin').destroyStream) != undefined should be true. Was false. -PASS String(document.getElementById('sandboxedFrameId').sandbox) is "allow-scripts allow-same-origin" -PASS successfullyParsed is true -Some tests failed. - -TEST COMPLETE - diff --git a/LayoutTests/platform/wpe/fast/gradients/conic-gradient-alpha-expected.html b/LayoutTests/platform/wpe/fast/gradients/conic-gradient-alpha-expected.html deleted file mode 100644 index b88feca3ae478..0000000000000 --- a/LayoutTests/platform/wpe/fast/gradients/conic-gradient-alpha-expected.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-1-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-1-expected.txt deleted file mode 100644 index 3b0d1bcae696b..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-1-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 1" diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-10-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-10-and-click-expected.txt deleted file mode 100644 index 765ca2a63064d..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-10-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 1" -caret: position 0 of child 0 {#text} of child 1 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-2-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-2-expected.txt deleted file mode 100644 index 3b0d1bcae696b..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-2-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 1" diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-3-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-3-expected.txt deleted file mode 100644 index 788d7d8dfe688..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-3-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 2" diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-4-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-4-expected.txt deleted file mode 100644 index 0374630b6d4d9..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-4-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 58x17 - text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-5-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-5-expected.txt deleted file mode 100644 index 3b0d1bcae696b..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-5-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 1" diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-6-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-6-and-click-expected.txt deleted file mode 100644 index 31d8649e2c1d4..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-6-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 1" -caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-7-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-7-and-click-expected.txt deleted file mode 100644 index 31d8649e2c1d4..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-7-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 1" -caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-8-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-8-and-click-expected.txt deleted file mode 100644 index 085265c0ff717..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-8-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 39x17 - text run at (16,1) width 39: "new 2" -caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-add-summary-9-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-add-summary-9-and-click-expected.txt deleted file mode 100644 index 144a0b4bae23d..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-add-summary-9-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 58x17 - text run at (16,1) width 58: "summary" -caret: position 0 of child 0 {#text} of child 1 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-no-summary1-expected.txt b/LayoutTests/platform/wpe/fast/html/details-no-summary1-expected.txt deleted file mode 100644 index 661f3c6b2ac57..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-no-summary1-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 44x17 - text run at (16,1) width 44: "Details" diff --git a/LayoutTests/platform/wpe/fast/html/details-no-summary3-expected.txt b/LayoutTests/platform/wpe/fast/html/details-no-summary3-expected.txt deleted file mode 100644 index 661f3c6b2ac57..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-no-summary3-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 44x17 - text run at (16,1) width 44: "Details" diff --git a/LayoutTests/platform/wpe/fast/html/details-open1-expected.txt b/LayoutTests/platform/wpe/fast/html/details-open1-expected.txt deleted file mode 100644 index 0374630b6d4d9..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-open1-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 58x17 - text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/wpe/fast/html/details-open3-expected.txt b/LayoutTests/platform/wpe/fast/html/details-open3-expected.txt deleted file mode 100644 index 0374630b6d4d9..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-open3-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 58x17 - text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/wpe/fast/html/details-open5-expected.txt b/LayoutTests/platform/wpe/fast/html/details-open5-expected.txt deleted file mode 100644 index 0374630b6d4d9..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-open5-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 58x17 - text run at (16,1) width 58: "summary" diff --git a/LayoutTests/platform/wpe/fast/html/details-position-expected.txt b/LayoutTests/platform/wpe/fast/html/details-position-expected.txt deleted file mode 100644 index ca406cc5b8965..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-position-expected.txt +++ /dev/null @@ -1,29 +0,0 @@ -layer at (0,0) size 942x585 - RenderView at (0,0) size 800x585 -layer at (0,0) size 800x585 - RenderBlock {HTML} at (0,0) size 800x585 - RenderBody {BODY} at (8,8) size 784x569 - RenderBlock {DETAILS} at (0,0) size 784x0 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderBlock {DETAILS} at (0,19) size 784x0 -layer at (50,150) size 48x19 - RenderListItem {SUMMARY} at (50,150) size 48x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 32x17 - text run at (16,1) width 32: "fixed" -layer at (158,158) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 46x17 - text run at (16,1) width 46: "relative" -layer at (250,150) size 68x19 - RenderListItem {SUMMARY} at (250,150) size 68x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 52x17 - text run at (16,1) width 52: "absolute" diff --git a/LayoutTests/platform/wpe/fast/html/details-remove-summary-1-expected.txt b/LayoutTests/platform/wpe/fast/html/details-remove-summary-1-expected.txt deleted file mode 100644 index 661f3c6b2ac57..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-remove-summary-1-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 44x17 - text run at (16,1) width 44: "Details" diff --git a/LayoutTests/platform/wpe/fast/html/details-remove-summary-2-expected.txt b/LayoutTests/platform/wpe/fast/html/details-remove-summary-2-expected.txt deleted file mode 100644 index 50f5219c2dc61..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-remove-summary-2-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 70x17 - text run at (16,1) width 70: "summary 2" diff --git a/LayoutTests/platform/wpe/fast/html/details-remove-summary-3-expected.txt b/LayoutTests/platform/wpe/fast/html/details-remove-summary-3-expected.txt deleted file mode 100644 index f54a5f2c5879b..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-remove-summary-3-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (8,8) size 784x584 - RenderBlock {DETAILS} at (0,0) size 784x19 - RenderListItem {SUMMARY} at (0,0) size 784x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 70x17 - text run at (16,1) width 70: "summary 1" diff --git a/LayoutTests/platform/wpe/fast/html/details-remove-summary-4-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-remove-summary-4-and-click-expected.txt deleted file mode 100644 index 4a17ba1d17af0..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-remove-summary-4-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 44x17 - text run at (16,1) width 44: "Details" -caret: position 0 of child 0 {#text} of child 0 {SUMMARY} of child 0 {SLOT} of {#document-fragment} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-remove-summary-5-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-remove-summary-5-and-click-expected.txt deleted file mode 100644 index 05d1d06a4fb0b..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-remove-summary-5-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 70x17 - text run at (16,1) width 70: "summary 2" -caret: position 0 of child 0 {#text} of child 2 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/html/details-remove-summary-6-and-click-expected.txt b/LayoutTests/platform/wpe/fast/html/details-remove-summary-6-and-click-expected.txt deleted file mode 100644 index c8b17e36369ae..0000000000000 --- a/LayoutTests/platform/wpe/fast/html/details-remove-summary-6-and-click-expected.txt +++ /dev/null @@ -1,13 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x600 - RenderBlock {HTML} at (0,0) size 800x600 - RenderBody {BODY} at (0,0) size 800x600 - RenderBlock {DETAILS} at (0,0) size 800x19 - RenderListItem {SUMMARY} at (0,0) size 800x19 - RenderInline (generated) at (0,1) size 16x17 - RenderText at (0,1) size 16x17 - text run at (0,1) width 16: "\x{25B6} " - RenderText {#text} at (16,1) size 70x17 - text run at (16,1) width 70: "summary 1" -caret: position 0 of child 0 {#text} of child 1 {SUMMARY} of child 1 {DETAILS} of body diff --git a/LayoutTests/platform/wpe/fast/images/image-map-anchor-children-expected.png b/LayoutTests/platform/wpe/fast/images/image-map-anchor-children-expected.png deleted file mode 100644 index 143ddf0863112..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/images/image-map-anchor-children-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/inline-block/003-expected.png b/LayoutTests/platform/wpe/fast/inline-block/003-expected.png deleted file mode 100644 index ba498b17e4eb7..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/inline-block/003-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/inline/drawStyledEmptyInlines-expected.png b/LayoutTests/platform/wpe/fast/inline/drawStyledEmptyInlines-expected.png deleted file mode 100644 index 40ea61d691662..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/inline/drawStyledEmptyInlines-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/invalid/missing-end-tag-expected.png b/LayoutTests/platform/wpe/fast/invalid/missing-end-tag-expected.png deleted file mode 100644 index c031d6271d67c..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/invalid/missing-end-tag-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/parser/nofoo-tags-inside-paragraph-expected.png b/LayoutTests/platform/wpe/fast/parser/nofoo-tags-inside-paragraph-expected.png deleted file mode 100644 index c78b8a0246966..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/parser/nofoo-tags-inside-paragraph-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/selectors/visited-descendant-expected.png b/LayoutTests/platform/wpe/fast/selectors/visited-descendant-expected.png deleted file mode 100644 index 2c3e9c32f05e4..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/selectors/visited-descendant-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/table/border-collapsing/004-vertical-expected.txt b/LayoutTests/platform/wpe/fast/table/border-collapsing/004-vertical-expected.txt deleted file mode 100644 index f56452ae40c9a..0000000000000 --- a/LayoutTests/platform/wpe/fast/table/border-collapsing/004-vertical-expected.txt +++ /dev/null @@ -1,355 +0,0 @@ -layer at (0,0) size 1496x900 - RenderView at (0,0) size 785x585 -layer at (0,0) size 785x900 - RenderBlock {HTML} at (0,0) size 785x900 - RenderBody {BODY} at (8,21) size 769x871 - RenderBlock {H1} at (0,0) size 769x37 - RenderText {#text} at (0,0) size 287x37 - text run at (0,0) width 287: "Table Border Models" - RenderBlock {P} at (0,58) size 769x19 - RenderText {#text} at (0,0) size 117x18 - text run at (0,0) width 117: "This tests tests the " - RenderInline {A} at (117,0) size 208x18 [color=#0000EE] - RenderText {#text} at (117,0) size 208x18 - text run at (117,0) width 208: "CSS2 spec rules on table borders" - RenderText {#text} at (325,0) size 180x18 - text run at (325,0) width 8: ". " - text run at (333,0) width 172: "The styles applied here are:" - RenderBlock {PRE} at (0,92) size 769x181 - RenderText {#text} at (0,0) size 688x180 - text run at (0,0) width 408: "TABLE { margin: 1em; border: medium solid blue; }" - text run at (408,0) width 0: " " - text run at (0,15) width 376: "TD { border: thin solid green; padding: 5px; }" - text run at (376,15) width 0: " " - text run at (0,30) width 392: "TH { border: medium solid purple; padding: 5px; }" - text run at (392,30) width 0: " " - text run at (0,45) width 360: "TABLE.one, TABLE.two { border-spacing: 1em; }" - text run at (360,45) width 0: " " - text run at (0,60) width 320: "TABLE.one { border-collapse: collapse; }" - text run at (320,60) width 0: " " - text run at (0,75) width 320: "TABLE.two { border-collapse: separate; }" - text run at (320,75) width 0: " " - text run at (0,90) width 536: "TABLE.three { border-collapse: separate; border-spacing: 0 0.5em; }" - text run at (536,90) width 0: " " - text run at (0,105) width 528: "TABLE.four { border-collapse: separate; border-spacing: 0.5em 0; }" - text run at (528,105) width 0: " " - text run at (0,120) width 328: "TABLE.five { border-collapse: separate; }" - text run at (328,120) width 0: " " - text run at (0,135) width 464: "TABLE.five, TABLE.five TD, TABLE.five TH { border: none; }" - text run at (464,135) width 0: " " - text run at (0,150) width 688: "TABLE.five TR, TABLE.five COL, TABLE.five COLGROUP, TABLE.five TBODY, TABLE.five THEAD" - text run at (688,150) width 0: " " - text run at (0,165) width 264: " { border: medium solid red; }" - text run at (264,165) width 0: " " - RenderBlock {DIV} at (0,285) size 1488x586 - RenderTable {TABLE} at (16,16) size 238x553 [border: (1px solid #0000FF)] - RenderTableSection {TBODY} at (1,1) size 235x550 - RenderTableRow {TR} at (0,0) size 31x550 - RenderTableCell {TH} at (0,0) size 31x185 [border: (2px solid #800080)] [r=0 c=0 rs=1 cs=1] - RenderText {#text} at (6,51) size 18x83 - text run at (6,51) width 83: "Header One" - RenderTableCell {TH} at (0,184) size 31x175 [border: (2px solid #800080)] [r=0 c=1 rs=1 cs=1] - RenderText {#text} at (6,45) size 18x85 - text run at (6,45) width 85: "Header Two" - RenderTableCell {TH} at (0,358) size 31x193 [border: (2px solid #800080)] [r=0 c=2 rs=1 cs=1] - RenderText {#text} at (6,49) size 18x95 - text run at (6,49) width 95: "Header Three" - RenderTableRow {TR} at (31,0) size 102x550 - RenderTableCell {TD} at (31,27) size 102x131 [border: (2px solid #008000)] [r=1 c=0 rs=1 cs=1] - RenderText {#text} at (33,7) size 36x157 - text run at (33,-20) width 117: "This table uses the" - text run at (51,-20) width 158: "collapsed borders model." - RenderTableCell {TD} at (31,202) size 102x139 [border: (1px solid #008000)] [r=1 c=1 rs=1 cs=1] - RenderText {#text} at (24,6) size 54x158 - text run at (24,-12) width 159: "This means that elements" - text run at (42,-12) width 144: "within the cell have no" - text run at (60,-12) width 99: "border-spacing." - RenderTableCell {TD} at (31,358) size 102x193 [border: (1px solid #008000)] [r=1 c=2 rs=1 cs=1] - RenderText {#text} at (6,6) size 90x168 - text run at (6,6) width 136: "Since it has collapsed" - text run at (24,6) width 169: "borders, the borders on the" - text run at (42,6) width 83: "header cells, " - text run at (42,88) width 75: "on all sides," - text run at (60,6) width 151: "should be medium solid" - text run at (78,6) width 45: "purple." - RenderTableRow {TR} at (133,0) size 102x550 - RenderTableCell {TD} at (133,0) size 102x185 [border: (2px solid #008000)] [r=2 c=0 rs=1 cs=1] - RenderText {#text} at (5,7) size 90x153 - text run at (5,7) width 145: "The border of the table" - text run at (23,7) width 151: "itself should be medium" - text run at (41,7) width 115: "solid blue, except " - text run at (41,121) width 40: "where" - text run at (59,7) width 154: "header cells override the" - text run at (77,7) width 45: "border." - RenderTableCell {TD} at (133,184) size 102x175 [border: (1px solid #008000)] [r=2 c=1 rs=1 cs=1] - RenderText {#text} at (5,6) size 90x161 - text run at (5,6) width 162: "The borders that I haven't" - text run at (23,6) width 141: "already mentioned (all" - text run at (41,6) width 111: "the other internal " - text run at (41,116) width 35: "ones)" - text run at (59,6) width 124: "should be thin solid" - text run at (77,6) width 40: "green." - RenderTableCell {TD} at (133,358) size 102x193 [border: (1px solid #008000)] [r=2 c=2 rs=1 cs=1] - RenderText {#text} at (5,6) size 72x153 - text run at (5,6) width 154: "This table should have a" - text run at (23,6) width 143: "1em margin around all" - text run at (41,6) width 45: "edges. " - text run at (41,50) width 81: "This margin " - text run at (41,129) width 11: "is" - text run at (59,6) width 122: "measured from the " - RenderInline {EM} at (59,127) size 18x43 - RenderText {#text} at (59,127) size 18x43 - text run at (59,127) width 44: "middle" - RenderText {#text} at (77,6) size 18x80 - text run at (77,6) width 80: "of its border." - RenderTable {TABLE} at (270,16) size 290x553 [border: (3px solid #0000FF)] - RenderTableSection {TBODY} at (3,3) size 284x547 - RenderTableRow {TR} at (16,0) size 34x547 - RenderTableCell {TH} at (16,16) size 34x119 [border: (3px solid #800080)] [r=0 c=0 rs=1 cs=1] - RenderText {#text} at (8,18) size 18x82 - text run at (8,18) width 83: "Header One" - RenderTableCell {TH} at (16,150) size 34x140 [border: (3px solid #800080)] [r=0 c=1 rs=1 cs=1] - RenderText {#text} at (8,27) size 18x85 - text run at (8,27) width 85: "Header Two" - RenderTableCell {TH} at (16,305) size 34x227 [border: (3px solid #800080)] [r=0 c=2 rs=1 cs=1] - RenderText {#text} at (8,65) size 18x95 - text run at (8,65) width 95: "Header Three" - RenderTableRow {TR} at (66,0) size 84x547 - RenderTableCell {TD} at (66,25) size 84x101 [border: (1px solid #008000)] [r=1 c=0 rs=1 cs=1] - RenderText {#text} at (15,6) size 54x94 - text run at (15,-3) width 94: "This table uses" - text run at (33,-3) width 83: "the separated" - text run at (51,-3) width 95: "borders model." - RenderTableCell {TD} at (66,150) size 84x140 [border: (1px solid #008000)] [r=1 c=1 rs=1 cs=1] - RenderText {#text} at (6,6) size 72x122 - text run at (6,6) width 100: "This means that" - text run at (24,6) width 123: "elements within the" - text run at (42,6) width 107: "cell have border-" - text run at (60,6) width 101: "spacing of 1em." - RenderTableCell {TD} at (66,314) size 84x209 [border: (1px solid #008000)] [r=1 c=2 rs=1 cs=1] - RenderText {#text} at (15,6) size 54x201 - text run at (15,-3) width 202: "The borders on the header cells," - text run at (33,-3) width 195: "on all sides, should be medium" - text run at (51,-3) width 79: "solid purple." - RenderTableRow {TR} at (166,0) size 102x547 - RenderTableCell {TD} at (166,16) size 102x119 [border: (1px solid #008000)] [r=2 c=0 rs=1 cs=1] - RenderText {#text} at (6,6) size 90x87 - text run at (6,6) width 88: "The border of" - text run at (24,6) width 88: "the table itself" - text run at (42,6) width 62: "should be" - text run at (60,6) width 86: "medium solid" - text run at (78,6) width 32: "blue." - RenderTableCell {TD} at (166,168) size 102x104 [border: (1px solid #008000)] [r=2 c=1 rs=1 cs=1] - RenderText {#text} at (24,6) size 54x120 - text run at (24,-12) width 94: "The borders of" - text run at (42,-12) width 111: "other cells should" - text run at (60,-12) width 121: "be thin solid green." - RenderTableCell {TD} at (166,314) size 102x209 [border: (1px solid #008000)] [r=2 c=2 rs=1 cs=1] - RenderText {#text} at (15,6) size 54x187 - text run at (15,-3) width 185: "This table should have a 1em" - text run at (33,-3) width 160: "margin around all edges. " - text run at (33,155) width 29: "This" - text run at (51,-3) width 49: "margin " - text run at (51,44) width 132: "is measured from the" - RenderInline {EM} at (69,6) size 18x67 - RenderText {#text} at (69,6) size 18x67 - text run at (69,-3) width 68: "outer edge" - RenderText {#text} at (69,73) size 18x84 - text run at (69,64) width 84: " of its border." - RenderTable {TABLE} at (576,16) size 312x553 [border: (3px solid #0000FF)] - RenderTableSection {TBODY} at (3,3) size 306x547 - RenderTableRow {TR} at (8,0) size 34x547 - RenderTableCell {TH} at (8,0) size 34x142 [border: (3px solid #800080)] [r=0 c=0 rs=1 cs=1] - RenderText {#text} at (8,30) size 18x82 - text run at (8,30) width 83: "Header One" - RenderTableCell {TH} at (8,141) size 34x201 [border: (3px solid #800080)] [r=0 c=1 rs=1 cs=1] - RenderText {#text} at (8,57) size 18x85 - text run at (8,57) width 85: "Header Two" - RenderTableCell {TH} at (8,341) size 34x207 [border: (3px solid #800080)] [r=0 c=2 rs=1 cs=1] - RenderText {#text} at (8,55) size 18x96 - text run at (8,55) width 95: "Header Three" - RenderTableRow {TR} at (50,0) size 120x547 - RenderTableCell {TD} at (50,27) size 120x88 [border: (1px solid #008000)] [r=1 c=0 rs=1 cs=1] - RenderText {#text} at (33,6) size 54x116 - text run at (33,-21) width 117: "This table uses the" - text run at (51,-21) width 111: "separated borders" - text run at (69,-21) width 44: "model." - RenderTableCell {TD} at (50,141) size 120x201 [border: (1px solid #008000)] [r=1 c=1 rs=1 cs=1] - RenderText {#text} at (6,6) size 108x185 - text run at (6,6) width 186: "Elements within the cell have" - text run at (24,6) width 162: "horizontal border-spacing" - text run at (42,6) width 90: "(i.e., width of " - text run at (42,95) width 85: "vertical lines)" - text run at (60,6) width 107: "of 0 and vertical " - text run at (60,112) width 47: "border-" - text run at (78,6) width 141: "spacing (i.e., height of" - text run at (96,6) width 166: "horizontal lines) of 0.5em." - RenderTableCell {TD} at (50,368) size 120x153 [border: (1px solid #008000)] [r=1 c=2 rs=1 cs=1] - RenderText {#text} at (33,6) size 54x175 - text run at (33,-21) width 166: "The borders on the header" - text run at (51,-21) width 37: "cells, " - text run at (51,15) width 140: "on all sides, should be" - text run at (69,-21) width 134: "medium solid purple." - RenderTableRow {TR} at (178,0) size 120x547 - RenderTableCell {TD} at (178,0) size 120x142 [border: (1px solid #008000)] [r=2 c=0 rs=1 cs=1] - RenderText {#text} at (6,6) size 108x129 - text run at (6,6) width 111: "The border of the" - text run at (24,6) width 130: "table itself should be" - text run at (42,6) width 121: "medium solid blue." - text run at (60,6) width 130: "The borders of other" - text run at (78,6) width 122: "cells should be thin" - text run at (96,6) width 74: "solid green." - RenderTableCell {TD} at (178,159) size 120x165 [border: (1px solid #008000)] [r=2 c=1 rs=1 cs=1] - RenderText {#text} at (24,6) size 54x187 - text run at (24,-12) width 185: "This table should have a 1em" - text run at (42,-12) width 160: "margin around all edges. " - text run at (42,146) width 29: "This" - text run at (60,-12) width 49: "margin " - text run at (60,35) width 132: "is measured from the" - RenderInline {EM} at (78,6) size 18x67 - RenderText {#text} at (78,6) size 18x67 - text run at (78,-12) width 68: "outer edge" - RenderText {#text} at (78,73) size 18x84 - text run at (78,55) width 84: " of its border." - RenderTableCell {TD} at (178,341) size 120x207 [border: (1px solid #008000)] [r=2 c=2 rs=1 cs=1] - RenderText {#text} at (6,6) size 108x192 - text run at (6,6) width 189: "The table should not be wider" - text run at (24,6) width 182: "than the room available for it" - text run at (42,6) width 44: "unless " - text run at (42,49) width 150: "that space is very small." - text run at (60,6) width 170: "Because of its margins, the" - text run at (78,6) width 81: "width of the " - text run at (78,86) width 96: "table should be" - text run at (96,6) width 100: "less than 100%." - RenderTable {TABLE} at (904,16) size 280x553 [border: (3px solid #0000FF)] - RenderTableSection {TBODY} at (3,3) size 274x547 - RenderTableRow {TR} at (0,0) size 34x547 - RenderTableCell {TH} at (0,8) size 34x149 [border: (3px solid #800080)] [r=0 c=0 rs=1 cs=1] - RenderText {#text} at (8,33) size 18x83 - text run at (8,33) width 83: "Header One" - RenderTableCell {TH} at (0,164) size 34x152 [border: (3px solid #800080)] [r=0 c=1 rs=1 cs=1] - RenderText {#text} at (8,33) size 18x85 - text run at (8,33) width 85: "Header Two" - RenderTableCell {TH} at (0,323) size 34x217 [border: (3px solid #800080)] [r=0 c=2 rs=1 cs=1] - RenderText {#text} at (8,60) size 18x96 - text run at (8,60) width 95: "Header Three" - RenderTableRow {TR} at (34,0) size 102x547 - RenderTableCell {TD} at (34,26) size 102x113 [border: (1px solid #008000)] [r=1 c=0 rs=1 cs=1] - RenderText {#text} at (24,6) size 54x116 - text run at (24,-12) width 117: "This table uses the" - text run at (42,-12) width 111: "separated borders" - text run at (60,-12) width 44: "model." - RenderTableCell {TD} at (34,164) size 102x152 [border: (1px solid #008000)] [r=1 c=1 rs=1 cs=1] - RenderText {#text} at (6,6) size 90x127 - text run at (6,6) width 126: "Elements within the" - text run at (24,6) width 124: "cell have horizontal" - text run at (42,6) width 112: "border-spacing of" - text run at (60,6) width 117: "0.5em and vertical" - text run at (78,6) width 128: "border-spacing of 0." - RenderTableCell {TD} at (34,341) size 102x181 [border: (1px solid #008000)] [r=1 c=2 rs=1 cs=1] - RenderText {#text} at (24,6) size 54x201 - text run at (24,-12) width 202: "The borders on the header cells," - text run at (42,-12) width 195: "on all sides, should be medium" - text run at (60,-12) width 79: "solid purple." - RenderTableRow {TR} at (136,0) size 138x547 - RenderTableCell {TD} at (136,17) size 138x131 [border: (1px solid #008000)] [r=2 c=0 rs=1 cs=1] - RenderText {#text} at (15,6) size 108x129 - text run at (15,-3) width 111: "The border of the" - text run at (33,-3) width 130: "table itself should be" - text run at (51,-3) width 121: "medium solid blue." - text run at (69,-3) width 130: "The borders of other" - text run at (87,-3) width 122: "cells should be thin" - text run at (105,-3) width 74: "solid green." - RenderTableCell {TD} at (136,164) size 138x152 [border: (1px solid #008000)] [r=2 c=1 rs=1 cs=1] - RenderText {#text} at (6,6) size 90x120 - text run at (6,6) width 109: "This table should" - text run at (24,6) width 121: "have a 1em margin" - text run at (42,6) width 108: "around all edges." - text run at (60,6) width 81: "This margin " - text run at (60,85) width 11: "is" - text run at (78,6) width 118: "measured from the" - RenderInline {EM} at (96,6) size 18x67 - RenderText {#text} at (96,6) size 18x67 - text run at (96,6) width 68: "outer edge" - RenderText {#text} at (96,6) size 36x102 - text run at (96,73) width 36: " of its" - text run at (114,6) width 45: "border." - RenderTableCell {TD} at (136,332) size 138x199 [border: (1px solid #008000)] [r=2 c=2 rs=1 cs=1] - RenderText {#text} at (15,6) size 108x202 - text run at (15,-3) width 189: "The table should not be wider" - text run at (33,-3) width 182: "than the room available for it" - text run at (51,-3) width 44: "unless " - text run at (51,40) width 150: "that space is very small." - text run at (69,-3) width 170: "Because of its margins, the" - text run at (87,-3) width 81: "width of the " - text run at (87,77) width 123: "table should be less" - text run at (105,-3) width 73: "than 100%." - RenderTable {TABLE} at (1200,16) size 272x553 - RenderBlock {CAPTION} at (0,0) size 18x553 - RenderText {#text} at (0,217) size 18x119 - text run at (0,217) width 120: "This is the caption." - RenderTableCol {COLGROUP} at (0,0) size 0x0 [border: (3px solid #FF0000)] - RenderTableCol {COL} at (0,0) size 0x0 [border: (3px solid #FF0000)] - RenderTableCol {COLGROUP} at (0,0) size 0x0 [border: (3px solid #FF0000)] - RenderTableCol {COL} at (0,0) size 0x0 [border: (3px solid #FF0000)] - RenderTableCol {COL} at (0,0) size 0x0 [border: (3px solid #FF0000)] - RenderTableSection {THEAD} at (18,0) size 50x553 [border: (3px solid #FF0000)] - RenderTableRow {TR} at (2,0) size 46x553 [border: (3px solid #FF0000)] - RenderTableCell {TH} at (2,2) size 46x91 [r=0 c=0 rs=1 cs=1] - RenderText {#text} at (5,20) size 36x50 - text run at (5,20) width 51: "Header" - text run at (23,31) width 29: "One" - RenderTableCell {TH} at (2,103) size 46x222 [r=0 c=1 rs=1 cs=1] - RenderText {#text} at (14,77) size 18x85 - text run at (14,68) width 85: "Header Two" - RenderTableCell {TH} at (2,344) size 46x199 [r=0 c=2 rs=1 cs=1] - RenderText {#text} at (14,60) size 18x95 - text run at (14,51) width 95: "Header Three" - RenderTableSection {TBODY} at (68,0) size 204x553 [border: (3px solid #FF0000)] - RenderTableRow {TR} at (0,0) size 100x553 [border: (3px solid #FF0000)] - RenderTableCell {TD} at (0,2) size 100x91 [r=0 c=0 rs=1 cs=1] - RenderText {#text} at (5,5) size 90x62 - text run at (5,5) width 63: "This table" - text run at (23,5) width 51: "uses the" - text run at (41,5) width 60: "separated" - text run at (59,5) width 48: "borders" - text run at (77,5) width 44: "model." - RenderTableCell {TD} at (0,112) size 100x204 [r=0 c=1 rs=1 cs=1] - RenderText {#text} at (23,5) size 54x227 - text run at (23,-13) width 228: "This means that borders are allowed" - text run at (41,-13) width 197: "only on table elements or table " - text run at (41,183) width 23: "cell" - text run at (59,-13) width 60: "elements." - RenderTableCell {TD} at (0,344) size 100x199 [r=0 c=2 rs=1 cs=1] - RenderText {#text} at (14,5) size 72x182 - text run at (14,-4) width 155: "They are not allowed on" - text run at (32,-4) width 183: "elements that represent rows," - text run at (50,-4) width 156: "row-groups, columns, or" - text run at (68,-4) width 100: "column-groups." - RenderTableRow {TR} at (102,0) size 100x553 [border: (3px solid #FF0000)] - RenderTableCell {TD} at (102,2) size 100x91 [r=1 c=0 rs=1 cs=1] - RenderText {#text} at (5,5) size 90x76 - text run at (5,5) width 38: "There" - text run at (23,5) width 62: "should be" - text run at (41,5) width 68: "no borders" - text run at (59,5) width 77: "at all on this" - text run at (77,5) width 36: "table!" - RenderTableCell {TD} at (102,103) size 100x222 [r=1 c=1 rs=1 cs=1] - RenderText {#text} at (14,5) size 72x219 - text run at (14,-4) width 220: "If there are any borders shown that" - text run at (32,-4) width 196: "are not medium solid red, then " - text run at (32,191) width 20: "the" - text run at (50,-4) width 203: "problem is something other than" - text run at (68,-4) width 146: "what this test is testing." - RenderTableCell {TD} at (102,344) size 100x199 [r=1 c=2 rs=1 cs=1] - RenderText {#text} at (14,5) size 54x187 - text run at (14,-4) width 185: "This table should have a 1em" - text run at (32,-4) width 160: "margin around all edges. " - text run at (32,154) width 29: "This" - text run at (50,-4) width 49: "margin " - text run at (50,43) width 132: "is measured from the" - RenderInline {EM} at (68,5) size 18x67 - RenderText {#text} at (68,5) size 18x67 - text run at (68,-4) width 68: "outer edge" - RenderText {#text} at (68,72) size 18x84 - text run at (68,63) width 84: " of its border." diff --git a/LayoutTests/platform/wpe/fast/table/frame-and-rules-expected.png b/LayoutTests/platform/wpe/fast/table/frame-and-rules-expected.png deleted file mode 100644 index 0df04aae784bc..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/table/frame-and-rules-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/table/table-display-types-strict-expected.png b/LayoutTests/platform/wpe/fast/table/table-display-types-strict-expected.png deleted file mode 100644 index c3fecb38f1c8b..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/table/table-display-types-strict-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/atsui-multiple-renderers-expected.png b/LayoutTests/platform/wpe/fast/text/atsui-multiple-renderers-expected.png deleted file mode 100644 index a6d72915c6952..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/atsui-multiple-renderers-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/atsui-negative-spacing-features-expected.png b/LayoutTests/platform/wpe/fast/text/atsui-negative-spacing-features-expected.png deleted file mode 100644 index 1619097d0ddd5..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/atsui-negative-spacing-features-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/atsui-spacing-features-expected.png b/LayoutTests/platform/wpe/fast/text/atsui-spacing-features-expected.png deleted file mode 100644 index 1b62b19272eba..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/atsui-spacing-features-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/basic/012-expected.png b/LayoutTests/platform/wpe/fast/text/basic/012-expected.png deleted file mode 100644 index 3e2620bb76597..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/basic/012-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/basic/015-expected.png b/LayoutTests/platform/wpe/fast/text/basic/015-expected.png deleted file mode 100644 index 57d9c47904d78..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/basic/015-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html b/LayoutTests/platform/wpe/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html deleted file mode 100644 index 1a30137530e16..0000000000000 --- a/LayoutTests/platform/wpe/fast/text/canvas-color-fonts/stroke-gradient-COLR-expected.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/LayoutTests/platform/wpe/fast/text/capitalize-boundaries-expected.png b/LayoutTests/platform/wpe/fast/text/capitalize-boundaries-expected.png deleted file mode 100644 index 59e01d9e8b83c..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/capitalize-boundaries-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/font-weight-fallback-expected.html b/LayoutTests/platform/wpe/fast/text/font-weight-fallback-expected.html deleted file mode 100644 index 2eb6e0e245496..0000000000000 --- a/LayoutTests/platform/wpe/fast/text/font-weight-fallback-expected.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -

    Test that when a character is missing from the best-matching web font face, it falls back to the system font, not to a @font-face at a different weight.

    -
    横
    - - diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-AN-after-empty-run-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-AN-after-empty-run-expected.png deleted file mode 100644 index 1934a311b869c..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-AN-after-empty-run-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-L2-run-reordering-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-L2-run-reordering-expected.png deleted file mode 100644 index d7b957a85e198..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-L2-run-reordering-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-CSS-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-CSS-expected.png deleted file mode 100644 index 32301eb8bfd66..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-CSS-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-HTML-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-HTML-expected.png deleted file mode 100644 index d1bc96b47c1ef..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-HTML-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-formatting-characters-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-formatting-characters-expected.png deleted file mode 100644 index 445797d90b8db..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-LDB-2-formatting-characters-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-european-terminators-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-european-terminators-expected.png deleted file mode 100644 index 2a830cdd78382..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-european-terminators-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-ignored-for-first-child-inline-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-ignored-for-first-child-inline-expected.png deleted file mode 100644 index 89b8d59329eac..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-ignored-for-first-child-inline-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-neutral-directionality-paragraph-start-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-neutral-directionality-paragraph-start-expected.png deleted file mode 100644 index f8f86e8a55781..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-neutral-directionality-paragraph-start-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bidi-override-expected.png b/LayoutTests/platform/wpe/fast/text/international/bidi-override-expected.png deleted file mode 100644 index 2034d130037ca..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bidi-override-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/bold-bengali-expected.png b/LayoutTests/platform/wpe/fast/text/international/bold-bengali-expected.png deleted file mode 100644 index 6f44025acc2ae..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/bold-bengali-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/danda-space-expected.png b/LayoutTests/platform/wpe/fast/text/international/danda-space-expected.png deleted file mode 100644 index 7ae997047b84e..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/danda-space-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/rtl-caret-expected.png b/LayoutTests/platform/wpe/fast/text/international/rtl-caret-expected.png deleted file mode 100644 index 7754fda529f9c..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/rtl-caret-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/rtl-white-space-pre-wrap-expected.png b/LayoutTests/platform/wpe/fast/text/international/rtl-white-space-pre-wrap-expected.png deleted file mode 100644 index 2bb4b82ad44c5..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/rtl-white-space-pre-wrap-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/international/thai-baht-space-expected.png b/LayoutTests/platform/wpe/fast/text/international/thai-baht-space-expected.png deleted file mode 100644 index 4769c8ce0c5aa..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/international/thai-baht-space-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/text-letter-spacing-expected.png b/LayoutTests/platform/wpe/fast/text/text-letter-spacing-expected.png deleted file mode 100644 index 2f8c60433d633..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/text-letter-spacing-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/unicode-variation-selector-expected.png b/LayoutTests/platform/wpe/fast/text/unicode-variation-selector-expected.png deleted file mode 100644 index eba807a709f6b..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/unicode-variation-selector-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/wbr-expected.png b/LayoutTests/platform/wpe/fast/text/wbr-expected.png deleted file mode 100644 index 35cecce1cc6bd..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/wbr-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/whitespace/018-expected.png b/LayoutTests/platform/wpe/fast/text/whitespace/018-expected.png deleted file mode 100644 index e6174ea8cc4a4..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/whitespace/018-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/whitespace/span-in-word-space-causes-overflow-expected.png b/LayoutTests/platform/wpe/fast/text/whitespace/span-in-word-space-causes-overflow-expected.png deleted file mode 100644 index 35e0d0e9fda57..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/whitespace/span-in-word-space-causes-overflow-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/text/word-space-expected.png b/LayoutTests/platform/wpe/fast/text/word-space-expected.png deleted file mode 100644 index d19b9058f7efb..0000000000000 Binary files a/LayoutTests/platform/wpe/fast/text/word-space-expected.png and /dev/null differ diff --git a/LayoutTests/platform/wpe/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt b/LayoutTests/platform/wpe/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt deleted file mode 100644 index b7eb70a51dc12..0000000000000 --- a/LayoutTests/platform/wpe/fast/writing-mode/horizontal-bt-replaced-selection-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,433) size 800x167 - RenderBlock {HTML} at (0,0) size 800x167 - RenderBody {BODY} at (8,8) size 784x151 - RenderText {#text} at (0,1) size 391x40 - text run at (0,1) width 391: "This is the first line of text." - RenderBR {BR} at (391,1) size 0x40 - RenderImage {IMG} at (0,51) size 20x50 [bgcolor=#008000] - RenderText {#text} at (20,43) size 379x40 - text run at (20,43) width 379: " This is the second line of " - RenderImage {IMG} at (399,51) size 20x100 [bgcolor=#800080] - RenderText {#text} at (419,43) size 72x40 - text run at (419,43) width 72: " text." -selection start: position 1 of child 0 {#text} of body -selection end: position 1 of child 3 {IMG} of body diff --git a/LayoutTests/platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-expected.txt b/LayoutTests/platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-expected.txt deleted file mode 100644 index 3bfc60e278a80..0000000000000 --- a/LayoutTests/platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 167x600 - RenderBlock {HTML} at (0,0) size 167x600 - RenderBody {BODY} at (8,8) size 151x584 - RenderText {#text} at (1,0) size 40x391 - text run at (1,0) width 391: "This is the first line of text." - RenderBR {BR} at (1,391) size 40x0 - RenderImage {IMG} at (51,0) size 50x20 [bgcolor=#008000] - RenderText {#text} at (43,20) size 40x379 - text run at (43,20) width 379: " This is the second line of " - RenderImage {IMG} at (51,399) size 100x20 [bgcolor=#800080] - RenderText {#text} at (43,419) size 40x72 - text run at (43,419) width 72: " text." -selection start: position 1 of child 0 {#text} of body -selection end: position 1 of child 3 {IMG} of body diff --git a/LayoutTests/platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt b/LayoutTests/platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt deleted file mode 100644 index 4595bebc019a9..0000000000000 --- a/LayoutTests/platform/wpe/fast/writing-mode/vertical-lr-replaced-selection-mixed-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 158x600 - RenderBlock {HTML} at (0,0) size 158x600 - RenderBody {BODY} at (8,8) size 142x584 - RenderText {#text} at (1,0) size 40x391 - text run at (1,0) width 391: "This is the first line of text." - RenderBR {BR} at (1,391) size 40x0 - RenderImage {IMG} at (67,0) size 50x20 [bgcolor=#008000] - RenderText {#text} at (72,20) size 40x379 - text run at (72,20) width 379: " This is the second line of " - RenderImage {IMG} at (42,399) size 100x20 [bgcolor=#800080] - RenderText {#text} at (72,419) size 40x72 - text run at (72,419) width 72: " text." -selection start: position 1 of child 0 {#text} of body -selection end: position 1 of child 3 {IMG} of body diff --git a/LayoutTests/platform/wpe/fast/writing-mode/vertical-rl-replaced-selection-expected.txt b/LayoutTests/platform/wpe/fast/writing-mode/vertical-rl-replaced-selection-expected.txt deleted file mode 100644 index 78f544e83d45a..0000000000000 --- a/LayoutTests/platform/wpe/fast/writing-mode/vertical-rl-replaced-selection-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (633,0) size 167x600 - RenderBlock {HTML} at (0,0) size 167x600 - RenderBody {BODY} at (8,8) size 151x584 - RenderText {#text} at (1,0) size 40x391 - text run at (1,0) width 391: "This is the first line of text." - RenderBR {BR} at (1,391) size 40x0 - RenderImage {IMG} at (92,0) size 50x20 [bgcolor=#008000] - RenderText {#text} at (110,20) size 40x379 - text run at (110,20) width 379: " This is the second line of " - RenderImage {IMG} at (42,399) size 100x20 [bgcolor=#800080] - RenderText {#text} at (110,419) size 40x72 - text run at (110,419) width 72: " text." -selection start: position 1 of child 0 {#text} of body -selection end: position 1 of child 3 {IMG} of body diff --git a/LayoutTests/platform/wpe/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt b/LayoutTests/platform/wpe/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt deleted file mode 100644 index 459081fecb77e..0000000000000 --- a/LayoutTests/platform/wpe/fast/writing-mode/vertical-rl-replaced-selection-mixed-expected.txt +++ /dev/null @@ -1,16 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (642,0) size 158x600 - RenderBlock {HTML} at (0,0) size 158x600 - RenderBody {BODY} at (8,8) size 142x584 - RenderText {#text} at (1,0) size 40x391 - text run at (1,0) width 391: "This is the first line of text." - RenderBR {BR} at (1,391) size 40x0 - RenderImage {IMG} at (67,0) size 50x20 [bgcolor=#008000] - RenderText {#text} at (72,20) size 40x379 - text run at (72,20) width 379: " This is the second line of " - RenderImage {IMG} at (42,399) size 100x20 [bgcolor=#800080] - RenderText {#text} at (72,419) size 40x72 - text run at (72,419) width 72: " text." -selection start: position 1 of child 0 {#text} of body -selection end: position 1 of child 3 {IMG} of body diff --git a/LayoutTests/platform/wpe/http/tests/cache/iframe-304-crash-expected.txt b/LayoutTests/platform/wpe/http/tests/cache/iframe-304-crash-expected.txt deleted file mode 100644 index 725e9d0f27af9..0000000000000 --- a/LayoutTests/platform/wpe/http/tests/cache/iframe-304-crash-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -http://127.0.0.1:8000/cache/iframe-304-crash.html - didFinishLoading -http://127.0.0.1:8000/cache/resources/iframe304.py - willSendRequest redirectResponse (null) -http://127.0.0.1:8000/cache/resources/iframe304.py - didReceiveResponse -http://127.0.0.1:8000/cache/resources/iframe304.py - didFinishLoading -http://127.0.0.1:8000/cache/resources/iframe304.py - willSendRequest redirectResponse (null) -http://127.0.0.1:8000/cache/resources/iframe304.py - didReceiveResponse -http://127.0.0.1:8000/cache/resources/iframe304.py - didFinishLoading - diff --git a/LayoutTests/platform/wpe/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html b/LayoutTests/platform/wpe/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html deleted file mode 100644 index e713046d77885..0000000000000 --- a/LayoutTests/platform/wpe/http/tests/scroll-to-text-fragment/clear-on-new-fragment-navigation-expected.html +++ /dev/null @@ -1,13 +0,0 @@ - - - -Scroll to text fragment - second navigation clears first highlight - - -

    The test passes if only the 2nd word has a yellow background.

    -
    First
    -
    Second
    diff --git a/LayoutTests/platform/wpe/http/tests/security/xss-DENIED-xsl-external-entity-expected.txt b/LayoutTests/platform/wpe/http/tests/security/xss-DENIED-xsl-external-entity-expected.txt new file mode 100644 index 0000000000000..4711c3b3de67e --- /dev/null +++ b/LayoutTests/platform/wpe/http/tests/security/xss-DENIED-xsl-external-entity-expected.txt @@ -0,0 +1,5 @@ +CONSOLE MESSAGE: Unsafe attempt to load URL http://localhost:8000/security/resources/target.xml from origin http://127.0.0.1:8000. Domains, protocols and ports must match. + +CONSOLE MESSAGE: XSLT is deprecated and will be removed in a future version of WebKit. +This test includes a cross-origin external entity. It passes if the load fails and thus there is no text below this line. + diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt deleted file mode 100644 index 878c9a5ff3111..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any-expected.txt +++ /dev/null @@ -1,430 +0,0 @@ - -PASS Bad algorithm: generateKey(AES, false, [decrypt]) -PASS Bad algorithm: generateKey(AES, true, [decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [decrypt]) -PASS Bad algorithm: generateKey(AES, false, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, true, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, false, [sign]) -PASS Bad algorithm: generateKey(AES, true, [sign]) -PASS Bad algorithm: generateKey(AES, RED, [sign]) -PASS Bad algorithm: generateKey(AES, 7, [sign]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits]) -PASS Bad algorithm: generateKey(AES, false, []) -PASS Bad algorithm: generateKey(AES, true, []) -PASS Bad algorithm: generateKey(AES, RED, []) -PASS Bad algorithm: generateKey(AES, 7, []) -PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, false, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [sign]) -PASS Bad algorithm: generateKey({name: AES}, true, [sign]) -PASS Bad algorithm: generateKey({name: AES}, RED, [sign]) -PASS Bad algorithm: generateKey({name: AES}, 7, [sign]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, false, []) -PASS Bad algorithm: generateKey({name: AES}, true, []) -PASS Bad algorithm: generateKey({name: AES}, RED, []) -PASS Bad algorithm: generateKey({name: AES}, 7, []) -PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, false, [decrypt]) -PASS Empty algorithm: generateKey({}, true, [decrypt]) -PASS Empty algorithm: generateKey({}, RED, [decrypt]) -PASS Empty algorithm: generateKey({}, 7, [decrypt]) -PASS Empty algorithm: generateKey({}, false, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, true, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, RED, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, 7, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, false, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, true, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, false, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, true, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, false, [sign]) -PASS Empty algorithm: generateKey({}, true, [sign]) -PASS Empty algorithm: generateKey({}, RED, [sign]) -PASS Empty algorithm: generateKey({}, 7, [sign]) -PASS Empty algorithm: generateKey({}, false, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, true, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, false, [deriveBits]) -PASS Empty algorithm: generateKey({}, true, [deriveBits]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits]) -PASS Empty algorithm: generateKey({}, false, []) -PASS Empty algorithm: generateKey({}, true, []) -PASS Empty algorithm: generateKey({}, RED, []) -PASS Empty algorithm: generateKey({}, 7, []) -PASS Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify]) -PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) -PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt deleted file mode 100644 index 878c9a5ff3111..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_RSA-PSS.https.any.worker-expected.txt +++ /dev/null @@ -1,430 +0,0 @@ - -PASS Bad algorithm: generateKey(AES, false, [decrypt]) -PASS Bad algorithm: generateKey(AES, true, [decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [decrypt]) -PASS Bad algorithm: generateKey(AES, false, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, true, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey(AES, false, [sign]) -PASS Bad algorithm: generateKey(AES, true, [sign]) -PASS Bad algorithm: generateKey(AES, RED, [sign]) -PASS Bad algorithm: generateKey(AES, 7, [sign]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey(AES, false, [deriveBits]) -PASS Bad algorithm: generateKey(AES, true, [deriveBits]) -PASS Bad algorithm: generateKey(AES, RED, [deriveBits]) -PASS Bad algorithm: generateKey(AES, 7, [deriveBits]) -PASS Bad algorithm: generateKey(AES, false, []) -PASS Bad algorithm: generateKey(AES, true, []) -PASS Bad algorithm: generateKey(AES, RED, []) -PASS Bad algorithm: generateKey(AES, 7, []) -PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, false, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: AES}, false, [sign]) -PASS Bad algorithm: generateKey({name: AES}, true, [sign]) -PASS Bad algorithm: generateKey({name: AES}, RED, [sign]) -PASS Bad algorithm: generateKey({name: AES}, 7, [sign]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, false, []) -PASS Bad algorithm: generateKey({name: AES}, true, []) -PASS Bad algorithm: generateKey({name: AES}, RED, []) -PASS Bad algorithm: generateKey({name: AES}, 7, []) -PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, []) -PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, []) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, []) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, []) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, []) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, false, [decrypt]) -PASS Empty algorithm: generateKey({}, true, [decrypt]) -PASS Empty algorithm: generateKey({}, RED, [decrypt]) -PASS Empty algorithm: generateKey({}, 7, [decrypt]) -PASS Empty algorithm: generateKey({}, false, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, true, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, RED, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, 7, [sign, decrypt]) -PASS Empty algorithm: generateKey({}, false, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, true, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign, decrypt]) -PASS Empty algorithm: generateKey({}, false, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, true, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits, decrypt]) -PASS Empty algorithm: generateKey({}, false, [sign]) -PASS Empty algorithm: generateKey({}, true, [sign]) -PASS Empty algorithm: generateKey({}, RED, [sign]) -PASS Empty algorithm: generateKey({}, 7, [sign]) -PASS Empty algorithm: generateKey({}, false, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, true, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits, sign]) -PASS Empty algorithm: generateKey({}, false, [deriveBits]) -PASS Empty algorithm: generateKey({}, true, [deriveBits]) -PASS Empty algorithm: generateKey({}, RED, [deriveBits]) -PASS Empty algorithm: generateKey({}, 7, [deriveBits]) -PASS Empty algorithm: generateKey({}, false, []) -PASS Empty algorithm: generateKey({}, true, []) -PASS Empty algorithm: generateKey({}, RED, []) -PASS Empty algorithm: generateKey({}, 7, []) -PASS Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) -PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify]) -PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify]) -PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) -PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) -PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt deleted file mode 100644 index 94902bac694af..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any-expected.txt +++ /dev/null @@ -1,1058 +0,0 @@ - -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt deleted file mode 100644 index 94902bac694af..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.any.worker-expected.txt +++ /dev/null @@ -1,1058 +0,0 @@ - -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, true, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, true, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey, encrypt]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [wrapKey]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-OAEP}, false, [encrypt, wrapKey, encrypt, wrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey, decrypt]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [unwrapKey]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-OAEP}, false, [decrypt, unwrapKey, decrypt, unwrapKey]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-OAEP}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSA-PSS}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSA-PSS}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSA-PSS}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (pkcs8, buffer(636), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 1024 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 1024 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (spki, buffer(294), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (pkcs8, buffer(1218), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 2048 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 2048 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-1, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-256, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-384, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, true, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify]) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (spki, buffer(550), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [verify, verify]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (pkcs8, buffer(2376), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (pkcs8, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign]) -PASS Good parameters: 4096 bits (jwk, object(kty, n, e, d, p, q, dp, dq, qi), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, [sign, sign]) -PASS Empty Usages: 4096 bits (jwk, object(spki, pkcs8, jwk), {hash: SHA-512, name: RSASSA-PKCS1-v1_5}, false, []) - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/cookies/prefix/__HostHttp.https-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/cookies/prefix/__HostHttp.https-expected.txt deleted file mode 100644 index c42d1f2a06217..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/cookies/prefix/__HostHttp.https-expected.txt +++ /dev/null @@ -1,9 +0,0 @@ - -FAIL __HostHttp: Does not set via DOM 'Secure; Path=/' assert_equals: `__HostHttp-prefixtestcookie=foo1` in `document.cookie` expected false but got true -FAIL __HostHttp: Does not set via DOM with Domain attribute 'Secure; Path=/; Domain=web-platform.test' assert_equals: `__HostHttp-prefixtestcookie=foo2` in `document.cookie` expected false but got true -FAIL __HostHttp: Does not set via HTTP with 'Secure; Path=/' assert_equals: expected (undefined) undefined but got (string) "bar1" -PASS __HostHttp: Set via HTTP with 'Secure; Path=/; httponly' -FAIL __HostHttp: Does not set via HTTP with 'Secure; Path=/cookies/; httponly' assert_equals: expected (undefined) undefined but got (string) "bar3" -FAIL __HostHttp: Does not set via HTTP with 'Path=/;' (without Secure) assert_equals: expected (undefined) undefined but got (string) "bar4" -FAIL __HostHttp: Does not set via HTTP with Domain attribute 'Secure; Path=/; Domain=web-platform.test' assert_equals: expected (undefined) undefined but got (string) "bar5" - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/align-self-006-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/align-self-006-expected.txt deleted file mode 100644 index 6e3df4eb2869a..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/align-self-006-expected.txt +++ /dev/null @@ -1,25 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x160 - RenderBlock {HTML} at (0,0) size 800x160 - RenderBody {BODY} at (8,16) size 784x136 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 636x17 - text run at (0,0) width 636: "Test passes if the underline of all 'a' characters within black border box is horizontal and no breaking." - RenderFlexibleBox {DIV} at (0,34) size 784x102 [border: (1px solid #000000)] - RenderBlock {DIV} at (1,10) size 30x90 - RenderInline {A} at (0,0) size 27x22 [color=#0000EE] - RenderText {#text} at (0,0) size 27x22 - text run at (0,0) width 27: "aaa" - RenderBlock {DIV} at (31,19) size 30x50 - RenderInline {A} at (0,0) size 20x11 [color=#0000EE] - RenderText {#text} at (0,0) size 20x11 - text run at (0,0) width 20: "aaaaa" - RenderBlock {DIV} at (61,1) size 30x100 - RenderInline {A} at (0,0) size 26x33 [color=#0000EE] - RenderText {#text} at (0,0) size 26x33 - text run at (0,0) width 26: "aa" - RenderBlock {DIV} at (91,15) size 30x80 - RenderInline {A} at (0,0) size 21x16 [color=#0000EE] - RenderText {#text} at (0,0) size 21x16 - text run at (0,0) width 21: "aaa" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/align-self-010-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/align-self-010-expected.txt deleted file mode 100644 index 6e3df4eb2869a..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/align-self-010-expected.txt +++ /dev/null @@ -1,25 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x160 - RenderBlock {HTML} at (0,0) size 800x160 - RenderBody {BODY} at (8,16) size 784x136 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 636x17 - text run at (0,0) width 636: "Test passes if the underline of all 'a' characters within black border box is horizontal and no breaking." - RenderFlexibleBox {DIV} at (0,34) size 784x102 [border: (1px solid #000000)] - RenderBlock {DIV} at (1,10) size 30x90 - RenderInline {A} at (0,0) size 27x22 [color=#0000EE] - RenderText {#text} at (0,0) size 27x22 - text run at (0,0) width 27: "aaa" - RenderBlock {DIV} at (31,19) size 30x50 - RenderInline {A} at (0,0) size 20x11 [color=#0000EE] - RenderText {#text} at (0,0) size 20x11 - text run at (0,0) width 20: "aaaaa" - RenderBlock {DIV} at (61,1) size 30x100 - RenderInline {A} at (0,0) size 26x33 [color=#0000EE] - RenderText {#text} at (0,0) size 26x33 - text run at (0,0) width 26: "aa" - RenderBlock {DIV} at (91,15) size 30x80 - RenderInline {A} at (0,0) size 21x16 [color=#0000EE] - RenderText {#text} at (0,0) size 21x16 - text run at (0,0) width 21: "aaa" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-001-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-001-visual-expected.txt deleted file mode 100644 index 9fd37551772c9..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-001-visual-expected.txt +++ /dev/null @@ -1,24 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x294 - RenderBlock {HTML} at (0,0) size 800x294 - RenderBody {BODY} at (8,16) size 784x270 - RenderBlock {P} at (0,0) size 784x54 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 608x17 - text run at (0,18) width 608: "1. the rectangle 1, 2, 3 show up in a vertical column in a red rectangle and no gap between them." - RenderBR {BR} at (608,18) size 0x17 - RenderText {#text} at (0,36) size 346x17 - text run at (0,36) width 346: "2. They are all appear in upper left of the red rectangle." - RenderFlexibleBox {DIV} at (0,70) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (0,0) size 50x50 [bgcolor=#7FFF00] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "1" - RenderBlock {DIV} at (0,50) size 50x50 [bgcolor=#00FFFF] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "2" - RenderBlock {DIV} at (0,100) size 50x50 [bgcolor=#4169E1] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-reverse-001-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-reverse-001-visual-expected.txt deleted file mode 100644 index dc0a17e57bad8..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-reverse-001-visual-expected.txt +++ /dev/null @@ -1,24 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x294 - RenderBlock {HTML} at (0,0) size 800x294 - RenderBody {BODY} at (8,16) size 784x270 - RenderBlock {P} at (0,0) size 784x54 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 608x17 - text run at (0,18) width 608: "1. the rectangle 1, 2, 3 show up in a vertical column in a red rectangle and no gap between them." - RenderBR {BR} at (608,18) size 0x17 - RenderText {#text} at (0,36) size 668x17 - text run at (0,36) width 668: "2. the rectangle 1, 2, 3 appear in bottom left of red rectangle and from top to bottom of the column: 3, 2, 1." - RenderFlexibleBox {DIV} at (0,70) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (0,150) size 50x50 [bgcolor=#7FFF00] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "1" - RenderBlock {DIV} at (0,100) size 50x50 [bgcolor=#00FFFF] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "2" - RenderBlock {DIV} at (0,50) size 50x50 [bgcolor=#4169E1] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-reverse-002-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-reverse-002-visual-expected.txt deleted file mode 100644 index b8961b56b51cf..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-column-reverse-002-visual-expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x98 - RenderBlock {HTML} at (0,0) size 800x98 - RenderBody {BODY} at (8,16) size 784x18 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 351x17 - text run at (0,0) width 351: "Test passes if both the two columns below are identical." - RenderFlexibleBox {DIV} at (0,34) size 12x48 - RenderBlock {SPAN} at (0,0) size 12x16 - RenderText {#text} at (0,0) size 12x17 - text run at (0,0) width 12: "A" - RenderBlock {SPAN} at (0,16) size 12x16 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "B" - RenderBlock {SPAN} at (0,32) size 12x16 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "C" - RenderFlexibleBox {DIV} at (12,34) size 12x48 - RenderBlock {SPAN} at (0,32) size 12x16 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "C" - RenderBlock {SPAN} at (0,16) size 12x16 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "B" - RenderBlock {SPAN} at (0,0) size 12x16 - RenderText {#text} at (0,0) size 12x17 - text run at (0,0) width 12: "A" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-001-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-001-visual-expected.txt deleted file mode 100644 index 3eb87c75c05e7..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-001-visual-expected.txt +++ /dev/null @@ -1,24 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x294 - RenderBlock {HTML} at (0,0) size 800x294 - RenderBody {BODY} at (8,16) size 784x270 - RenderBlock {P} at (0,0) size 784x54 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 536x17 - text run at (0,18) width 536: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle and no gap between them." - RenderBR {BR} at (536,18) size 0x17 - RenderText {#text} at (0,36) size 372x17 - text run at (0,36) width 372: "2. the rectangle 1, 2, 3 appear in upper left of red rectangle." - RenderFlexibleBox {DIV} at (0,70) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (0,0) size 50x50 [bgcolor=#7FFF00] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "1" - RenderBlock {DIV} at (50,0) size 50x50 [bgcolor=#00FFFF] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "2" - RenderBlock {DIV} at (100,0) size 50x50 [bgcolor=#4169E1] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-002-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-002-visual-expected.txt deleted file mode 100644 index 004b491b13336..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-002-visual-expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x94 - RenderBlock {HTML} at (0,0) size 800x94 - RenderBody {BODY} at (8,16) size 784x70 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 299x17 - text run at (0,0) width 299: "Test passes if both the lines below are identical." - RenderFlexibleBox {DIV} at (0,34) size 48x18 - RenderBlock {SPAN} at (0,0) size 16x18 - RenderText {#text} at (0,0) size 12x17 - text run at (0,0) width 12: "A" - RenderBlock {SPAN} at (16,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "B" - RenderBlock {SPAN} at (32,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "C" - RenderFlexibleBox {DIV} at (0,52) size 48x18 - RenderBlock {SPAN} at (32,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "C" - RenderBlock {SPAN} at (16,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "B" - RenderBlock {SPAN} at (0,0) size 16x18 - RenderText {#text} at (0,0) size 12x17 - text run at (0,0) width 12: "A" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-reverse-001-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-reverse-001-visual-expected.txt deleted file mode 100644 index f1f5f39edf01d..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-reverse-001-visual-expected.txt +++ /dev/null @@ -1,24 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x294 - RenderBlock {HTML} at (0,0) size 800x294 - RenderBody {BODY} at (8,16) size 784x270 - RenderBlock {P} at (0,0) size 784x54 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 536x17 - text run at (0,18) width 536: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle and no gap between them." - RenderBR {BR} at (536,18) size 0x17 - RenderText {#text} at (0,36) size 632x17 - text run at (0,36) width 632: "2. the rectangle 1, 2, 3 appear in upper right of red rectangle and from left to right of the row: 3, 2, 1." - RenderFlexibleBox {DIV} at (0,70) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (150,0) size 50x50 [bgcolor=#7FFF00] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "1" - RenderBlock {DIV} at (100,0) size 50x50 [bgcolor=#00FFFF] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "2" - RenderBlock {DIV} at (50,0) size 50x50 [bgcolor=#4169E1] - RenderText {#text} at (20,0) size 10x22 - text run at (20,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-reverse-002-visual-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-reverse-002-visual-expected.txt deleted file mode 100644 index 004b491b13336..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flex-direction-row-reverse-002-visual-expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x94 - RenderBlock {HTML} at (0,0) size 800x94 - RenderBody {BODY} at (8,16) size 784x70 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 299x17 - text run at (0,0) width 299: "Test passes if both the lines below are identical." - RenderFlexibleBox {DIV} at (0,34) size 48x18 - RenderBlock {SPAN} at (0,0) size 16x18 - RenderText {#text} at (0,0) size 12x17 - text run at (0,0) width 12: "A" - RenderBlock {SPAN} at (16,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "B" - RenderBlock {SPAN} at (32,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "C" - RenderFlexibleBox {DIV} at (0,52) size 48x18 - RenderBlock {SPAN} at (32,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "C" - RenderBlock {SPAN} at (16,0) size 16x18 - RenderText {#text} at (0,0) size 11x17 - text run at (0,0) width 11: "B" - RenderBlock {SPAN} at (0,0) size 16x18 - RenderText {#text} at (0,0) size 12x17 - text run at (0,0) width 12: "A" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest-expected.txt deleted file mode 100644 index ef8bea56def45..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/flexbox-order-from-lowest-expected.txt +++ /dev/null @@ -1,18 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x108 - RenderBlock {HTML} at (0,0) size 800x108 - RenderBody {BODY} at (8,16) size 784x84 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 386x17 - text run at (0,0) width 386: "Test passes if the paragraph below reads 'First,Second,Third'." - RenderFlexibleBox {DIV} at (0,34) size 784x50 - RenderBlock {P} at (83,16) size 35x18 - RenderText {#text} at (0,0) size 35x17 - text run at (0,0) width 35: "Third" - RenderBlock {P} at (32,16) size 51x18 - RenderText {#text} at (0,0) size 51x17 - text run at (0,0) width 51: "Second," - RenderBlock {P} at (0,16) size 32x18 - RenderText {#text} at (0,0) size 32x17 - text run at (0,0) width 32: "First," diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_center-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_center-expected.txt deleted file mode 100644 index 801871bc315f0..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_center-expected.txt +++ /dev/null @@ -1,31 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x348 - RenderBlock {HTML} at (0,0) size 800x348 - RenderBody {BODY} at (8,16) size 784x324 - RenderBlock {P} at (0,0) size 784x108 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 536x17 - text run at (0,18) width 536: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle and no gap between them." - RenderBR {BR} at (536,18) size 0x17 - RenderText {#text} at (0,36) size 355x17 - text run at (0,36) width 355: "2. the rectangle 1, 2, 3 appear in middle of red rectangle." - RenderBR {BR} at (355,36) size 0x17 - RenderText {#text} at (0,54) size 783x35 - text run at (0,54) width 783: "3. equal amounts of empty space between the left edge of the red rectangle and ractangle 1 and between the right edge of the" - text run at (0,72) width 185: "red rectangle and rectangle 3." - RenderBR {BR} at (185,72) size 0x17 - RenderText {#text} at (0,90) size 447x17 - text run at (0,90) width 447: "4. the height of the 1, 2, 3 is the same as the height of the red rectangle." - RenderFlexibleBox {DIV} at (0,124) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (55,0) size 30x200 [bgcolor=#7FFF00] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "1" - RenderBlock {DIV} at (85,0) size 30x200 [bgcolor=#00FFFF] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "2" - RenderBlock {DIV} at (115,0) size 30x200 [bgcolor=#4169E1] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_flex-end-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_flex-end-expected.txt deleted file mode 100644 index 44cb7d1d33638..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_flex-end-expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x312 - RenderBlock {HTML} at (0,0) size 800x312 - RenderBody {BODY} at (8,16) size 784x288 - RenderBlock {P} at (0,0) size 784x72 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 536x17 - text run at (0,18) width 536: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle and no gap between them." - RenderBR {BR} at (536,18) size 0x17 - RenderText {#text} at (0,36) size 341x17 - text run at (0,36) width 341: "2. the rectangle 1, 2, 3 appear in right of red rectangle." - RenderBR {BR} at (341,36) size 0x17 - RenderText {#text} at (0,54) size 463x17 - text run at (0,54) width 16: "3. " - text run at (16,54) width 447: "3. the height of the 1, 2, 3 is the same as the height of the red rectangle." - RenderFlexibleBox {DIV} at (0,88) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (110,0) size 30x200 [bgcolor=#7FFF00] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "1" - RenderBlock {DIV} at (140,0) size 30x200 [bgcolor=#00FFFF] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "2" - RenderBlock {DIV} at (170,0) size 30x200 [bgcolor=#4169E1] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_flex-start-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_flex-start-expected.txt deleted file mode 100644 index 22fc1cca2c36a..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_flex-start-expected.txt +++ /dev/null @@ -1,27 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x312 - RenderBlock {HTML} at (0,0) size 800x312 - RenderBody {BODY} at (8,16) size 784x288 - RenderBlock {P} at (0,0) size 784x72 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 536x17 - text run at (0,18) width 536: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle and no gap between them." - RenderBR {BR} at (536,18) size 0x17 - RenderText {#text} at (0,36) size 332x17 - text run at (0,36) width 332: "2. the rectangle 1, 2, 3 appear in left of red rectangle." - RenderBR {BR} at (332,36) size 0x17 - RenderText {#text} at (0,54) size 447x17 - text run at (0,54) width 447: "3. the height of the 1, 2, 3 is the same as the height of the red rectangle." - RenderFlexibleBox {DIV} at (0,88) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (0,0) size 30x200 [bgcolor=#7FFF00] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "1" - RenderBlock {DIV} at (30,0) size 30x200 [bgcolor=#00FFFF] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "2" - RenderBlock {DIV} at (60,0) size 30x200 [bgcolor=#4169E1] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_space-around-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_space-around-expected.txt deleted file mode 100644 index 024cffc08e60b..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_space-around-expected.txt +++ /dev/null @@ -1,28 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x330 - RenderBlock {HTML} at (0,0) size 800x330 - RenderBody {BODY} at (8,16) size 784x306 - RenderBlock {P} at (0,0) size 784x90 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 370x17 - text run at (0,18) width 370: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle." - RenderBR {BR} at (370,18) size 0x17 - RenderText {#text} at (0,36) size 754x35 - text run at (0,36) width 754: "2. the rectangle 1, 2, 3 are distributed such that the empty space between any two adjacent rectangle is the same, and the" - text run at (0,54) width 680: "empty space of the row before the first and after the last rectangle are half the size of the other empty spaces." - RenderBR {BR} at (680,54) size 0x17 - RenderText {#text} at (0,72) size 447x17 - text run at (0,72) width 447: "3. the height of the 1, 2, 3 is the same as the height of the red rectangle." - RenderFlexibleBox {DIV} at (0,106) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (18,0) size 31x200 [bgcolor=#7FFF00] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "1" - RenderBlock {DIV} at (84,0) size 31x200 [bgcolor=#00FFFF] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "2" - RenderBlock {DIV} at (151,0) size 31x200 [bgcolor=#4169E1] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_space-between-001-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_space-between-001-expected.txt deleted file mode 100644 index 349dc318880cd..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/justify-content_space-between-001-expected.txt +++ /dev/null @@ -1,29 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x348 - RenderBlock {HTML} at (0,0) size 800x348 - RenderBody {BODY} at (8,16) size 784x324 - RenderBlock {P} at (0,0) size 784x108 - RenderText {#text} at (0,0) size 88x17 - text run at (0,0) width 88: "Test passes if:" - RenderBR {BR} at (88,0) size 0x17 - RenderText {#text} at (0,18) size 370x17 - text run at (0,18) width 370: "1. the rectangle 1, 2, 3 show up in a row in a red rectangle." - RenderBR {BR} at (370,18) size 0x17 - RenderText {#text} at (0,36) size 775x53 - text run at (0,36) width 767: "2. No gap between the left edge of red rectangle and the left of rectangle 1, no gap between the right edge of red rectangle" - text run at (0,54) width 775: "and the right of rectangle 3 too, and rectangle 2 is distributed so that the empty space between rectangle 1 and rectangle 3 is" - text run at (0,72) width 59: "the same." - RenderBR {BR} at (59,72) size 0x17 - RenderText {#text} at (0,90) size 447x17 - text run at (0,90) width 447: "3. the height of the 1, 2, 3 is the same as the height of the red rectangle." - RenderFlexibleBox {DIV} at (0,124) size 200x200 [bgcolor=#FF0000] - RenderBlock {DIV} at (0,0) size 30x200 [bgcolor=#7FFF00] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "1" - RenderBlock {DIV} at (85,0) size 30x200 [bgcolor=#00FFFF] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "2" - RenderBlock {DIV} at (170,0) size 30x200 [bgcolor=#4169E1] - RenderText {#text} at (10,0) size 10x22 - text run at (10,0) width 10: "3" diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/order-001-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/order-001-expected.txt deleted file mode 100644 index b753e82a25775..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-flexbox/order-001-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x176 - RenderBlock {HTML} at (0,0) size 800x176 - RenderBody {BODY} at (8,16) size 784x152 - RenderBlock {P} at (0,0) size 784x36 - RenderText {#text} at (0,0) size 750x35 - text run at (0,0) width 750: "Test passes if there is a single blue rectangle on the left, a single orange rectangle directly to its right, and there is no red" - text run at (0,18) width 122: "visible on the page." - RenderFlexibleBox {DIV} at (0,52) size 300x100 [bgcolor=#FF0000] - RenderBlock {DIV} at (150,0) size 150x100 [bgcolor=#FFA500] - RenderBlock {DIV} at (0,0) size 150x100 [bgcolor=#0000FF] diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt deleted file mode 100644 index 314e4a99510ee..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-fonts/generic-family-keywords-002-expected.txt +++ /dev/null @@ -1,26 +0,0 @@ -00000 -00000 - -FAIL font-family: -webkit-serif treated as , not assert_equals: expected 50 but got 25 -PASS font-family: -webkit-sans-serif treated as , not -FAIL font-family: -webkit-cursive treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-fantasy treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-monospace treated as , not assert_equals: expected 50 but got 30 -FAIL font-family: -webkit-system-ui treated as , not assert_equals: expected 50 but got 30 -PASS font-family: -webkit-math treated as , not -FAIL font-family: -webkit-generic(fangsong) treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-generic(kai) treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-generic(khmer-mul) treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-generic(nastaliq) treated as , not assert_equals: expected 50 but got 25 -PASS font-family: -webkit-ui-serif treated as , not -PASS font-family: -webkit-ui-sans-serif treated as , not -PASS font-family: -webkit-ui-monospace treated as , not -PASS font-family: -webkit-ui-rounded treated as , not -PASS font-family: NonGenericFontFamilyName treated as , not -FAIL font-family: -webkit-body treated as , not assert_equals: expected 50 but got 25 -FAIL font-family: -webkit-standard treated as , not assert_equals: expected 50 but got 25 -PASS font-family: -webkit-pictograph treated as , not -PASS font-family: emoji treated as , not -PASS font-family: fangsong treated as , not -PASS font-family: BlinkMacSystemFont treated as , not - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-multicol/multicol-fill-balance-021-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-multicol/multicol-fill-balance-021-expected.txt new file mode 100644 index 0000000000000..ed8a753275f98 --- /dev/null +++ b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-multicol/multicol-fill-balance-021-expected.txt @@ -0,0 +1,3 @@ + +FAIL Ruby text should affect column height assert_equals: expected 100 but got 69 + diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-180-degrees-001-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-180-degrees-001-expected.txt deleted file mode 100644 index 932f575ac648c..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-180-degrees-001-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x50 - RenderBlock {HTML} at (0,0) size 800x50 - RenderBody {BODY} at (8,16) size 784x18 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 435x17 - text run at (0,0) width 435: "Test passes if there is a black line on the top of green box and no red." -layer at (8,50) size 110x110 - RenderBlock (positioned) {DIV} at (8,50) size 110x110 [bgcolor=#FF0000] -layer at (8,50) size 110x110 - RenderBlock (positioned) {DIV} at (8,50) size 110x110 [bgcolor=#008000] [border: (5px solid #00000000) (5px solid #000000) (5px solid #00000000)] diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-270-degrees-001-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-270-degrees-001-expected.txt deleted file mode 100644 index 8e002e7c86b6a..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-270-degrees-001-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x50 - RenderBlock {HTML} at (0,0) size 800x50 - RenderBody {BODY} at (8,16) size 784x18 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 444x17 - text run at (0,0) width 444: "Test passes if there is a black line on the right of green box and no red." -layer at (8,50) size 110x110 - RenderBlock (positioned) {DIV} at (8,50) size 110x110 [bgcolor=#FF0000] -layer at (8,50) size 110x110 - RenderBlock (positioned) {DIV} at (8,50) size 110x110 [bgcolor=#008000] [border: (5px solid #00000000) (5px solid #000000) (5px solid #00000000)] diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-90-degrees-001-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-90-degrees-001-expected.txt deleted file mode 100644 index c5689942498f4..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-transforms/rotate-90-degrees-001-expected.txt +++ /dev/null @@ -1,12 +0,0 @@ -layer at (0,0) size 800x600 - RenderView at (0,0) size 800x600 -layer at (0,0) size 800x50 - RenderBlock {HTML} at (0,0) size 800x50 - RenderBody {BODY} at (8,16) size 784x18 - RenderBlock {P} at (0,0) size 784x18 - RenderText {#text} at (0,0) size 435x17 - text run at (0,0) width 435: "Test passes if there is a black line on the left of green box and no red." -layer at (8,50) size 110x110 - RenderBlock (positioned) {DIV} at (8,50) size 110x110 [bgcolor=#FF0000] -layer at (8,50) size 110x110 - RenderBlock (positioned) {DIV} at (8,50) size 110x110 [bgcolor=#008000] [border: (5px solid #00000000) (5px solid #000000) (5px solid #00000000)] diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt deleted file mode 100644 index ede19dd54c3bb..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/selectors/focus-visible-002-expected.txt +++ /dev/null @@ -1,35 +0,0 @@ -This test checks that :focus-visible always matches on elements which take text input, regardless of focus mechanism. -If the user-agent does not claim to support the :focus-visible pseudo-class then SKIP this test. -Click each form element below to focus it. -If the element has a red background, then the test result is FAILURE. If the element has a green outline, then the test result is SUCCESS. - - - - - - - - - - - - - - - - -PASS Focus element INPUT#input1 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input2 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input3 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input4 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input5 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input6 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input7 via mouse should match :focus-visible as it supports keyboard input -PASS Focus element INPUT#input8 via mouse should match :focus-visible as it supports keyboard input -FAIL Focus element INPUT#input9 via mouse should match :focus-visible as it supports keyboard input assert_equals: outlineColor for INPUT#input9 should be green expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)" -FAIL Focus element INPUT#input10 via mouse should match :focus-visible as it supports keyboard input assert_equals: outlineColor for INPUT#input10 should be green expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)" -FAIL Focus element INPUT#input11 via mouse should match :focus-visible as it supports keyboard input assert_equals: outlineColor for INPUT#input11 should be green expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)" -FAIL Focus element INPUT#input12 via mouse should match :focus-visible as it supports keyboard input assert_equals: outlineColor for INPUT#input12 should be green expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)" -FAIL Focus element INPUT#input13 via mouse should match :focus-visible as it supports keyboard input assert_equals: outlineColor for INPUT#input13 should be green expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)" -PASS Focus element TEXTAREA#input14 via mouse should match :focus-visible as it supports keyboard input - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt deleted file mode 100644 index b0c8a9fb7daf9..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt +++ /dev/null @@ -1,70 +0,0 @@ - -PASS Applies "alert" via Element Internals -PASS Applies "alertdialog" via Element Internals -PASS Applies "application" via Element Internals -PASS Applies "article" via Element Internals -PASS Applies "banner" via Element Internals -PASS Applies "button" via Element Internals -PASS Applies "cell" via Element Internals -PASS Applies "checkbox" via Element Internals -PASS Applies "combobox" via Element Internals -PASS Applies "complementary" via Element Internals -PASS Applies "contentinfo" via Element Internals -PASS Applies "definition" via Element Internals -PASS Applies "dialog" via Element Internals -PASS Applies "directory" via Element Internals -PASS Applies "document" via Element Internals -PASS Applies "figure" via Element Internals -PASS Applies "form" via Element Internals -PASS Applies "grid" via Element Internals -PASS Applies "group" via Element Internals -PASS Applies "heading" via Element Internals -PASS Applies "img" via Element Internals -PASS Applies "feed" via Element Internals -PASS Applies "link" via Element Internals -PASS Applies "list" via Element Internals -PASS Applies "listbox" via Element Internals -PASS Applies "log" via Element Internals -PASS Applies "main" via Element Internals -PASS Applies "marquee" via Element Internals -PASS Applies "math" via Element Internals -PASS Applies "menu" via Element Internals -PASS Applies "menubar" via Element Internals -PASS Applies "meter" via Element Internals -PASS Applies "navigation" via Element Internals -PASS Applies "note" via Element Internals -PASS Applies "progressbar" via Element Internals -PASS Applies "radio" via Element Internals -PASS Applies "radiogroup" via Element Internals -PASS Applies "region" via Element Internals -PASS Applies "scrollbar" via Element Internals -PASS Applies "search" via Element Internals -PASS Applies "searchbox" via Element Internals -PASS Applies "separator" via Element Internals -PASS Applies "slider" via Element Internals -PASS Applies "spinbutton" via Element Internals -PASS Applies "status" via Element Internals -PASS Applies "switch" via Element Internals -PASS Applies "table" via Element Internals -PASS Applies "tablist" via Element Internals -PASS Applies "tabpanel" via Element Internals -PASS Applies "term" via Element Internals -PASS Applies "textbox" via Element Internals -PASS Applies "timer" via Element Internals -PASS Applies "toolbar" via Element Internals -PASS Applies "tooltip" via Element Internals -PASS Applies "tree" via Element Internals -PASS Applies "treegrid" via Element Internals -PASS Applies parent/child relationship of "table"/"row"/"columnheader" via Element Internals -PASS Applies parent/child relationship of "grid"/"row"/"gridcell" via Element Internals -PASS Applies parent/child relationship of "list"/"listitem" via Element Internals -PASS Applies parent/child relationship of "menu"/"menuitem" via Element Internals -PASS Applies parent/child relationship of "menu"/"menuitemcheckbox" via Element Internals -PASS Applies parent/child relationship of "menu"/"menuitemradio" via Element Internals -PASS Applies parent/child relationship of "listbox"/"option" via Element Internals -PASS Applies parent/child relationship of "table"/"row" via Element Internals -PASS Applies parent/child relationship of "table"/"rowgroup" via Element Internals -PASS Applies parent/child relationship of "table"/"row"/"rowheader" via Element Internals -PASS Applies parent/child relationship of "tablist"/"tab" via Element Internals -FAIL Applies parent/child relationship of "tree"/"treeitem" via Element Internals assert_equals: [object HTMLElement] expected "tree" but got "generic" - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative_type=text-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative_type=text-expected.txt deleted file mode 100644 index e4585da8a2c9c..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative_type=text-expected.txt +++ /dev/null @@ -1,795 +0,0 @@ -Here is Text: - -PASS In , execCommand("getHTML", false, null), a[b]c): The command should not be supported -PASS In , execCommand("getHTML", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("bold", false, bold), a[b]c): The command should be supported -PASS In , execCommand("bold", false, bold), a[b]c): The command should not be enabled -PASS In , execCommand("bold", false, bold), a[b]c): execCommand() should return false -PASS In , execCommand("bold", false, bold), a[b]c): .value should be "a[b]c" -PASS In , execCommand("bold", false, bold), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("bold", false, bold), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("bold", false, bold), a[b]c): input.inputType should be undefined -PASS In , execCommand("bold", false, bold), a[b]c): input.target should be undefined -PASS In , execCommand("italic", false, null), a[b]c): The command should be supported -PASS In , execCommand("italic", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("italic", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("italic", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("italic", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("italic", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("italic", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("italic", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("underline", false, null), a[b]c): The command should be supported -PASS In , execCommand("underline", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("underline", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("underline", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("underline", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("underline", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("underline", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("underline", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): The command should be supported -PASS In , execCommand("strikethrough", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("strikethrough", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("strikethrough", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("strikethrough", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("strikethrough", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): The command should be supported -PASS In , execCommand("superscript", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("superscript", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("superscript", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("superscript", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("superscript", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("cut", false, null), ab[]c): The command should be supported -PASS In , execCommand("cut", false, null), ab[]c): The command should not be enabled -PASS In , execCommand("cut", false, null), ab[]c): execCommand() should return false -PASS In , execCommand("cut", false, null), ab[]c): .value should be "ab[]c" -PASS In , execCommand("cut", false, null), ab[]c): beforeinput.inputType should be undefined -PASS In , execCommand("cut", false, null), ab[]c): beforeinput.target should be undefined -PASS In , execCommand("cut", false, null), ab[]c): input.inputType should be undefined -PASS In , execCommand("cut", false, null), ab[]c): input.target should be undefined -PASS In , execCommand("cut", false, null), a[b]c): The command should be supported -PASS In , execCommand("cut", false, null), a[b]c): The command should be enabled -PASS In , execCommand("cut", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("cut", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("cut", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteByCut" -FAIL In , execCommand("cut", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("cut", false, null), a[b]c): input.inputType should be deleteByCut -PASS In , execCommand("cut", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("copy", false, null), abc[]d): The command should be supported -PASS In , execCommand("copy", false, null), abc[]d): The command should not be enabled -PASS In , execCommand("copy", false, null), abc[]d): execCommand() should return false -PASS In , execCommand("copy", false, null), abc[]d): .value should be "abc[]d" -PASS In , execCommand("copy", false, null), abc[]d): beforeinput.inputType should be undefined -PASS In , execCommand("copy", false, null), abc[]d): beforeinput.target should be undefined -PASS In , execCommand("copy", false, null), abc[]d): input.inputType should be undefined -PASS In , execCommand("copy", false, null), abc[]d): input.target should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): The command should be supported -PASS In , execCommand("copy", false, null), a[bc]d): The command should be enabled -PASS In , execCommand("copy", false, null), a[bc]d): execCommand() should return true -PASS In , execCommand("copy", false, null), a[bc]d): .value should be "a[bc]d" -PASS In , execCommand("copy", false, null), a[bc]d): beforeinput.inputType should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): beforeinput.target should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): input.inputType should be undefined -PASS In , execCommand("copy", false, null), a[bc]d): input.target should be undefined -PASS In , execCommand("paste", false, null), a[]c): The command should be supported -PASS In , execCommand("paste", false, null), a[]c): The command should be enabled -PASS In , execCommand("paste", false, null), a[]c): execCommand() should return true -PASS In , execCommand("paste", false, null), a[]c): .value should be "abc[]c" -FAIL In , execCommand("paste", false, null), a[]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertFromPaste" -FAIL In , execCommand("paste", false, null), a[]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("paste", false, null), a[]c): input.inputType should be insertFromPaste -PASS In , execCommand("paste", false, null), a[]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("delete", false, null), ab[]c): The command should be supported -PASS In , execCommand("delete", false, null), ab[]c): The command should be enabled -PASS In , execCommand("delete", false, null), ab[]c): execCommand() should return true -PASS In , execCommand("delete", false, null), ab[]c): .value should be "a[]c" -FAIL In , execCommand("delete", false, null), ab[]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentBackward" -FAIL In , execCommand("delete", false, null), ab[]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("delete", false, null), ab[]c): input.inputType should be deleteContentBackward -PASS In , execCommand("delete", false, null), ab[]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("delete", false, null), a[b]c): The command should be supported -PASS In , execCommand("delete", false, null), a[b]c): The command should be enabled -PASS In , execCommand("delete", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("delete", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("delete", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentBackward" -FAIL In , execCommand("delete", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("delete", false, null), a[b]c): input.inputType should be deleteContentBackward -PASS In , execCommand("delete", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("forwarddelete", false, null), a[b]c): The command should be supported -PASS In , execCommand("forwarddelete", false, null), a[b]c): The command should be enabled -PASS In , execCommand("forwarddelete", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("forwarddelete", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("forwarddelete", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentForward" -FAIL In , execCommand("forwarddelete", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("forwarddelete", false, null), a[b]c): input.inputType should be deleteContentForward -PASS In , execCommand("forwarddelete", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("forwarddelete", false, null), a[]bc): The command should be supported -PASS In , execCommand("forwarddelete", false, null), a[]bc): The command should be enabled -PASS In , execCommand("forwarddelete", false, null), a[]bc): execCommand() should return true -PASS In , execCommand("forwarddelete", false, null), a[]bc): .value should be "a[]c" -FAIL In , execCommand("forwarddelete", false, null), a[]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentForward" -FAIL In , execCommand("forwarddelete", false, null), a[]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("forwarddelete", false, null), a[]bc): input.inputType should be deleteContentForward -PASS In , execCommand("forwarddelete", false, null), a[]bc): input.target should be [object HTMLInputElement] -PASS In , execCommand("selectall", false, null), a[b]c): The command should be supported -PASS In , execCommand("selectall", false, null), a[b]c): The command should be enabled -PASS In , execCommand("selectall", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("selectall", false, null), a[b]c): .value should be "[abc]" -PASS In , execCommand("selectall", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("selectall", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("selectall", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("selectall", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("undo", false, null), [a]bc): The command should be supported -FAIL In , execCommand("undo", false, null), [a]bc): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("undo", false, null), [a]bc): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("undo", false, null), [a]bc): .value should be "[a]bc" -FAIL In , execCommand("undo", false, null), [a]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In , execCommand("undo", false, null), [a]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In , execCommand("undo", false, null), [a]bc): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In , execCommand("undo", false, null), [a]bc): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("undo", false, null), a[b]c): The command should be supported -PASS In , execCommand("undo", false, null), a[b]c): The command should be enabled -PASS In , execCommand("undo", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("undo", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("undo", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In , execCommand("undo", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("undo", false, null), a[b]c): input.inputType should be historyUndo -PASS In , execCommand("undo", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("redo", false, null), [a]bc): The command should be supported -FAIL In , execCommand("redo", false, null), [a]bc): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("redo", false, null), [a]bc): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("redo", false, null), [a]bc): .value should be "[a]bc" -FAIL In , execCommand("redo", false, null), [a]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In , execCommand("redo", false, null), [a]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In , execCommand("redo", false, null), [a]bc): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In , execCommand("redo", false, null), [a]bc): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("redo", false, null), a[b]c): The command should be supported -PASS In , execCommand("redo", false, null), a[b]c): The command should be enabled -PASS In , execCommand("redo", false, null), a[b]c): execCommand() should return true -PASS In , execCommand("redo", false, null), a[b]c): .value should be "a[]c" -FAIL In , execCommand("redo", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In , execCommand("redo", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("redo", false, null), a[b]c): input.inputType should be historyRedo -PASS In , execCommand("redo", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("indent", false, null), a[b]c): The command should be supported -PASS In , execCommand("indent", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("indent", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("indent", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("indent", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("indent", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("indent", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("indent", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): The command should be supported -PASS In , execCommand("outdent", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("outdent", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("outdent", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("outdent", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("outdent", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): The command should be supported -PASS In , execCommand("backcolor", false, #000000), a[b]c): The command should not be enabled -PASS In , execCommand("backcolor", false, #000000), a[b]c): execCommand() should return false -PASS In , execCommand("backcolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In , execCommand("backcolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In , execCommand("backcolor", false, #000000), a[b]c): input.target should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): The command should be supported -PASS In , execCommand("forecolor", false, #000000), a[b]c): The command should not be enabled -PASS In , execCommand("forecolor", false, #000000), a[b]c): execCommand() should return false -PASS In , execCommand("forecolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In , execCommand("forecolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In , execCommand("forecolor", false, #000000), a[b]c): input.target should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): The command should be supported -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): The command should not be enabled -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): execCommand() should return false -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In , execCommand("hilitecolor", false, #000000), a[b]c): input.target should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): The command should be supported -PASS In , execCommand("fontname", false, DummyFont), a[b]c): The command should not be enabled -PASS In , execCommand("fontname", false, DummyFont), a[b]c): execCommand() should return false -PASS In , execCommand("fontname", false, DummyFont), a[b]c): .value should be "a[b]c" -PASS In , execCommand("fontname", false, DummyFont), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): input.inputType should be undefined -PASS In , execCommand("fontname", false, DummyFont), a[b]c): input.target should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): The command should be supported -PASS In , execCommand("fontsize", false, 5), a[b]c): The command should not be enabled -PASS In , execCommand("fontsize", false, 5), a[b]c): execCommand() should return false -PASS In , execCommand("fontsize", false, 5), a[b]c): .value should be "a[b]c" -PASS In , execCommand("fontsize", false, 5), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): input.inputType should be undefined -PASS In , execCommand("fontsize", false, 5), a[b]c): input.target should be undefined -PASS In , execCommand("increasefontsize", false, null), a[b]c): The command should not be supported -PASS In , execCommand("increasefontsize", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("decreasefontsize", false, null), a[b]c): The command should not be supported -PASS In , execCommand("decreasefontsize", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): The command should be supported -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("inserthorizontalrule", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): The command should be supported -PASS In , execCommand("createlink", false, foo.html), a[b]c): The command should not be enabled -PASS In , execCommand("createlink", false, foo.html), a[b]c): execCommand() should return false -PASS In , execCommand("createlink", false, foo.html), a[b]c): .value should be "a[b]c" -PASS In , execCommand("createlink", false, foo.html), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): input.inputType should be undefined -PASS In , execCommand("createlink", false, foo.html), a[b]c): input.target should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): The command should be supported -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): The command should not be enabled -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): execCommand() should return false -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): .value should be "a[b]c" -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertimage", false, no-image.png), a[b]c): input.target should be undefined -PASS In , execCommand("inserthtml", false, inserted), a[b]c): The command should be supported -PASS In , execCommand("inserthtml", false, inserted), a[b]c): The command should be enabled -PASS In , execCommand("inserthtml", false, inserted), a[b]c): execCommand() should return true -PASS In , execCommand("inserthtml", false, inserted), a[b]c): .value should be "ainserted[]c" -FAIL In , execCommand("inserthtml", false, inserted), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In , execCommand("inserthtml", false, inserted), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("inserthtml", false, inserted), a[b]c): input.inputType should be insertText -PASS In , execCommand("inserthtml", false, inserted), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): The command should be supported -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): The command should be enabled -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): execCommand() should return true -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): .value should be "a**inserted**[]c" -FAIL In , execCommand("inserttext", false, **inserted**), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In , execCommand("inserttext", false, **inserted**), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): input.inputType should be insertText -PASS In , execCommand("inserttext", false, **inserted**), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("inserttext", false, ), a[b]c): The command should be supported -PASS In , execCommand("inserttext", false, ), a[b]c): The command should be enabled -PASS In , execCommand("inserttext", false, ), a[b]c): execCommand() should return true -PASS In , execCommand("inserttext", false, ), a[b]c): .value should be "a[]c" -FAIL In , execCommand("inserttext", false, ), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In , execCommand("inserttext", false, ), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("inserttext", false, ), a[b]c): input.inputType should be insertText -PASS In , execCommand("inserttext", false, ), a[b]c): input.target should be [object HTMLInputElement] -PASS In , execCommand("justifyleft", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifyleft", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifyleft", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifyleft", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifyleft", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifyleft", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifyleft", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifyleft", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifyright", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifyright", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifyright", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifyright", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifyright", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifycenter", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifycenter", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifycenter", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifycenter", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifycenter", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): The command should be supported -PASS In , execCommand("justifyfull", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("justifyfull", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("justifyfull", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("justifyfull", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("justifyfull", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("removeformat", false, null), a[b]c): The command should be supported -FAIL In , execCommand("removeformat", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("removeformat", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("removeformat", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("removeformat", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "" -FAIL In , execCommand("removeformat", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In , execCommand("removeformat", false, null), a[b]c): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "" -FAIL In , execCommand("removeformat", false, null), a[b]c): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("unlink", false, null), a[b]c): The command should be supported -PASS In , execCommand("unlink", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("unlink", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("unlink", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("unlink", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("unlink", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("unlink", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("unlink", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): The command should be supported -PASS In , execCommand("insertorderedlist", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("insertorderedlist", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("insertorderedlist", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("insertorderedlist", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertorderedlist", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): The command should be supported -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): The command should not be enabled -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): execCommand() should return false -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): .value should be "a[b]c" -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertunorderedlist", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertparagraph", false, null), a[b]c): The command should be supported -FAIL In , execCommand("insertparagraph", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("insertparagraph", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("insertparagraph", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("insertparagraph", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertParagraph" -FAIL In , execCommand("insertparagraph", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("insertparagraph", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertparagraph", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("insertlinebreak", false, null), a[b]c): The command should be supported -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("insertlinebreak", false, null), a[b]c): .value should be "a[b]c" -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertLineBreak" -FAIL In , execCommand("insertlinebreak", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In , execCommand("insertlinebreak", false, null), a[b]c): input.inputType should be undefined -PASS In , execCommand("insertlinebreak", false, null), a[b]c): input.target should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): The command should be supported -PASS In , execCommand("formatblock", false, div), a[b]c): The command should not be enabled -PASS In , execCommand("formatblock", false, div), a[b]c): execCommand() should return false -PASS In , execCommand("formatblock", false, div), a[b]c): .value should be "a[b]c" -PASS In , execCommand("formatblock", false, div), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): input.inputType should be undefined -PASS In , execCommand("formatblock", false, div), a[b]c): input.target should be undefined -PASS In , execCommand("heading", false, h1), a[b]c): The command should not be supported -PASS In , execCommand("heading", false, h1), a[b]c): The command should not be enabled -PASS In , execCommand("styleWithCSS", false, true), a[b]c): The command should be supported -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("styleWithCSS", false, true), a[b]c): .value should be "a[b]c" -PASS In , execCommand("styleWithCSS", false, true), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, true), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("styleWithCSS", false, true), a[b]c): input.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, true), a[b]c): input.target should be undefined -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): styleWithCSS state should be false when has focus assert_equals: expected false but got true -FAIL In , execCommand("styleWithCSS", false, true), a[b]c): styleWithCSS state should be false when does not have focus assert_equals: expected false but got true -PASS In , execCommand("styleWithCSS", false, false), a[b]c): The command should be supported -FAIL In , execCommand("styleWithCSS", false, false), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("styleWithCSS", false, false), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("styleWithCSS", false, false), a[b]c): .value should be "a[b]c" -PASS In , execCommand("styleWithCSS", false, false), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): input.inputType should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): input.target should be undefined -PASS In , execCommand("styleWithCSS", false, false), a[b]c): styleWithCSS state should be false when has focus -PASS In , execCommand("styleWithCSS", false, false), a[b]c): styleWithCSS state should be false when does not have focus -PASS In , execCommand("contentReadOnly", false, true), a[b]c): The command should not be supported -PASS In , execCommand("contentReadOnly", false, true), a[b]c): The command should not be enabled -PASS In , execCommand("contentReadOnly", false, false), a[b]c): The command should not be supported -PASS In , execCommand("contentReadOnly", false, false), a[b]c): The command should not be enabled -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): The command should be supported -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): .value should be "a[b]c" -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): input.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, p), a[b]c): input.target should be undefined -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): defaultParagraphSeparator value should be "p" when has focus assert_equals: expected "div" but got "p" -FAIL In , execCommand("defaultParagraphSeparator", false, p), a[b]c): defaultParagraphSeparator value should be "p" when does not have focus assert_equals: expected "div" but got "p" -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): The command should be supported -FAIL In , execCommand("defaultParagraphSeparator", false, div), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In , execCommand("defaultParagraphSeparator", false, div), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): .value should be "a[b]c" -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): beforeinput.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): beforeinput.target should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): input.inputType should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): input.target should be undefined -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): defaultParagraphSeparator value should be "div" when has focus -PASS In , execCommand("defaultParagraphSeparator", false, div), a[b]c): defaultParagraphSeparator value should be "div" when does not have focus -PASS In in contenteditable, execCommand("getHTML", false, null), a[b]c): The command should not be supported -PASS In in contenteditable, execCommand("getHTML", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("bold", false, bold), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("italic", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("underline", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("strikethrough", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("superscript", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): The command should be supported -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): The command should not be enabled -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): execCommand() should return false -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): .value should be "ab[]c" -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("cut", false, null), ab[]c): input.target should be undefined -PASS In in contenteditable, execCommand("cut", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("cut", false, null), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("cut", false, null), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("cut", false, null), a[b]c): .value should be "a[]c" -FAIL In in contenteditable, execCommand("cut", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteByCut" -FAIL In in contenteditable, execCommand("cut", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("cut", false, null), a[b]c): input.inputType should be deleteByCut -PASS In in contenteditable, execCommand("cut", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): The command should be supported -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): The command should not be enabled -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): execCommand() should return false -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): .value should be "abc[]d" -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): input.inputType should be undefined -PASS In in contenteditable, execCommand("copy", false, null), abc[]d): input.target should be undefined -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): The command should be supported -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): The command should be enabled -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): execCommand() should return true -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): .value should be "a[bc]d" -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): input.inputType should be undefined -PASS In in contenteditable, execCommand("copy", false, null), a[bc]d): input.target should be undefined -PASS In in contenteditable, execCommand("paste", false, null), a[]c): The command should be supported -PASS In in contenteditable, execCommand("paste", false, null), a[]c): The command should be enabled -PASS In in contenteditable, execCommand("paste", false, null), a[]c): execCommand() should return true -PASS In in contenteditable, execCommand("paste", false, null), a[]c): .value should be "abc[]c" -FAIL In in contenteditable, execCommand("paste", false, null), a[]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertFromPaste" -FAIL In in contenteditable, execCommand("paste", false, null), a[]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("paste", false, null), a[]c): input.inputType should be insertFromPaste -PASS In in contenteditable, execCommand("paste", false, null), a[]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("delete", false, null), ab[]c): The command should be supported -PASS In in contenteditable, execCommand("delete", false, null), ab[]c): The command should be enabled -PASS In in contenteditable, execCommand("delete", false, null), ab[]c): execCommand() should return true -PASS In in contenteditable, execCommand("delete", false, null), ab[]c): .value should be "a[]c" -FAIL In in contenteditable, execCommand("delete", false, null), ab[]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentBackward" -FAIL In in contenteditable, execCommand("delete", false, null), ab[]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("delete", false, null), ab[]c): input.inputType should be deleteContentBackward -PASS In in contenteditable, execCommand("delete", false, null), ab[]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("delete", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("delete", false, null), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("delete", false, null), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("delete", false, null), a[b]c): .value should be "a[]c" -FAIL In in contenteditable, execCommand("delete", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentBackward" -FAIL In in contenteditable, execCommand("delete", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("delete", false, null), a[b]c): input.inputType should be deleteContentBackward -PASS In in contenteditable, execCommand("delete", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): .value should be "a[]c" -FAIL In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentForward" -FAIL In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): input.inputType should be deleteContentForward -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): The command should be supported -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): The command should be enabled -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): execCommand() should return true -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): .value should be "a[]c" -FAIL In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "deleteContentForward" -FAIL In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): input.inputType should be deleteContentForward -PASS In in contenteditable, execCommand("forwarddelete", false, null), a[]bc): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): .value should be "[abc]" -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("selectall", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("undo", false, null), [a]bc): The command should be supported -FAIL In in contenteditable, execCommand("undo", false, null), [a]bc): The command should not be enabled assert_equals: expected false but got true -FAIL In in contenteditable, execCommand("undo", false, null), [a]bc): execCommand() should return false assert_equals: expected false but got true -PASS In in contenteditable, execCommand("undo", false, null), [a]bc): .value should be "[a]bc" -FAIL In in contenteditable, execCommand("undo", false, null), [a]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In in contenteditable, execCommand("undo", false, null), [a]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In in contenteditable, execCommand("undo", false, null), [a]bc): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In in contenteditable, execCommand("undo", false, null), [a]bc): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("undo", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("undo", false, null), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("undo", false, null), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("undo", false, null), a[b]c): .value should be "a[b]c" -FAIL In in contenteditable, execCommand("undo", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyUndo" -FAIL In in contenteditable, execCommand("undo", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("undo", false, null), a[b]c): input.inputType should be historyUndo -PASS In in contenteditable, execCommand("undo", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("redo", false, null), [a]bc): The command should be supported -FAIL In in contenteditable, execCommand("redo", false, null), [a]bc): The command should not be enabled assert_equals: expected false but got true -FAIL In in contenteditable, execCommand("redo", false, null), [a]bc): execCommand() should return false assert_equals: expected false but got true -PASS In in contenteditable, execCommand("redo", false, null), [a]bc): .value should be "[a]bc" -FAIL In in contenteditable, execCommand("redo", false, null), [a]bc): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In in contenteditable, execCommand("redo", false, null), [a]bc): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In in contenteditable, execCommand("redo", false, null), [a]bc): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In in contenteditable, execCommand("redo", false, null), [a]bc): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("redo", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("redo", false, null), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("redo", false, null), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("redo", false, null), a[b]c): .value should be "a[]c" -FAIL In in contenteditable, execCommand("redo", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "historyRedo" -FAIL In in contenteditable, execCommand("redo", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("redo", false, null), a[b]c): input.inputType should be historyRedo -PASS In in contenteditable, execCommand("redo", false, null), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("indent", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("outdent", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("backcolor", false, #000000), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("forecolor", false, #000000), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("hilitecolor", false, #000000), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("fontname", false, DummyFont), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("fontsize", false, 5), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("increasefontsize", false, null), a[b]c): The command should not be supported -PASS In in contenteditable, execCommand("increasefontsize", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("decreasefontsize", false, null), a[b]c): The command should not be supported -PASS In in contenteditable, execCommand("decreasefontsize", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("inserthorizontalrule", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("createlink", false, foo.html), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("insertimage", false, no-image.png), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): .value should be "ainserted[]c" -FAIL In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): input.inputType should be insertText -PASS In in contenteditable, execCommand("inserthtml", false, inserted), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): .value should be "a**inserted**[]c" -FAIL In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): input.inputType should be insertText -PASS In in contenteditable, execCommand("inserttext", false, **inserted**), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("inserttext", false, ), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("inserttext", false, ), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("inserttext", false, ), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("inserttext", false, ), a[b]c): .value should be "a[]c" -FAIL In in contenteditable, execCommand("inserttext", false, ), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertText" -FAIL In in contenteditable, execCommand("inserttext", false, ), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("inserttext", false, ), a[b]c): input.inputType should be insertText -PASS In in contenteditable, execCommand("inserttext", false, ), a[b]c): input.target should be [object HTMLInputElement] -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("justifyleft", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("justifyright", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("justifycenter", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("justifyfull", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("removeformat", false, null), a[b]c): The command should be supported -FAIL In in contenteditable, execCommand("removeformat", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In in contenteditable, execCommand("removeformat", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In in contenteditable, execCommand("removeformat", false, null), a[b]c): .value should be "a[b]c" -FAIL In in contenteditable, execCommand("removeformat", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "" -FAIL In in contenteditable, execCommand("removeformat", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -FAIL In in contenteditable, execCommand("removeformat", false, null), a[b]c): input.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "" -FAIL In in contenteditable, execCommand("removeformat", false, null), a[b]c): input.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("unlink", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("insertorderedlist", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("insertunorderedlist", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): The command should be supported -FAIL In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): .value should be "a[b]c" -FAIL In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertParagraph" -FAIL In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("insertparagraph", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): The command should be supported -FAIL In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): The command should not be enabled assert_equals: expected false but got true -FAIL In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): execCommand() should return false assert_equals: expected false but got true -PASS In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): .value should be "a[b]c" -FAIL In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): beforeinput.inputType should be undefined assert_equals: expected (undefined) undefined but got (string) "insertLineBreak" -FAIL In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): beforeinput.target should be undefined assert_equals: expected (undefined) undefined but got (object) Element node -PASS In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("insertlinebreak", false, null), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): execCommand() should return false -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("formatblock", false, div), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("heading", false, h1), a[b]c): The command should not be supported -PASS In in contenteditable, execCommand("heading", false, h1), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): styleWithCSS state should be true when has focus -PASS In in contenteditable, execCommand("styleWithCSS", false, true), a[b]c): styleWithCSS state should be true when does not have focus -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): styleWithCSS state should be false when has focus -PASS In in contenteditable, execCommand("styleWithCSS", false, false), a[b]c): styleWithCSS state should be false when does not have focus -PASS In in contenteditable, execCommand("contentReadOnly", false, true), a[b]c): The command should not be supported -PASS In in contenteditable, execCommand("contentReadOnly", false, true), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("contentReadOnly", false, false), a[b]c): The command should not be supported -PASS In in contenteditable, execCommand("contentReadOnly", false, false), a[b]c): The command should not be enabled -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): defaultParagraphSeparator value should be "p" when has focus -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, p), a[b]c): defaultParagraphSeparator value should be "p" when does not have focus -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): The command should be supported -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): The command should be enabled -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): execCommand() should return true -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): .value should be "a[b]c" -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): beforeinput.inputType should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): beforeinput.target should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): input.inputType should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): input.target should be undefined -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): defaultParagraphSeparator value should be "div" when has focus -PASS In in contenteditable, execCommand("defaultParagraphSeparator", false, div), a[b]c): defaultParagraphSeparator value should be "div" when does not have focus - diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative_type=textarea-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative_type=textarea-expected.txt deleted file mode 100644 index eba22c72b10ba..0000000000000 --- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/editing/other/exec-command-with-text-editor.tentative_type=textarea-expected.txt +++ /dev/null @@ -1,799 +0,0 @@ -Here is Text: - -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In -PASS In -PASS In -FAIL In -PASS In -PASS In -PASS In ", nullptr); + test->waitUntilLoadFinished(); + + // A read-only field gets no input method state, which the embedder sees as a focus out. Move + // from an editable field, so that the focus out is an event to wait for. + test->clickMouseButton(20, 15); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'plain'"); + test->waitUntilInputMethodEnabled(); + + test->clickMouseButton(20, 65); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'readonly-input'"); + test->waitUntilInputMethodDisabled(); + + test->clickMouseButton(20, 15); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'plain'"); + test->waitUntilInputMethodEnabled(); + + test->clickMouseButton(20, 115); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'readonly-textarea'"); + test->waitUntilInputMethodDisabled(); +} + +static void testWebKitInputMethodContextReadOnlyChange(InputMethodTest* test, gconstpointer) +{ + for (auto* element : { "", "" }) { + // The button toggles the readonly attribute of the field from its click handler. It does not take the focus. + GUniquePtr html(g_strdup_printf("%s" + "" + "", element)); + test->loadHtml(html.get(), nullptr); + test->waitUntilLoadFinished(); + test->clickMouseButton(20, 15); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'editable'"); + test->waitUntilInputMethodEnabled(); + test->clearInputMethodCounters(); + + // A field that becomes read-only gets no input method state, which the embedder sees as a focus out. + test->clickMouseButton(20, 65); + test->assertJavaScriptBecomesTrue("editable.readOnly"); + test->waitUntilInputMethodDisabled(); + g_assert_cmpuint(test->focusInCount(), ==, 0); + g_assert_cmpuint(test->focusOutCount(), ==, 1); + + // A field that becomes editable gets the input method again. + test->clickMouseButton(20, 65); + test->assertJavaScriptBecomesTrue("!editable.readOnly"); + test->waitUntilInputMethodEnabled(); + g_assert_cmpuint(test->focusInCount(), ==, 1); + g_assert_cmpuint(test->focusOutCount(), ==, 1); + g_assert_cmpuint(test->purpose(), ==, WEBKIT_INPUT_PURPOSE_FREE_FORM); + g_assert_cmpuint(test->hints(), ==, 0); + + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'editable'"); + test->unfocusEditableAndWaitUntilInputMethodDisabled(); + } +} + +static void testWebKitInputMethodContextInputModeChange(InputMethodTest* test, gconstpointer) +{ + // The button changes the inputmode of the field from its click handler. It does not take the focus. + auto changeInputModeByClick = [&](const char* inputMode) { + GUniquePtr script(g_strdup_printf("mode = %s", inputMode)); + test->runJavaScriptAndWaitUntilFinished(script.get(), nullptr); + test->clickMouseButton(20, 65); + }; + + for (auto* element : { "", "", "
    " }) { + GUniquePtr html(g_strdup_printf("%s" + "" + "", element)); + test->loadHtml(html.get(), nullptr); + test->waitUntilLoadFinished(); + test->clickMouseButton(20, 15); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'editable'"); + test->waitUntilInputMethodEnabled(); + g_assert_cmpuint(test->purpose(), ==, WEBKIT_INPUT_PURPOSE_FREE_FORM); + g_assert_cmpuint(test->hints(), ==, 0); + test->clearInputMethodCounters(); + + changeInputModeByClick("'numeric'"); + test->waitForContentType(WEBKIT_INPUT_PURPOSE_DIGITS, 0); + changeInputModeByClick("'none'"); + test->waitForContentType(WEBKIT_INPUT_PURPOSE_FREE_FORM, WEBKIT_INPUT_HINT_INHIBIT_OSK); + changeInputModeByClick("'tel'"); + test->waitForContentType(WEBKIT_INPUT_PURPOSE_PHONE, 0); + changeInputModeByClick("null"); + test->waitForContentType(WEBKIT_INPUT_PURPOSE_FREE_FORM, 0); + + // The embedder is told about the change of content type only, not about a new focus. + g_assert_cmpuint(test->focusInCount(), ==, 0); + g_assert_cmpuint(test->focusOutCount(), ==, 0); + g_assert_true(test->isInputMethodEnabled()); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'editable'"); + test->unfocusEditableAndWaitUntilInputMethodDisabled(); + + // A change by a script alone is not a user interaction, so the on-screen keyboard is inhibited from + // then on even though the field was focused by a click. This doesn't close an on-screen keyboard + // that is already open, but the user may have closed it, and it shouldn't be opened again automatically. + test->clickMouseButton(20, 15); + test->assertJavaScriptBecomesTrue("document.activeElement.id === 'editable'"); + test->waitUntilInputMethodEnabled(); + g_assert_cmpuint(test->hints(), ==, 0); + test->runJavaScriptAndWaitUntilFinished("editable.setAttribute('inputmode', 'numeric')", nullptr); + test->waitForContentType(WEBKIT_INPUT_PURPOSE_DIGITS, WEBKIT_INPUT_HINT_INHIBIT_OSK); + test->unfocusEditableAndWaitUntilInputMethodDisabled(); + + // A change in a click handler is a user interaction, so the on-screen keyboard is no longer inhibited + // even though the field was focused programmatically. + test->runJavaScriptAndWaitUntilFinished("editable.removeAttribute('inputmode')", nullptr); + test->focusEditableAndWaitUntilInputMethodEnabled(); + g_assert_cmpuint(test->hints(), ==, WEBKIT_INPUT_HINT_INHIBIT_OSK); + changeInputModeByClick("'numeric'"); + test->waitForContentType(WEBKIT_INPUT_PURPOSE_DIGITS, 0); + test->unfocusEditableAndWaitUntilInputMethodDisabled(); + } +} + void beforeAll() { + kServer = new WebKitTestServer(); + kServer->run(serverCallback); + InputMethodTest::add("WebKitInputMethodContext", "simple", testWebKitInputMethodContextSimple); InputMethodTest::add("WebKitInputMethodContext", "sequence", testWebKitInputMethodContextSequence); InputMethodTest::add("WebKitInputMethodContext", "invalid-sequence", testWebKitInputMethodContextInvalidSequence); @@ -1569,13 +1992,25 @@ void beforeAll() InputMethodTest::add("WebKitInputMethodContext", "cursor-area", testWebKitInputMethodContextCursorArea); InputMethodTest::add("WebKitInputMethodContext", "preedit-cursor", testWebKitInputMethodContextPreeditCursor); InputMethodTest::add("WebKitInputMethodContext", "preedit-over-selection", testWebKitInputMethodContextPreeditOverSelection); +#if PLATFORM(GTK) || ENABLE(2022_GLIB_API) + InputMethodTest::add("WebKitInputMethodContext", "preedit-underlines", testWebKitInputMethodContextPreeditUnderlines); +#endif InputMethodTest::add("WebKitInputMethodContext", "focus-change", testWebKitInputMethodContextFocusChange); + InputMethodTest::add("WebKitInputMethodContext", "focus-blur-refocus", testWebKitInputMethodContextFocusBlurRefocus); + InputMethodTest::add("WebKitInputMethodContext", "remove-focused-element", testWebKitInputMethodContextRemoveFocusedElement); + InputMethodTest::add("WebKitInputMethodContext", "blur-refocus-interaction", testWebKitInputMethodContextBlurRefocusInteraction); + InputMethodTest::add("WebKitInputMethodContext", "focus-back-forward-cache", testWebKitInputMethodContextFocusBackForwardCache); + InputMethodTest::add("WebKitInputMethodContext", "back-forward-cache-without-focus", testWebKitInputMethodContextBackForwardCacheWithoutFocus); + InputMethodTest::add("WebKitInputMethodContext", "click-after-script-focus", testWebKitInputMethodContextClickAfterScriptFocus); InputMethodTest::add("WebKitInputMethodContext", "focus-interaction", testWebKitInputMethodContextFocusInteraction); InputMethodTest::add("WebKitInputMethodContext", "content-type", testWebKitInputMethodContextContentType); + InputMethodTest::add("WebKitInputMethodContext", "read-only", testWebKitInputMethodContextReadOnly); + InputMethodTest::add("WebKitInputMethodContext", "read-only-change", testWebKitInputMethodContextReadOnlyChange); InputMethodTest::add("WebKitInputMethodContext", "input-mode", testWebKitInputMethodContextInputMode); + InputMethodTest::add("WebKitInputMethodContext", "input-mode-change", testWebKitInputMethodContextInputModeChange); } void afterAll() { - + delete kServer; } diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestUIClient.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestUIClient.cpp index 559c4af1e0941..0c0fbf60d1aba 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestUIClient.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestUIClient.cpp @@ -33,6 +33,20 @@ static const char* kPromptDialogMessage = "WebKitGTK prompt dialog message"; static const char* kPromptDialogReturnedText = "WebKitGTK prompt dialog returned text"; static const char* kBeforeUnloadConfirmDialogMessage = "WebKitGTK beforeunload dialog message"; +#if PLATFORM(GTK) +using WindowGeometry = GdkRectangle; +#elif PLATFORM(WPE) +using WindowGeometry = WebKitRectangle; +#endif + +static const WindowGeometry kOpenerWindowGeometry = { 0, 0, 527, 671 }; +#if PLATFORM(GTK) +static const WindowGeometry kDefaultNewWindowGeometry = kOpenerWindowGeometry; +#elif PLATFORM(WPE) +// WPE views are never unsized, so new windows don't fall back to the opener size. +static const WindowGeometry kDefaultNewWindowGeometry = { 0, 0, 1024, 768 }; +#endif + class UIClientTest: public WebViewTest { public: MAKE_GLIB_TEST_FIXTURE(UIClientTest); @@ -55,10 +69,10 @@ class UIClientTest: public WebViewTest { , m_locationbarVisible(true) , m_resizable(true) , m_fullscreen(false) + , m_isPopup(false) { -#if PLATFORM(GTK) zeroBytes(m_geometry); -#endif + m_hasCustomGeometry = false; } WindowProperties(WebKitWindowProperties* windowProperties) @@ -70,15 +84,15 @@ class UIClientTest: public WebViewTest { , m_locationbarVisible(webkit_window_properties_get_locationbar_visible(windowProperties)) , m_resizable(webkit_window_properties_get_resizable(windowProperties)) , m_fullscreen(webkit_window_properties_get_fullscreen(windowProperties)) + , m_isPopup(webkit_window_properties_get_is_popup(windowProperties)) { -#if PLATFORM(GTK) webkit_window_properties_get_geometry(windowProperties, &m_geometry); -#endif + m_hasCustomGeometry = webkit_window_properties_get_has_custom_geometry(windowProperties); } -#if PLATFORM(GTK) - WindowProperties(cairo_rectangle_int_t* geometry, bool toolbarVisible, bool statusbarVisible, bool scrollbarsVisible, bool menubarVisible, bool locationbarVisible, bool resizable, bool fullscreen) + WindowProperties(const WindowGeometry* geometry, bool hasCustomGeometry, bool toolbarVisible, bool statusbarVisible, bool scrollbarsVisible, bool menubarVisible, bool locationbarVisible, bool resizable, bool fullscreen, bool isPopup = false) : m_isNull(false) + , m_hasCustomGeometry(hasCustomGeometry) , m_toolbarVisible(toolbarVisible) , m_statusbarVisible(statusbarVisible) , m_scrollbarsVisible(scrollbarsVisible) @@ -86,33 +100,20 @@ class UIClientTest: public WebViewTest { , m_locationbarVisible(locationbarVisible) , m_resizable(resizable) , m_fullscreen(fullscreen) + , m_isPopup(isPopup) { m_geometry = *geometry; } -#else - WindowProperties(bool toolbarVisible, bool statusbarVisible, bool scrollbarsVisible, bool menubarVisible, bool locationbarVisible, bool resizable, bool fullscreen) - : m_isNull(false) - , m_toolbarVisible(toolbarVisible) - , m_statusbarVisible(statusbarVisible) - , m_scrollbarsVisible(scrollbarsVisible) - , m_menubarVisible(menubarVisible) - , m_locationbarVisible(locationbarVisible) - , m_resizable(resizable) - , m_fullscreen(fullscreen) - { - } -#endif bool isNull() const { return m_isNull; } void assertEqual(const WindowProperties& other) const { -#if PLATFORM(GTK) g_assert_cmpint(m_geometry.x, ==, other.m_geometry.x); g_assert_cmpint(m_geometry.y, ==, other.m_geometry.y); g_assert_cmpint(m_geometry.width, ==, other.m_geometry.width); g_assert_cmpint(m_geometry.height, ==, other.m_geometry.height); -#endif + g_assert_cmpint(static_cast(m_hasCustomGeometry), ==, static_cast(other.m_hasCustomGeometry)); g_assert_cmpint(static_cast(m_toolbarVisible), ==, static_cast(other.m_toolbarVisible)); g_assert_cmpint(static_cast(m_statusbarVisible), ==, static_cast(other.m_statusbarVisible)); g_assert_cmpint(static_cast(m_scrollbarsVisible), ==, static_cast(other.m_scrollbarsVisible)); @@ -120,14 +121,14 @@ class UIClientTest: public WebViewTest { g_assert_cmpint(static_cast(m_locationbarVisible), ==, static_cast(other.m_locationbarVisible)); g_assert_cmpint(static_cast(m_resizable), ==, static_cast(other.m_resizable)); g_assert_cmpint(static_cast(m_fullscreen), ==, static_cast(other.m_fullscreen)); + g_assert_cmpint(static_cast(m_isPopup), ==, static_cast(other.m_isPopup)); } private: bool m_isNull; -#if PLATFORM(GTK) - cairo_rectangle_int_t m_geometry; -#endif + WindowGeometry m_geometry; + bool m_hasCustomGeometry { false }; bool m_toolbarVisible; bool m_statusbarVisible; bool m_scrollbarsVisible; @@ -136,6 +137,7 @@ class UIClientTest: public WebViewTest { bool m_resizable; bool m_fullscreen; + bool m_isPopup { false }; }; static void windowPropertiesNotifyCallback(GObject*, GParamSpec* paramSpec, UIClientTest* test) @@ -439,14 +441,17 @@ class UIClientTest: public WebViewTest { m_windowProperties = windowProperties; } -#if PLATFORM(GTK) + void setFinalExpectedWindowProperties(const WindowProperties& windowProperties) + { + m_finalWindowProperties = windowProperties; + } + void setCreateNewWebViewsInWindowsWithDefaultSize(int width = 800, int height = 600) { m_shouldCreateWebViewsInNewWindowsAutomatically = true; m_defaultGeometryNewWindows.width = width; m_defaultGeometryNewWindows.height = height; } -#endif WebKitHitTestResult* moveMouseAndWaitUntilMouseTargetChanged(int x, int y, OptionSet mouseModifiers = OptionSet()) { @@ -457,6 +462,39 @@ class UIClientTest: public WebViewTest { return m_mouseTargetHitTestResult.get(); } +#if PLATFORM(GTK) && !USE(GTK4) + // Sends an enter or leave event with the given position. On Wayland, GDK fills leave events with the last known + // pointer position. Gives up after a second if the mouse target doesn't change. + WebKitHitTestResult* sendCrossingEventAndWaitUntilMouseTargetChanged(GdkEventType type, int x, int y) + { + GtkWidget* viewWidget = GTK_WIDGET(m_webView.get()); + GdkEvent* event = gdk_event_new(type); + event->crossing.window = GDK_WINDOW(g_object_ref(gtk_widget_get_window(viewWidget))); + event->crossing.send_event = TRUE; + event->crossing.time = GDK_CURRENT_TIME; + event->crossing.x = x; + event->crossing.y = y; + event->crossing.mode = GDK_CROSSING_NORMAL; + event->crossing.detail = GDK_NOTIFY_NONLINEAR; + gdk_event_set_device(event, gdk_seat_get_pointer(gdk_display_get_default_seat(gtk_widget_get_display(viewWidget)))); + + GRefPtr timeout = adoptGRef(g_timeout_source_new(1000)); + g_source_set_callback(timeout.get(), [](gpointer mainLoop) -> gboolean { + g_main_loop_quit(static_cast(mainLoop)); + return G_SOURCE_REMOVE; + }, m_mainLoop, nullptr); + g_source_attach(timeout.get(), nullptr); + + m_waitingForMouseTargetChange = true; + gtk_widget_event(viewWidget, event); + gdk_event_free(event); + g_main_loop_run(m_mainLoop); + m_waitingForMouseTargetChange = false; + g_source_destroy(timeout.get()); + return m_mouseTargetHitTestResult.get(); + } +#endif + void simulateUserInteraction() { runJavaScriptAndWaitUntilFinished("document.getElementById('testInput').focus()", nullptr); @@ -500,6 +538,19 @@ class UIClientTest: public WebViewTest { gtk_window_set_default_size(GTK_WINDOW(m_parentWindow), m_defaultGeometryNewWindows.width, m_defaultGeometryNewWindows.height); gtk_widget_show(m_parentWindow); } +#elif PLATFORM(WPE) + if (m_shouldCreateWebViewsInNewWindowsAutomatically) { +#if ENABLE(WPE_PLATFORM) + if (auto* view = webkit_web_view_get_wpe_view(newWebView.get())) { + wpe_toplevel_resize(wpe_view_get_toplevel(view), m_defaultGeometryNewWindows.width, m_defaultGeometryNewWindows.height); + wpe_view_set_visible(view, TRUE); + } +#endif +#if USE(LIBWPE) + if (auto* backend = webkit_web_view_get_backend(newWebView.get())) + wpe_view_backend_dispatch_set_size(webkit_web_view_backend_get_wpe_backend(backend), m_defaultGeometryNewWindows.width, m_defaultGeometryNewWindows.height); +#endif + } #endif return newWebView.leakRef(); } @@ -520,6 +571,11 @@ class UIClientTest: public WebViewTest { { g_assert_true(webView != m_webView.get()); + WebKitWindowProperties* windowProperties = webkit_web_view_get_window_properties(webView); + g_assert_nonnull(windowProperties); + if (!m_finalWindowProperties.isNull()) + WindowProperties(windowProperties).assertEqual(m_finalWindowProperties); + m_webViewEvents.append(Close); g_signal_handlers_disconnect_by_data(webView, this); g_object_unref(webView); @@ -539,6 +595,7 @@ class UIClientTest: public WebViewTest { gboolean m_expectedVideoMedia; gboolean m_expectedDisplayMedia; WindowProperties m_windowProperties; + WindowProperties m_finalWindowProperties; HashSet m_windowPropertiesChanged; GRefPtr m_mouseTargetHitTestResult; unsigned m_mouseTargetModifiers; @@ -546,10 +603,8 @@ class UIClientTest: public WebViewTest { GUniquePtr m_queryPermissionResult; bool m_waitingForMouseTargetChange { false }; -#if PLATFORM(GTK) bool m_shouldCreateWebViewsInNewWindowsAutomatically { false }; - cairo_rectangle_int_t m_defaultGeometryNewWindows; -#endif + WindowGeometry m_defaultGeometryNewWindows; std::optional m_expectedCameraCaptureState; std::optional m_expectedDisplayCaptureState; @@ -788,21 +843,17 @@ static void testWebViewJavaScriptDialogs(UIClientTest* test, gconstpointer) static void testWebViewWindowProperties(UIClientTest* test, gconstpointer) { static const char* windowPropertiesString = "left=100,top=150,width=400,height=400,location=no,menubar=no,status=no,toolbar=no,scrollbars=no"; -#if PLATFORM(GTK) - cairo_rectangle_int_t geometry = { 100, 150, 400, 400 }; - test->setExpectedWindowProperties(UIClientTest::WindowProperties(&geometry, false, false, false, false, false, true, false)); -#else - test->setExpectedWindowProperties(UIClientTest::WindowProperties(false, false, false, false, false, true, false)); -#endif + WindowGeometry geometry = { 100, 150, 400, 400 }; + test->setExpectedWindowProperties(UIClientTest::WindowProperties(&geometry, true, false, false, false, false, false, true, false, true)); GUniquePtr htmlString(g_strdup_printf("", windowPropertiesString)); test->loadHtml(htmlString.get(), nullptr); test->waitUntilMainLoopFinishes(); static constexpr ASCIILiteral propertiesChanged[] = { -#if PLATFORM(GTK) "geometry"_s, -#endif + "has-custom-geometry"_s, + "is-popup"_s, "locationbar-visible"_s, "menubar-visible"_s, "statusbar-visible"_s, "toolbar-visible"_s, "scrollbars-visible"_s }; for (size_t i = 0; i < G_N_ELEMENTS(propertiesChanged); ++i) @@ -815,13 +866,12 @@ static void testWebViewWindowProperties(UIClientTest* test, gconstpointer) g_assert_cmpint(events[2], ==, UIClientTest::Close); } -#if PLATFORM(GTK) static void testWebViewOpenWindowDefaultSize(UIClientTest* test, gconstpointer) { // If no size specified for window.open(), then new windows open with the default window size. - cairo_rectangle_int_t expectedGeometry = { 0, 0, 623, 715 }; + WindowGeometry expectedGeometry = { 0, 0, 623, 715 }; test->setCreateNewWebViewsInWindowsWithDefaultSize(expectedGeometry.width, expectedGeometry.height); - test->setExpectedWindowProperties(UIClientTest::WindowProperties(&expectedGeometry, false, false, false, false, false, true, false)); + test->setExpectedWindowProperties(UIClientTest::WindowProperties(&expectedGeometry, true, false, false, false, false, false, true, false, true)); test->loadHtml("", nullptr); test->waitUntilMainLoopFinishes(); } @@ -830,13 +880,43 @@ static void testWebViewOpenWindowNoDefaultSize(UIClientTest* test, gconstpointer { // If no size specified for window.open(), and new windows are not set to a specific default size with gtk_window_set_default_size() // on the create signal, then new windows open with the size of the previous window. - cairo_rectangle_int_t expectedGeometry = { 0, 0, 527, 671 }; - test->showInWindow(expectedGeometry.width, expectedGeometry.height); - test->setExpectedWindowProperties(UIClientTest::WindowProperties(&expectedGeometry, false, false, false, false, false, true, false)); + test->showInWindow(kOpenerWindowGeometry.width, kOpenerWindowGeometry.height); + test->setExpectedWindowProperties(UIClientTest::WindowProperties(&kDefaultNewWindowGeometry, true, false, false, false, false, false, true, false, true)); test->loadHtml("", nullptr); test->waitUntilMainLoopFinishes(); } -#endif + +static void testWebViewOpenWindowNoFeatures(UIClientTest* test, gconstpointer) +{ + // If no features specified for window.open(), and new windows are not set to a specific default size with gtk_window_set_default_size() + // on the create signal, then new windows open with the size of the previous window, but hasCustomGeometry and isPopup are false. + test->showInWindow(kOpenerWindowGeometry.width, kOpenerWindowGeometry.height); + test->setExpectedWindowProperties(UIClientTest::WindowProperties(&kDefaultNewWindowGeometry, false, true, true, true, true, true, true, false, false)); + test->loadHtml("", nullptr); + test->waitUntilMainLoopFinishes(); +} + +static void testWebViewOpenWindowZeroSize(UIClientTest* test, gconstpointer) +{ + // Zero width and height mean fallback to default window size, and are not considered custom geometry. + test->showInWindow(kOpenerWindowGeometry.width, kOpenerWindowGeometry.height); + test->setExpectedWindowProperties(UIClientTest::WindowProperties(&kDefaultNewWindowGeometry, false, true, true, true, true, true, true, false, true)); + test->loadHtml("", nullptr); + test->waitUntilMainLoopFinishes(); +} + +static void testWebViewWindowPropertiesResizeTo(UIClientTest* test, gconstpointer) +{ + WindowGeometry finalGeometry = { 0, 0, 300, 200 }; + test->showInWindow(kOpenerWindowGeometry.width, kOpenerWindowGeometry.height); + test->setExpectedWindowProperties(UIClientTest::WindowProperties(&kDefaultNewWindowGeometry, false, true, true, true, true, true, true, false, false)); + test->setFinalExpectedWindowProperties(UIClientTest::WindowProperties(&finalGeometry, true, true, true, true, true, true, true, false, false)); + test->loadHtml("", nullptr); + test->waitUntilMainLoopFinishes(); + + g_assert_true(test->m_windowPropertiesChanged.contains("geometry"_s)); + g_assert_true(test->m_windowPropertiesChanged.contains("has-custom-geometry"_s)); +} #if PLATFORM(GTK) static void testWebViewMouseTarget(UIClientTest* test, gconstpointer) @@ -952,6 +1032,50 @@ static void testWebViewMouseTarget(UIClientTest* test, gconstpointer) g_assert_true(webkit_hit_test_result_context_is_selection(hitTestResult)); g_assert_cmpuint(test->m_mouseTargetModifiers, ==, 0); } + +#if !USE(GTK4) +static const char linkWithMouseLeaveListenerHTML[] = + "" + " WebKitGTK" + " " + ""; + +static void testWebViewMouseLeaveWithPositionInside(UIClientTest* test, gconstpointer) +{ + test->showInWindow(); + test->loadHtml(linkWithMouseLeaveListenerHTML, "file:///"); + test->waitUntilLoadFinished(); + + WebKitHitTestResult* hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(20, 20); + g_assert_true(webkit_hit_test_result_context_is_link(hitTestResult)); + + // The leave event still has the last position inside the link, which is what GDK sends on Wayland. + hitTestResult = test->sendCrossingEventAndWaitUntilMouseTargetChanged(GDK_LEAVE_NOTIFY, 20, 20); + g_assert_false(webkit_hit_test_result_context_is_link(hitTestResult)); + g_assert_true(WebViewTest::javascriptResultToBoolean(test->runJavaScriptAndWaitUntilFinished("didLeave", nullptr))); + g_assert_false(WebViewTest::javascriptResultToBoolean(test->runJavaScriptAndWaitUntilFinished("document.getElementById('link').matches(':hover')", nullptr))); +} + +static void testWebViewMouseEnterAndLeaveWithoutMotion(UIClientTest* test, gconstpointer) +{ + test->showInWindow(); + test->loadHtml(linkWithMouseLeaveListenerHTML, "file:///"); + test->waitUntilLoadFinished(); + + // An enter and then a leave with no motion event in between, which happens when only one pointer sample lands + // inside the view. The enter alone hovers the link, and on Wayland the leave event has the enter position. + WebKitHitTestResult* hitTestResult = test->sendCrossingEventAndWaitUntilMouseTargetChanged(GDK_ENTER_NOTIFY, 20, 20); + g_assert_true(webkit_hit_test_result_context_is_link(hitTestResult)); + + hitTestResult = test->sendCrossingEventAndWaitUntilMouseTargetChanged(GDK_LEAVE_NOTIFY, 20, 20); + g_assert_false(webkit_hit_test_result_context_is_link(hitTestResult)); + g_assert_true(WebViewTest::javascriptResultToBoolean(test->runJavaScriptAndWaitUntilFinished("didLeave", nullptr))); + g_assert_false(WebViewTest::javascriptResultToBoolean(test->runJavaScriptAndWaitUntilFinished("document.getElementById('link').matches(':hover')", nullptr))); +} +#endif #endif // PLATFORM(GTK) static void testWebViewGeolocationPermissionRequests(UIClientTest* test, gconstpointer) @@ -1725,14 +1849,18 @@ void beforeAll() #endif UIClientTest::add("WebKitWebView", "javascript-dialogs", testWebViewJavaScriptDialogs); UIClientTest::add("WebKitWebView", "window-properties", testWebViewWindowProperties); -#if PLATFORM(GTK) - // FIXME: Implement webkit_window_properties_get_geometry() in WPE. UIClientTest::add("WebKitWebView", "open-window-default-size", testWebViewOpenWindowDefaultSize); UIClientTest::add("WebKitWebView", "open-window-no-default-size", testWebViewOpenWindowNoDefaultSize); -#endif + UIClientTest::add("WebKitWebView", "open-window-no-features", testWebViewOpenWindowNoFeatures); + UIClientTest::add("WebKitWebView", "open-window-zero-size", testWebViewOpenWindowZeroSize); + UIClientTest::add("WebKitWebView", "open-window-resize-to", testWebViewWindowPropertiesResizeTo); // FIXME: Implement mouse move in WPE. #if PLATFORM(GTK) UIClientTest::add("WebKitWebView", "mouse-target", testWebViewMouseTarget); +#if !USE(GTK4) + UIClientTest::add("WebKitWebView", "mouse-leave-with-position-inside", testWebViewMouseLeaveWithPositionInside); + UIClientTest::add("WebKitWebView", "mouse-enter-and-leave-without-motion", testWebViewMouseEnterAndLeaveWithoutMotion); +#endif #endif UIClientTest::add("WebKitWebView", "geolocation-permission-requests", testWebViewGeolocationPermissionRequests); #if ENABLE(ENCRYPTED_MEDIA) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitImage.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitImage.cpp index a553c7b9e3bed..aa47123753cef 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitImage.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitImage.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include class WebKitImageTest : public Test { @@ -78,7 +79,7 @@ class WebKitImageTest : public Test { static void testWebKitImagePropertiesConstruct(WebKitImageTest*, gconstpointer) { - GRefPtr image = adoptGRef(webkitImageNew(1, 2, 4, adoptGRef(g_bytes_new_static("test_data", 9)))); + GRefPtr image = adoptGRef(webkitImageNew(1, 2, 4, gBytesNewStatic("test_data"_span))); int width, height; GUniqueOutPtr type; @@ -95,7 +96,7 @@ static void testWebKitImagePropertiesConstruct(WebKitImageTest*, gconstpointer) g_assert_cmpint(width, ==, 1); g_assert_cmpint(height, ==, 2); g_assert_cmpuint(stride, ==, 4); - GRefPtr data = adoptGRef(g_bytes_new_static("test_data", 9)); + GRefPtr data = gBytesNewStatic("test_data"_span); g_assert_true(g_bytes_equal(data.get(), retrieved_data)); } diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitPolicyClient.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitPolicyClient.cpp index d8ceaa343140d..7cf2f2566ead4 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitPolicyClient.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitPolicyClient.cpp @@ -188,6 +188,12 @@ static void testNavigationPolicy(PolicyClientTest* test, gconstpointer) g_assert_cmpint(webkit_navigation_action_get_modifiers(navigationAction), ==, 0); g_assert_false(webkit_navigation_action_is_redirect(navigationAction)); g_assert_null(webkit_navigation_action_get_frame_name(navigationAction)); + WebKitFrameInfo* sourceFrameInfo = webkit_navigation_action_get_source_frame_info(navigationAction); + g_assert_nonnull(sourceFrameInfo); + g_assert_true(webkit_frame_info_is_main_frame(sourceFrameInfo)); + WebKitFrameInfo* targetFrameInfo = webkit_navigation_action_get_target_frame_info(navigationAction); + g_assert_nonnull(targetFrameInfo); + g_assert_true(webkit_frame_info_is_main_frame(targetFrameInfo)); WebKitURIRequest* request = webkit_navigation_action_get_request(navigationAction); g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, "http://webkitgtk.org/"); @@ -225,6 +231,39 @@ static void testNavigationPolicy(PolicyClientTest* test, gconstpointer) g_assert_cmpint(test->m_loadEvents.size(), ==, 0); } +static void testNavigationPolicyWithIframe(PolicyClientTest* test, gconstpointer) +{ + test->m_policyDecisionTypeFilter = WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION; + + test->m_policyDecisionResponse = PolicyClientTest::Use; + test->loadURI(kServer->getURIForPath("/iframe")); + test->waitUntilLoadFinished(); + g_assert_cmpint(test->m_loadEvents.size(), ==, 3); + + WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get()); + WebKitNavigationAction* navigationAction = webkit_navigation_policy_decision_get_navigation_action(decision); + WebKitFrameInfo* sourceFrameInfo = webkit_navigation_action_get_source_frame_info(navigationAction); + g_assert_nonnull(sourceFrameInfo); + g_assert_true(webkit_frame_info_is_main_frame(sourceFrameInfo)); + WebKitFrameInfo* targetFrameInfo = webkit_navigation_action_get_target_frame_info(navigationAction); + g_assert_nonnull(targetFrameInfo); + g_assert_false(webkit_frame_info_is_main_frame(targetFrameInfo)); + + test->m_policyDecisionResponse = PolicyClientTest::Use; + test->loadHtml("", kServer->getURIForPath("/").legacyCStringPointer()); + test->waitUntilLoadFinished(); + g_assert_cmpint(test->m_loadEvents.size(), ==, 3); + + decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get()); + navigationAction = webkit_navigation_policy_decision_get_navigation_action(decision); + sourceFrameInfo = webkit_navigation_action_get_source_frame_info(navigationAction); + g_assert_nonnull(sourceFrameInfo); + g_assert_false(webkit_frame_info_is_main_frame(sourceFrameInfo)); + targetFrameInfo = webkit_navigation_action_get_target_frame_info(navigationAction); + g_assert_nonnull(targetFrameInfo); + g_assert_false(webkit_frame_info_is_main_frame(targetFrameInfo)); +} + static void testResponsePolicy(PolicyClientTest* test, gconstpointer) { test->m_policyDecisionTypeFilter = WEBKIT_POLICY_DECISION_TYPE_RESPONSE; @@ -306,6 +345,8 @@ static void testNewWindowPolicy(PolicyClientTest* test, gconstpointer) WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get()); WebKitNavigationAction* navigationAction = webkit_navigation_policy_decision_get_navigation_action(decision); g_assert_cmpstr(webkit_navigation_action_get_frame_name(navigationAction), ==, "_blank"); + WebKitFrameInfo* targetFrameInfo = webkit_navigation_action_get_target_frame_info(navigationAction); + g_assert_null(targetFrameInfo); // Using a short timeout is a bit ugly here, but it's hard to get around because if we block // the new window signal we cannot halt the main loop in the create callback. If we @@ -330,6 +371,13 @@ static void serverCallback(SoupServer* server, SoupServerMessage* message, const auto* responseBody = soup_server_message_get_response_body(message); soup_message_body_append(responseBody, SOUP_MEMORY_STATIC, responseString, strlen(responseString)); soup_message_body_complete(responseBody); + } + if (g_str_equal(path, "/iframe")) { + static const char* responseString = ""; + soup_server_message_set_status(message, SOUP_STATUS_OK, nullptr); + auto* responseBody = soup_server_message_get_response_body(message); + soup_message_body_append(responseBody, SOUP_MEMORY_STATIC, responseString, strlen(responseString)); + soup_message_body_complete(responseBody); } else if (g_str_equal(path, "/redirect")) { soup_server_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY, nullptr); soup_message_headers_append(soup_server_message_get_response_headers(message), "Location", "/"); @@ -483,9 +531,9 @@ static void testUpgradeToHTTPSPolicy(PolicyClientTest* test, gconstpointer) static void policySchemeRequestCallback(WebKitURISchemeRequest* request, gpointer) { - static const char* replyHTML = "custom scheme"; - GRefPtr stream = adoptGRef(g_memory_input_stream_new_from_data(replyHTML, strlen(replyHTML), nullptr)); - webkit_uri_scheme_request_finish(request, stream.get(), strlen(replyHTML), "text/html"); + auto replyHTML = "custom scheme"_span; + GRefPtr stream = gMemoryInputStreamNewFromStaticData(replyHTML); + webkit_uri_scheme_request_finish(request, stream.get(), replyHTML.size(), "text/html"); } static void testUpgradeToHTTPSPolicySecureSchemes(PolicyClientTest* test, gconstpointer) @@ -546,6 +594,7 @@ void beforeAll() kServer->run(serverCallback); PolicyClientTest::add("WebKitPolicyClient", "navigation-policy", testNavigationPolicy); + PolicyClientTest::add("WebKitPolicyClient", "navigation-policy-iframe", testNavigationPolicyWithIframe); PolicyClientTest::add("WebKitPolicyClient", "response-policy", testResponsePolicy); PolicyClientTest::add("WebKitPolicyClient", "autoplay-policy", testAutoplayPolicy); PolicyClientTest::add("WebKitPolicyClient", "custom-user-agent-policy", testCustomUserAgentPolicy); diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitSettings.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitSettings.cpp index af5cced144f09..8180758ed7559 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitSettings.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitSettings.cpp @@ -523,22 +523,22 @@ void testWebKitSettingsApplyFromConfigFile(Test* test, gconstpointer) { GRefPtr settings = adoptGRef(webkit_settings_new()); GUniquePtr key_file(g_key_file_new()); - const char* key_file_contents = "[websettings]\n" \ + auto key_file_contents = "[websettings]\n" \ "user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36\n" \ "enable-webaudio = 0\n" \ - "enable-webrtc = true\n"; + "enable-webrtc = true\n"_s; - const char* invalidGroup = "[foo]\nbar = 42\n"; - const char* unknownSetting = "[websettings]\n" \ + auto invalidGroup = "[foo]\nbar = 42\n"_s; + auto unknownSetting = "[websettings]\n" \ "iamnotasetting = yes\n" \ - "enable-webaudio = 0\n"; - const char* invalidSettingType = "[websettings]\n" \ - "enable-webaudio = ishouldnotbeastring\n"; + "enable-webaudio = 0\n"_s; + auto invalidSettingType = "[websettings]\n" \ + "enable-webaudio = ishouldnotbeastring\n"_s; auto bigIntNotSupported = makeString("[websettings]\nminimum-font-size = "_s, std::numeric_limits::max(), '\n'); GUniqueOutPtr error; // Loading settings from a file not containing a websettings group should raise an error. - g_key_file_load_from_data(key_file.get(), invalidGroup, strlen(invalidGroup), G_KEY_FILE_NONE, &error.outPtr()); + gKeyFileLoadFromData(key_file.get(), invalidGroup, G_KEY_FILE_NONE, &error.outPtr()); g_assert_no_error(error.get()); g_assert_false(webkit_settings_apply_from_key_file(settings.get(), key_file.get(), "websettings", &error.outPtr())); g_assert_error(error.get(), G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE); @@ -550,24 +550,24 @@ void testWebKitSettingsApplyFromConfigFile(Test* test, gconstpointer) auto defaultUserAgent = UTF8CString::unsafeFromUTF8(webkit_settings_get_user_agent(settings.get())); // Loading settings from a file that contains an unknown setting should raise an error. - g_key_file_load_from_data(key_file.get(), unknownSetting, strlen(unknownSetting), G_KEY_FILE_NONE, &error.outPtr()); + gKeyFileLoadFromData(key_file.get(), unknownSetting, G_KEY_FILE_NONE, &error.outPtr()); g_assert_no_error(error.get()); g_assert_false(webkit_settings_apply_from_key_file(settings.get(), key_file.get(), "websettings", &error.outPtr())); g_assert_error(error.get(), G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE); // Mismatching a setting value type should raise an error. - g_key_file_load_from_data(key_file.get(), invalidSettingType, strlen(invalidSettingType), G_KEY_FILE_NONE, &error.outPtr()); + gKeyFileLoadFromData(key_file.get(), invalidSettingType, G_KEY_FILE_NONE, &error.outPtr()); g_assert_no_error(error.get()); g_assert_false(webkit_settings_apply_from_key_file(settings.get(), key_file.get(), "websettings", &error.outPtr())); g_assert_error(error.get(), G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE); // Overflowing uint settings should raise an error. - g_key_file_load_from_data(key_file.get(), bigIntNotSupported.utf8().legacyCStringPointer(), bigIntNotSupported.length(), G_KEY_FILE_NONE, &error.outPtr()); + gKeyFileLoadFromData(key_file.get(), bigIntNotSupported.utf8(), G_KEY_FILE_NONE, &error.outPtr()); g_assert_no_error(error.get()); g_assert_false(webkit_settings_apply_from_key_file(settings.get(), key_file.get(), "websettings", &error.outPtr())); g_assert_error(error.get(), G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE); - g_assert_true(g_key_file_load_from_data(key_file.get(), key_file_contents, strlen(key_file_contents), G_KEY_FILE_NONE, &error.outPtr())); + g_assert_true(gKeyFileLoadFromData(key_file.get(), key_file_contents, G_KEY_FILE_NONE, &error.outPtr())); g_assert_no_error(error.get()); g_assert_true(webkit_settings_apply_from_key_file(settings.get(), key_file.get(), "websettings", &error.outPtr())); diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentFilterStore.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentFilterStore.cpp index e388306330648..200416387b361 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentFilterStore.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentFilterStore.cpp @@ -20,6 +20,7 @@ #include "config.h" #include "TestMain.h" +#include #include #include @@ -92,7 +93,7 @@ class UserContentFilterStoreTest: public Test { WebKitUserContentFilter* saveFilter(const char* filterId, const char* source) { - GRefPtr sourceBytes = adoptGRef(g_bytes_new_static(source, strlen(source))); + GRefPtr sourceBytes = gBytesNewStatic(unsafeSpan(source)); webkit_user_content_filter_store_save(m_filterStore.get(), filterId, sourceBytes.get(), nullptr, [](GObject* sourceObject, GAsyncResult* result, void* userData) { auto* test = static_cast(userData); test->m_filter = adoptGRef(webkit_user_content_filter_store_save_finish(WEBKIT_USER_CONTENT_FILTER_STORE(sourceObject), result, &test->m_error.outPtr())); diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentManager.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentManager.cpp index b529d26fae2a1..7c0cc3b728498 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentManager.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitUserContentManager.cpp @@ -22,6 +22,7 @@ #include "WebKitTestServer.h" #include "WebViewTest.h" #include +#include #include #include @@ -614,7 +615,7 @@ static WebKitUserContentFilter* getUserContentFilter(WebViewTest* test) }; Data data { test->m_mainLoop, nullptr, }; - GRefPtr source = adoptGRef(g_bytes_new_static(kJSONFilter, strlen(kJSONFilter))); + GRefPtr source = gBytesNewStatic(unsafeSpan(kJSONFilter)); webkit_user_content_filter_store_save(store, "TestFilter", source.get(), nullptr, [](GObject* sourceObject, GAsyncResult* result, void* userData) { auto* data = static_cast(userData); GUniqueOutPtr error; diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebContext.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebContext.cpp index f97d9c4b76b94..7c7ca367ac524 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebContext.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebContext.cpp @@ -162,7 +162,7 @@ class URISchemeTest: public LoadTrackingTest { webkit_uri_scheme_request_finish(request, G_INPUT_STREAM(inputStream.get()), handler.replyLength, handler.mimeType.legacyCStringPointer()); webkit_uri_scheme_request_finish_error(request, error.get()); } else if (!g_strcmp0(requestPath, "after-first-chunk")) { - g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.legacyCStringPointer(), handler.reply.length(), 0); + gMemoryInputStreamAddStaticData(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.span()); webkit_uri_scheme_request_finish(request, inputStream.get(), handler.replyLength, handler.mimeType.legacyCStringPointer()); // We need to wait until we reach the load-committed state before calling webkit_uri_scheme_request_finish_error(), // so we rely on the test using finishOnCommittedAndWaitUntilLoadFinished() to actually call it from loadCommitted(). @@ -174,12 +174,12 @@ class URISchemeTest: public LoadTrackingTest { } if (!g_strcmp0(scheme, "echo")) { - char* replyHTML = g_strdup_printf(handler.reply.legacyCStringPointer(), requestPath); - g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), replyHTML, strlen(replyHTML), g_free); + auto replyHTML = GMallocString::unsafeAdoptFromUTF8(g_strdup_printf(handler.reply.legacyCStringPointer(), requestPath)); + gMemoryInputStreamAddData(G_MEMORY_INPUT_STREAM(inputStream.get()), WTF::move(replyHTML)); } else if (!g_strcmp0(scheme, "closed")) g_input_stream_close(inputStream.get(), 0, 0); else if (!handler.reply.isNull()) - g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.legacyCStringPointer(), handler.reply.length(), 0); + gMemoryInputStreamAddStaticData(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.span()); auto response = adoptGRef(webkit_uri_scheme_response_new(inputStream.get(), handler.replyLength)); webkit_uri_scheme_response_set_status(response.get(), handler.statusCode, nullptr); diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtension.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtension.cpp index 1b31e6259a02a..3c378a588181c 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtension.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtension.cpp @@ -25,6 +25,7 @@ #include "WebExtensionUtilities.h" #include #include +#include #include #include #include @@ -33,7 +34,7 @@ using namespace TestWebKitAPI; static GRefPtr createGBytes(const gchar* string) { - return adoptGRef(g_bytes_new_static(string, strlen(string))); + return gBytesNewStatic(unsafeSpan(string)); } static void testExtensionCreationFromDirectory(Test*, gconstpointer) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtensionContext.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtensionContext.cpp index ffab57ecfc987..875707186d94b 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtensionContext.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebExtensionContext.cpp @@ -24,6 +24,7 @@ #include "TestMain.h" #include #include +#include #include #include #include @@ -31,13 +32,12 @@ static GRefPtr createGBytes(const gchar* string) { - return adoptGRef(g_bytes_new_static(string, strlen(string))); + return gBytesNewStatic(unsafeSpan(string)); } static GRefPtr createGBytes(const UTF8CString& string) { - auto span = string.span(); - return adoptGRef(g_bytes_new(span.data(), span.size())); + return gBytesNew(string.span()); } static void testContentScriptsParsing(Test* test, gconstpointer) @@ -315,12 +315,45 @@ static void testLoadBackgroundContentWithoutController(Test* test, gconstpointer g_main_loop_run(mainLoop.get()); } +static void testBaseURI(Test* test, gconstpointer) +{ + GUniqueOutPtr error; + auto parseExtensionManifest = [&](const gchar* manifestString) { + GRefPtr extension = adoptGRef(webkitWebExtensionCreate({ { "manifest.json"_s, createGBytes(manifestString) } }, &error.outPtr())); + test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(extension.get())); + return extension; + }; + + GRefPtr extension = parseExtensionManifest("{ \"options_page\": \"options.html\", \"manifest_version\": 3, \"name\": \"Test\", \"description\": \"Test\", \"version\": \"1.0\", \"browser_url_overrides\": { \"newtab\": \"newtab.html\" } }"); + g_assert_no_error(error.get()); + GRefPtr context = adoptGRef(webkit_web_extension_context_new_for_extension(extension.get(), &error.outPtr())); + test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(context.get())); + g_assert_no_error(error.get()); + + GUniquePtr optionsURI(g_strconcat(webkit_web_extension_context_get_base_uri(context.get()), "options.html", nullptr)); + g_assert_cmpstr(webkit_web_extension_context_get_options_page_uri(context.get()), ==, optionsURI.get()); + + GUniquePtr newTabPageURI(g_strconcat(webkit_web_extension_context_get_base_uri(context.get()), "newtab.html", nullptr)); + g_assert_cmpstr(webkit_web_extension_context_get_override_new_tab_page_uri(context.get()), ==, newTabPageURI.get()); + + webkit_web_extension_match_pattern_register_custom_url_scheme("test-extension"); + webkit_web_extension_context_set_base_uri(context.get(), "test-extension://aaabbbcccddd"); + optionsURI.reset(g_strconcat(webkit_web_extension_context_get_base_uri(context.get()), "options.html", nullptr)); + g_assert_cmpstr(optionsURI.get(), ==, "test-extension://aaabbbcccddd/options.html"); + g_assert_cmpstr(webkit_web_extension_context_get_options_page_uri(context.get()), ==, optionsURI.get()); + + newTabPageURI.reset(g_strconcat(webkit_web_extension_context_get_base_uri(context.get()), "newtab.html", nullptr)); + g_assert_cmpstr(newTabPageURI.get(), ==, "test-extension://aaabbbcccddd/newtab.html"); + g_assert_cmpstr(webkit_web_extension_context_get_override_new_tab_page_uri(context.get()), ==, newTabPageURI.get()); +} + void beforeAll() { Test::add("WebKitWebExtensionContext", "content-scripts-parsing", testContentScriptsParsing); Test::add("WebKitWebExtensionContext", "options-page-uri-parsing", testOptionsPageURIParsing); Test::add("WebKitWebExtensionContext", "uri-overrides-parsing", testURIOverridesParsing); Test::add("WebKitWebExtensionContext", "load-background-content-without-controller", testLoadBackgroundContentWithoutController); + Test::add("WebKitWebExtensionContext", "base-uri", testBaseURI); // Some code in WebExtensionContext increases the amount of time allotted to a particular process // when running in the Test Runner. Set a consistent Program Name (we can't set an Application ID since the Test Runner doesn't use GApplication) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp index ed8e4b85b63ba..7be6eb06acc83 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitWebView.cpp @@ -62,6 +62,31 @@ class IsPlayingAudioWebViewTest : public WebViewTest { uint32_t m_tickCount { 0 }; }; +#if ENABLE(2022_GLIB_API) && ENABLE(APPLICATION_MANIFEST) +class ApplicationManifestWebViewTest : public WebViewTest { +public: + MAKE_GLIB_TEST_FIXTURE(ApplicationManifestWebViewTest); + + WebKitApplicationManifest* getApplicationManifest(GCancellable* cancellable = nullptr) + { + m_manifest = nullptr; + webkit_web_view_get_application_manifest(webView(), cancellable, [](GObject* object, GAsyncResult* result, gpointer userData) { + auto* test = static_cast(userData); + test->m_manifest = adoptGRef(webkit_web_view_get_application_manifest_finish(WEBKIT_WEB_VIEW(object), result, &test->m_error.outPtr())); + test->quitMainLoop(); + }, this); + g_main_loop_run(m_mainLoop); + return m_manifest.get(); + } + + const GError* error() const { return m_error.get(); } + +private: + GRefPtr m_manifest; + GUniqueOutPtr m_error; +}; +#endif // ENABLE(2022_GLIB_API) && ENABLE(APPLICATION_MANIFEST) + static WebKitTestServer* gServer; static void testWebViewWebContext(WebViewTest* test, gconstpointer) @@ -104,6 +129,143 @@ static void testWebViewWebContextLifetime(WebViewTest* test, gconstpointer) g_object_unref(webContext2); } +#if ENABLE(2022_GLIB_API) && ENABLE(APPLICATION_MANIFEST) +static void testWebViewApplicationManifest(ApplicationManifestWebViewTest* test, gconstpointer) +{ + test->loadURI(gServer->getURIForPath("/application-manifest")); + test->waitUntilLoadFinished(); + + GRefPtr manifestRef = test->getApplicationManifest(); + g_assert_no_error(test->error()); + auto* manifest = manifestRef.get(); + g_assert_nonnull(manifest); + g_assert_cmpstr(webkit_application_manifest_get_name(manifest), ==, "WebKit PWA"); + g_assert_cmpstr(webkit_application_manifest_get_short_name(manifest), ==, "PWA"); + g_assert_cmpstr(webkit_application_manifest_get_description(manifest), ==, "An application manifest test."); + ASSERT_CMP_CSTRING(webkit_application_manifest_get_start_uri(manifest), ==, gServer->getURIForPath("/application/")); + ASSERT_CMP_CSTRING(webkit_application_manifest_get_scope(manifest), ==, gServer->getURIForPath("/application/")); + g_assert_cmpstr(webkit_application_manifest_get_display_mode(manifest), ==, "standalone"); + +#if PLATFORM(GTK) + using ManifestColor = GdkRGBA; +#elif PLATFORM(WPE) + using ManifestColor = WebKitColor; +#endif + const ManifestColor* color = webkit_application_manifest_get_background_color(manifest); + g_assert_nonnull(color); + g_assert_cmpfloat(color->red, ==, 1); + g_assert_cmpfloat(color->green, ==, 0); + g_assert_cmpfloat(color->blue, ==, 0); + g_assert_cmpfloat(color->alpha, ==, 1); + color = webkit_application_manifest_get_background_color_dark(manifest); + g_assert_nonnull(color); + g_assert_cmpfloat(color->red, ==, 0); + g_assert_cmpfloat(color->green, ==, 1); + g_assert_cmpfloat(color->blue, ==, 0); + g_assert_cmpfloat(color->alpha, ==, 1); + color = webkit_application_manifest_get_theme_color(manifest); + g_assert_nonnull(color); + g_assert_cmpfloat(color->red, ==, 0); + g_assert_cmpfloat(color->green, ==, 0); + g_assert_cmpfloat(color->blue, ==, 1); + g_assert_cmpfloat(color->alpha, ==, 1); + color = webkit_application_manifest_get_theme_color_dark(manifest); + g_assert_null(color); + + auto* fullManifest = webkit_application_manifest_get_full_manifest(manifest); + g_assert_true(g_variant_is_of_type(fullManifest, G_VARIANT_TYPE_VARDICT)); + g_assert_true(fullManifest == webkit_application_manifest_get_full_manifest(manifest)); + const char* arbitraryString = nullptr; + g_assert_true(g_variant_lookup(fullManifest, "arbitrary_string", "&s", &arbitraryString)); + g_assert_cmpstr(arbitraryString, ==, "value"); + gboolean arbitraryBoolean = FALSE; + g_assert_true(g_variant_lookup(fullManifest, "arbitrary_boolean", "b", &arbitraryBoolean)); + g_assert_true(arbitraryBoolean); + double arbitraryInteger = 0; + g_assert_true(g_variant_lookup(fullManifest, "arbitrary_integer", "d", &arbitraryInteger)); + g_assert_cmpfloat(arbitraryInteger, ==, 42); + double arbitraryNumber = 0; + g_assert_true(g_variant_lookup(fullManifest, "arbitrary_number", "d", &arbitraryNumber)); + g_assert_cmpfloat(arbitraryNumber, ==, 2.5); + GRefPtr arbitraryNull = adoptGRef(g_variant_lookup_value(fullManifest, "arbitrary_null", G_VARIANT_TYPE("mv"))); + g_assert_nonnull(arbitraryNull); + g_assert_cmpuint(g_variant_n_children(arbitraryNull.get()), ==, 0); + GRefPtr arbitraryObject = adoptGRef(g_variant_lookup_value(fullManifest, "arbitrary_object", G_VARIANT_TYPE_VARDICT)); + g_assert_nonnull(arbitraryObject); + const char* nestedValue = nullptr; + g_assert_true(g_variant_lookup(arbitraryObject.get(), "nested", "&s", &nestedValue)); + g_assert_cmpstr(nestedValue, ==, "value"); + GRefPtr arbitraryArray = adoptGRef(g_variant_lookup_value(fullManifest, "arbitrary_array", G_VARIANT_TYPE("av"))); + g_assert_nonnull(arbitraryArray); + g_assert_cmpuint(g_variant_n_children(arbitraryArray.get()), ==, 3); + GRefPtr arrayItem = adoptGRef(g_variant_get_child_value(arbitraryArray.get(), 1)); + GRefPtr arrayValue = adoptGRef(g_variant_get_variant(arrayItem.get())); + g_assert_cmpstr(g_variant_get_string(arrayValue.get(), nullptr), ==, "two"); + + auto* shortcuts = webkit_application_manifest_get_shortcuts(manifest); + g_assert_nonnull(shortcuts); + auto* shortcut = shortcuts[0]; + g_assert_true(WEBKIT_IS_APPLICATION_MANIFEST_SHORTCUT(shortcut)); + g_assert_cmpstr(webkit_application_manifest_shortcut_get_name(shortcut), ==, "Compose"); + ASSERT_CMP_CSTRING(webkit_application_manifest_shortcut_get_uri(shortcut), ==, gServer->getURIForPath("/application/compose")); + auto* shortcutIcons = webkit_application_manifest_shortcut_get_icons(shortcut); + g_assert_nonnull(shortcutIcons); + auto* shortcutIcon = shortcutIcons[0]; + g_assert_true(WEBKIT_IS_APPLICATION_MANIFEST_ICON(shortcutIcon)); + g_assert_null(shortcutIcons[1]); + ASSERT_CMP_CSTRING(webkit_application_manifest_icon_get_uri(shortcutIcon), ==, gServer->getURIForPath("/shortcut-icon.png")); + auto* shortcutIconSizes = webkit_application_manifest_icon_get_sizes(shortcutIcon); + g_assert_cmpstr(shortcutIconSizes[0], ==, "32x32"); + g_assert_null(shortcutIconSizes[1]); + g_assert_cmpstr(webkit_application_manifest_icon_get_mime_type(shortcutIcon), ==, "image/png"); + g_assert_false(webkit_application_manifest_icon_get_is_maskable(shortcutIcon)); + g_assert_true(webkit_application_manifest_icon_get_is_monochrome(shortcutIcon)); + g_assert_true(G_IS_LOADABLE_ICON(shortcutIcon)); + + auto* shortcutWithoutIcons = shortcuts[1]; + g_assert_true(WEBKIT_IS_APPLICATION_MANIFEST_SHORTCUT(shortcutWithoutIcons)); + g_assert_cmpstr(webkit_application_manifest_shortcut_get_name(shortcutWithoutIcons), ==, "Settings"); + ASSERT_CMP_CSTRING(webkit_application_manifest_shortcut_get_uri(shortcutWithoutIcons), ==, gServer->getURIForPath("/settings")); + g_assert_null(webkit_application_manifest_shortcut_get_icons(shortcutWithoutIcons)[0]); + g_assert_null(shortcuts[2]); + + auto* icons = webkit_application_manifest_get_icons(manifest); + g_assert_nonnull(icons); + auto* icon = icons[0]; + g_assert_true(WEBKIT_IS_APPLICATION_MANIFEST_ICON(icon)); + g_assert_null(icons[1]); + ASSERT_CMP_CSTRING(webkit_application_manifest_icon_get_uri(icon), ==, gServer->getURIForPath("/icon.png")); + auto* sizes = webkit_application_manifest_icon_get_sizes(icon); + g_assert_cmpstr(sizes[0], ==, "48x48"); + g_assert_cmpstr(sizes[1], ==, "96x96"); + g_assert_null(sizes[2]); + g_assert_cmpstr(webkit_application_manifest_icon_get_mime_type(icon), ==, "image/png"); + g_assert_true(webkit_application_manifest_icon_get_is_maskable(icon)); + g_assert_false(webkit_application_manifest_icon_get_is_monochrome(icon)); + g_assert_true(G_IS_LOADABLE_ICON(icon)); + + GUniqueOutPtr MIMEType; + GUniqueOutPtr error; + GRefPtr stream = adoptGRef(g_loadable_icon_load(G_LOADABLE_ICON(icon), 0, &MIMEType.outPtr(), nullptr, &error.outPtr())); + g_assert_no_error(error.get()); + g_assert_nonnull(stream); + g_assert_cmpstr(MIMEType.get(), ==, "image/png"); + g_autoptr(GBytes) iconData = g_input_stream_read_bytes(stream.get(), 1, nullptr, &error.outPtr()); + g_assert_no_error(error.get()); + g_assert_cmpuint(g_bytes_get_size(iconData), ==, 1); + + GRefPtr cancellable = adoptGRef(g_cancellable_new()); + g_cancellable_cancel(cancellable.get()); + g_assert_null(test->getApplicationManifest(cancellable.get())); + g_assert_error(test->error(), G_IO_ERROR, G_IO_ERROR_CANCELLED); + + test->loadURI(gServer->getURIForPath("/")); + test->waitUntilLoadFinished(); + g_assert_null(test->getApplicationManifest()); + g_assert_no_error(test->error()); +} +#endif // ENABLE(2022_GLIB_API) && ENABLE(APPLICATION_MANIFEST) + static void testWebViewCloseQuickly(WebViewTest* test, gconstpointer) { auto webView = test->createWebView(); @@ -2289,9 +2451,9 @@ static void testWebViewCORSAllowlist(WebViewTest* test, gconstpointer) webkit_web_context_register_uri_scheme(test->m_webContext.get(), "foo", [](WebKitURISchemeRequest* request, gpointer userData) { GRefPtr inputStream = adoptGRef(g_memory_input_stream_new()); - const char* data = "

    foobar!

    "; - g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), data, strlen(data), nullptr); - webkit_uri_scheme_request_finish(request, inputStream.get(), strlen(data), "text/html"); + auto data = "

    foobar!

    "_span; + gMemoryInputStreamAddStaticData(G_MEMORY_INPUT_STREAM(inputStream.get()), data); + webkit_uri_scheme_request_finish(request, inputStream.get(), data.size(), "text/html"); }, nullptr, nullptr); char html[] = ""; @@ -2405,9 +2567,9 @@ static void testWebViewDisableWebSecurity(WebViewTest* test, gconstpointer) webkit_web_context_register_uri_scheme(test->m_webContext.get(), "foo", [](WebKitURISchemeRequest* request, gpointer userData) { GRefPtr inputStream = adoptGRef(g_memory_input_stream_new()); - const char* data = "

    foobar!

    "; - g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), data, strlen(data), nullptr); - webkit_uri_scheme_request_finish(request, inputStream.get(), strlen(data), "text/html"); + auto data = "

    foobar!

    "_span; + gMemoryInputStreamAddStaticData(G_MEMORY_INPUT_STREAM(inputStream.get()), data); + webkit_uri_scheme_request_finish(request, inputStream.get(), data.size(), "text/html"); }, nullptr, nullptr); char html[] = ""; @@ -2488,7 +2650,26 @@ static void serverCallback(SoupServer* server, SoupServerMessage* message, const return; } - if (g_str_equal(path, "/")) { + if (g_str_equal(path, "/application-manifest")) { + static const char html[] = ""; + soup_server_message_set_status(message, SOUP_STATUS_OK, nullptr); + soup_server_message_set_response(message, "text/html", SOUP_MEMORY_STATIC, html, strlen(html)); + } else if (g_str_equal(path, "/application-manifest.json")) { + static const char manifest[] = "{\"name\":\"WebKit PWA\",\"short_name\":\"PWA\",\"description\":\"An application manifest test.\",\"start_url\":\"/application/\",\"scope\":\"/application/\",\"display\":\"standalone\",\"background_color\":\"#ff0000\",\"theme_color\":\"#0000ff\",\"color_scheme_dark\":{\"background_color\":\"#00ff00\"},\"icons\":[{\"src\":\"/icon.png\",\"sizes\":\"48x48 96x96\",\"type\":\"image/png\",\"purpose\":\"any maskable\"}],\"shortcuts\":[{\"name\":\"Compose\",\"url\":\"application/compose\",\"icons\":[{\"src\":\"shortcut-icon.png\",\"sizes\":\"32x32\",\"type\":\"image/png\",\"purpose\":\"monochrome\"}]},{\"name\":\"Settings\",\"url\":\"settings\"}],\"arbitrary_string\":\"value\",\"arbitrary_boolean\":true,\"arbitrary_integer\":42,\"arbitrary_number\":2.5,\"arbitrary_null\":null,\"arbitrary_object\":{\"nested\":\"value\"},\"arbitrary_array\":[1,\"two\",false]}"; + soup_server_message_set_status(message, SOUP_STATUS_OK, nullptr); + soup_message_headers_append(soup_server_message_get_response_headers(message), "Access-Control-Allow-Origin", "*"); + soup_server_message_set_response(message, "application/manifest+json", SOUP_MEMORY_STATIC, manifest, strlen(manifest)); + } else if (g_str_equal(path, "/icon.png") || g_str_equal(path, "/shortcut-icon.png")) { + static const guint8 icon[] = { + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 0x15, 0xC4, + 0x89, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0xF8, 0xCF, 0xC0, 0xF0, + 0x1F, 0x00, 0x05, 0x00, 0x01, 0xFF, 0x89, 0x99, 0x3D, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 + }; + soup_server_message_set_status(message, SOUP_STATUS_OK, nullptr); + soup_server_message_set_response(message, "image/png", SOUP_MEMORY_STATIC, reinterpret_cast(icon), sizeof(icon)); + } else if (g_str_equal(path, "/")) { soup_server_message_set_status(message, SOUP_STATUS_OK, nullptr); soup_message_body_complete(soup_server_message_get_response_body(message)); } else @@ -2578,6 +2759,9 @@ void beforeAll() WebViewTest::add("WebKitWebView", "disable-web-security", testWebViewDisableWebSecurity); WebViewTest::add("WebKitWebView", "enable-html5-database", testWebViewEnableHTML5Database); WebViewTest::add("WebKitWebView", "load-alternate-html-from-page-with-csp", testWebViewLoadAlternateHTMLFromPageWithCSP); +#if ENABLE(2022_GLIB_API) && ENABLE(APPLICATION_MANIFEST) + ApplicationManifestWebViewTest::add("WebKitWebView", "application-manifest", testWebViewApplicationManifest); +#endif } void afterAll() diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/DragAndDropTestsIOS.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/DragAndDropTestsIOS.mm index 48368765300c7..aba56c909fdbe 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/DragAndDropTestsIOS.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/DragAndDropTestsIOS.mm @@ -2687,9 +2687,7 @@ HTTPServer server({ TEST(DragAndDropTests, AddLinkFromCrossOriginIframeToDragSession) { RetainPtr hrefs = hrefsDroppedAfterAddingLinkFromIframeToDragSession("https://webkit.org/inner"_s); - EXPECT_EQ(2UL, [hrefs count]); - EXPECT_WK_STREQ("https://first.example/", [hrefs objectAtIndex:0]); - EXPECT_WK_STREQ("https://second.example/", [hrefs objectAtIndex:1]); + EXPECT_EQ(0UL, [hrefs count]); } } // namespace TestWebKitAPI diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/KeyboardInputTestsIOS.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/KeyboardInputTestsIOS.mm index eafae34067ee8..386a04be2a4f6 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/KeyboardInputTestsIOS.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/KeyboardInputTestsIOS.mm @@ -605,6 +605,28 @@ - (NSUndoManager *)undoManager EXPECT_FALSE([webView effectiveTextInputTraits].isSingleLineDocument); } +TEST(KeyboardInputTests, SecureTextEntryAfterChangingInputTypeFromPassword) +{ + RetainPtr webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]); + RetainPtr inputDelegate = adoptNS([[TestInputDelegate alloc] init]); + [inputDelegate setFocusStartsInputSessionPolicyHandler:[](WKWebView *, id<_WKFocusedElementInfo>) -> _WKFocusStartsInputSessionPolicy { + return _WKFocusStartsInputSessionPolicyAllow; + }]; + [webView _setInputDelegate:inputDelegate]; + + [webView synchronouslyLoadHTMLString:@""]; + + [webView evaluateJavaScriptAndWaitForInputSessionToChange:@"document.getElementById('first').focus()"]; + EXPECT_TRUE([webView effectiveTextInputTraits].secureTextEntry); + + [webView evaluateJavaScriptAndWaitForInputSessionToChange:@"document.getElementById('first').blur()"]; + [webView evaluateJavaScriptAndWaitForInputSessionToChange:@"let first = document.getElementById('first'); first.type = 'text'; first.focus()"]; + EXPECT_TRUE([webView effectiveTextInputTraits].secureTextEntry); + + [webView evaluateJavaScriptAndWaitForInputSessionToChange:@"document.getElementById('second').focus()"]; + EXPECT_FALSE([webView effectiveTextInputTraits].secureTextEntry); +} + TEST(KeyboardInputTests, KeyboardTypeForInput) { RetainPtr webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]); diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/TextStyleFontSize.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/TextStyleFontSize.mm index 5dc84875a6ea8..ea3dd9e1a79d0 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/TextStyleFontSize.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/TextStyleFontSize.mm @@ -25,8 +25,11 @@ #import "config.h" -#import "InstanceMethodSwizzler.h" +#import "HTTPServer.h" +#import "Helpers/cocoa/TestNavigationDelegate.h" #import "Helpers/cocoa/TestWKWebView.h" +#import "InstanceMethodSwizzler.h" +#import "PlatformUtilities.h" #import "UIKitSPIForTesting.h" #import #import @@ -92,4 +95,47 @@ - (NSString *)_contentSizeCategory WebCore::setContentSizeCategory(String()); } +TEST(TextStyleFontSize, ChangeDuringProvisionalNavigation) +{ + using namespace TestWebKitAPI; + + static NSString *testMarkup = @"
    Hello
    "; + HTTPServer server({ + { "/first"_s, { "first"_s } }, + { "/second"_s, { testMarkup } }, + }, HTTPServer::Protocol::HttpsProxy); + + auto originalContentSizeCategory = contentSizeCategory; + contentSizeCategory = kCTFontContentSizeCategoryL; + + RetainPtr descriptor = adoptCF(CTFontDescriptorCreateWithTextStyle(kCTUIFontTextStyleBody, kCTFontContentSizeCategoryXXXL, nullptr)); + RetainPtr sizeNumber = adoptCF(CTFontDescriptorCopyAttribute(descriptor.get(), kCTFontSizeAttribute)); + auto expected = static_cast(sizeNumber.get()).integerValue; + + RetainPtr navigationDelegate = adoptNS([TestNavigationDelegate new]); + [navigationDelegate allowAnyTLSCertificate]; + RetainPtr webView = adoptNS([[TextStyleFontSizeWebView alloc] initWithFrame:CGRectMake(0, 0, 960, 360) configuration:server.httpsProxyConfiguration()]); + [webView setNavigationDelegate:navigationDelegate.get()]; + + [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://domain1.com/first"]]]; + [navigationDelegate waitForDidFinishNavigation]; + auto firstProcessIdentifier = [webView _webProcessIdentifier]; + + // Change the content size category after the provisional page for the cross-site navigation has been created but before it commits. + navigationDelegate.get().decidePolicyForNavigationResponse = ^(WKNavigationResponse *, void (^decisionHandler)(WKNavigationResponsePolicy)) { + contentSizeCategory = kCTFontContentSizeCategoryXXXL; + [[NSNotificationCenter defaultCenter] postNotificationName:UIContentSizeCategoryDidChangeNotification object:nil]; + decisionHandler(WKNavigationResponsePolicyAllow); + }; + + [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://domain2.com/second"]]]; + [navigationDelegate waitForDidFinishNavigation]; + EXPECT_NE([webView _webProcessIdentifier], firstProcessIdentifier); + + auto actual = [webView stringByEvaluatingJavaScript:@"parseInt(window.getComputedStyle(document.getElementById('target')).getPropertyValue('font-size'))"].integerValue; + EXPECT_EQ(actual, expected); + + contentSizeCategory = originalContentSizeCategory; +} + #endif // PLATFORM(IOS_FAMILY) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/ZoomToFocusedElement.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/ZoomToFocusedElement.mm new file mode 100644 index 0000000000000..5173231ddea14 --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/ZoomToFocusedElement.mm @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2026 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 INC. OR ITS 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. + */ + +#import "config.h" + +#if PLATFORM(IOS) + +#import "Helpers/PlatformUtilities.h" +#import "Helpers/cocoa/TestWKWebView.h" +#import "Helpers/ios/UserInterfaceSwizzler.h" +#import "TestInputDelegate.h" +#import +#import +#import +#import + +@interface ZoomToFocusedElementScrollViewDelegate : NSObject +@property (nonatomic, readonly) BOOL didEndZooming; +@end + +@implementation ZoomToFocusedElementScrollViewDelegate + +- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale +{ + _didEndZooming = YES; +} + +@end + +namespace TestWebKitAPI { + +static RetainPtr createWebViewWithSizeClasses(UIUserInterfaceSizeClass horizontalSizeClass, UIUserInterfaceSizeClass verticalSizeClass, CGSize viewSize, TestInputDelegate *inputDelegate) +{ + PAL::updateCurrentUserInterfaceIdiom(); + + RetainPtr webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, viewSize.width, viewSize.height)]); + [webView traitOverrides].horizontalSizeClass = horizontalSizeClass; + [webView traitOverrides].verticalSizeClass = verticalSizeClass; + [webView updateTraitsIfNeeded]; + EXPECT_EQ(horizontalSizeClass, [webView textInputContentView].traitCollection.horizontalSizeClass); + EXPECT_EQ(verticalSizeClass, [webView textInputContentView].traitCollection.verticalSizeClass); + + [inputDelegate setFocusStartsInputSessionPolicyHandler:[](WKWebView *, id<_WKFocusedElementInfo>) -> _WKFocusStartsInputSessionPolicy { + return _WKFocusStartsInputSessionPolicyAllow; + }]; + [webView _setInputDelegate:inputDelegate]; + return webView; +} + +static bool focusedInputIsVisible(TestWKWebView *webView) +{ + CGRect inputRect = [webView convertRect:[webView _focusedElementInteractionRect] fromView:[webView textInputContentView]]; + return CGRectContainsRect([webView bounds], inputRect); +} + +static void testZoomAfterFocusingInput(UIUserInterfaceSizeClass horizontalSizeClass, UIUserInterfaceSizeClass verticalSizeClass, CGSize viewSize) +{ + IPhoneUserInterfaceSwizzler iPhoneUserInterface; + + RetainPtr inputDelegate = adoptNS([TestInputDelegate new]); + RetainPtr webView = createWebViewWithSizeClasses(horizontalSizeClass, verticalSizeClass, viewSize, inputDelegate); + + [webView synchronouslyLoadHTMLString:@"" + "" + "" + ""]; + [webView waitForNextPresentationUpdate]; + EXPECT_EQ(1, [webView scrollView].zoomScale); + + RetainPtr scrollViewDelegate = adoptNS([ZoomToFocusedElementScrollViewDelegate new]); + [webView scrollView].delegate = scrollViewDelegate; + + [webView evaluateJavaScriptAndWaitForInputSessionToChange:@"input.focus()"]; + EXPECT_TRUE(Util::waitFor([&] { + return [scrollViewDelegate didEndZooming]; + })); + [webView waitForNextPresentationUpdate]; + + // Focused inputs are zoomed so that their text appears at a font size of 16px. + EXPECT_NEAR(16. / 12, [webView scrollView].zoomScale, 0.01); + EXPECT_TRUE(focusedInputIsVisible(webView)); +} + +template +static void testNoZoomAfterFocusingInput(UIUserInterfaceSizeClass horizontalSizeClass, UIUserInterfaceSizeClass verticalSizeClass, CGSize viewSize) +{ + UserInterfaceSwizzler userInterface; + + RetainPtr inputDelegate = adoptNS([TestInputDelegate new]); + RetainPtr webView = createWebViewWithSizeClasses(horizontalSizeClass, verticalSizeClass, viewSize, inputDelegate); + + [webView synchronouslyLoadHTMLString:@"" + "" + "" + ""]; + [webView waitForNextPresentationUpdate]; + + auto initialZoomScale = [webView scrollView].zoomScale; + auto initialContentOffset = [webView scrollView].contentOffset; + + [webView evaluateJavaScriptAndWaitForInputSessionToChange:@"input.focus()"]; + EXPECT_TRUE(Util::waitFor([&] { + return [webView scrollView].contentOffset.y > initialContentOffset.y; + })); + [webView waitForNextPresentationUpdate]; + + EXPECT_NEAR(initialZoomScale, [webView scrollView].zoomScale, 0.01); + EXPECT_TRUE(focusedInputIsVisible(webView)); +} + +TEST(ZoomToFocusedElement, PhoneIdiomCompactWidthRegularHeight) +{ + testZoomAfterFocusingInput(UIUserInterfaceSizeClassCompact, UIUserInterfaceSizeClassRegular, CGSizeMake(390, 844)); +} + +TEST(ZoomToFocusedElement, PhoneIdiomCompactWidthCompactHeight) +{ + testZoomAfterFocusingInput(UIUserInterfaceSizeClassCompact, UIUserInterfaceSizeClassCompact, CGSizeMake(844, 390)); +} + +TEST(ZoomToFocusedElement, PhoneIdiomRegularWidthCompactHeight) +{ + testZoomAfterFocusingInput(UIUserInterfaceSizeClassRegular, UIUserInterfaceSizeClassCompact, CGSizeMake(932, 430)); +} + +TEST(ZoomToFocusedElement, PhoneIdiomRegularWidthRegularHeight) +{ + testNoZoomAfterFocusingInput(UIUserInterfaceSizeClassRegular, UIUserInterfaceSizeClassRegular, CGSizeMake(820, 1180)); +} + +TEST(ZoomToFocusedElement, PadIdiomCompactWidthRegularHeight) +{ + testNoZoomAfterFocusingInput(UIUserInterfaceSizeClassCompact, UIUserInterfaceSizeClassRegular, CGSizeMake(390, 844)); +} + +TEST(ZoomToFocusedElement, PadIdiomCompactWidthCompactHeight) +{ + testNoZoomAfterFocusingInput(UIUserInterfaceSizeClassCompact, UIUserInterfaceSizeClassCompact, CGSizeMake(844, 390)); +} + +TEST(ZoomToFocusedElement, PadIdiomRegularWidthCompactHeight) +{ + testNoZoomAfterFocusingInput(UIUserInterfaceSizeClassRegular, UIUserInterfaceSizeClassCompact, CGSizeMake(932, 430)); +} + +TEST(ZoomToFocusedElement, PadIdiomRegularWidthRegularHeight) +{ + testNoZoomAfterFocusingInput(UIUserInterfaceSizeClassRegular, UIUserInterfaceSizeClassRegular, CGSizeMake(820, 1180)); +} + +} // namespace TestWebKitAPI + +#endif // PLATFORM(IOS) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/AttributedSubstringForProposedRange.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/AttributedSubstringForProposedRange.mm index de947790e12da..e62295d9c1384 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/AttributedSubstringForProposedRange.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/AttributedSubstringForProposedRange.mm @@ -30,9 +30,6 @@ #import "Helpers/mac/AppKitSPI.h" #import "Helpers/PlatformUtilities.h" #import "Helpers/cocoa/TestWKWebView.h" -#import -#import -#import #import TEST(AttributedSubstringForProposedRange, TextAlignmentParagraphStyles) @@ -86,13 +83,7 @@ TestWebKitAPI::Util::run(&finished); } -// Resolving a character range walks a TextIterator from the scope start, and every
    emits a -// newline whose position is resolved through Node::computeNodeIndex(), a previous-sibling scan. -// Doubling the content doubles the walk, so the cost should roughly double; it quadrupled while -// resolveCharacterRange() asked TextIterator::range() for every run rather than the bounding ones. -static constexpr unsigned lineBreakCount = 60000; -static constexpr unsigned measurementCount = 3; -static constexpr NSTimeInterval minimumMeaningfulSeconds = 0.003; +static constexpr unsigned siblingLineBreakCount = 5000; static RetainPtr markupWithSiblingLineBreaks(unsigned count) { @@ -105,50 +96,20 @@ return markup; } -static NSTimeInterval fastestFarRangeResolution(unsigned count, NSUInteger& resolvedLength) +TEST(AttributedSubstringForProposedRange, FarRangeInDocumentWithManySiblingLineBreaks) { RetainPtr webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]); - [webView synchronouslyLoadHTMLString:markupWithSiblingLineBreaks(count)]; - - auto fastest = std::numeric_limits::max(); - for (unsigned i = 0; i < measurementCount; ++i) { - __block bool finished = false; - __block NSTimeInterval elapsed = 0; - __block NSUInteger length = 0; - - auto start = MonotonicTime::now(); - [webView attributedSubstringForProposedRange:NSMakeRange(count, 8) completionHandler:^(NSAttributedString *string, NSRange actualRange) { - elapsed = (MonotonicTime::now() - start).seconds(); - length = actualRange.length; - EXPECT_GT(actualRange.length, 0U); - EXPECT_LE(actualRange.length, 16U); - EXPECT_EQ(actualRange.length, string.string.length); - finished = true; - }]; - TestWebKitAPI::Util::run(&finished); - fastest = std::min(fastest, elapsed); - resolvedLength = length; - } - return fastest; -} - -TEST(AttributedSubstringForProposedRange, FarRangeResolutionScalesWithLineBreakCount) -{ - NSUInteger baselineLength = 0; - NSUInteger doubledLength = 0; - auto baseline = fastestFarRangeResolution(lineBreakCount, baselineLength); - auto doubled = fastestFarRangeResolution(2 * lineBreakCount, doubledLength); - - NSLog(@"AttributedSubstringForProposedRange: %u breaks took %.1f ms (resolved %lu chars), %u breaks took %.1f ms (resolved %lu chars), %.2fx", - lineBreakCount, baseline * 1000, (unsigned long)baselineLength, - 2 * lineBreakCount, doubled * 1000, (unsigned long)doubledLength, doubled / baseline); - - if (baseline < minimumMeaningfulSeconds) { - NSLog(@"AttributedSubstringForProposedRange: baseline under %.0f ms, too small to compare; raise lineBreakCount to restore coverage.", minimumMeaningfulSeconds * 1000); - return; - } + [webView synchronouslyLoadHTMLString:markupWithSiblingLineBreaks(siblingLineBreakCount)]; - EXPECT_LT(doubled / baseline, 3.0); + __block bool finished = false; + [webView attributedSubstringForProposedRange:NSMakeRange(siblingLineBreakCount, 8) completionHandler:^(NSAttributedString *string, NSRange actualRange) { + EXPECT_EQ(siblingLineBreakCount, actualRange.location); + EXPECT_EQ(8U, actualRange.length); + EXPECT_EQ(8U, string.string.length); + EXPECT_TRUE([string.string hasPrefix:@"x"]); + finished = true; + }]; + TestWebKitAPI::Util::run(&finished); } #endif // PLATFORM(MAC) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ContextMenuTests.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ContextMenuTests.mm index e1f4be3779f95..5b81b4d683e14 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ContextMenuTests.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ContextMenuTests.mm @@ -1007,6 +1007,64 @@ HTTPServer server([imageData, imageResponseHeaders](Connection connection) { [NSNotificationCenter.defaultCenter removeObserver:observer.get()]; } +static NSString *svgImageURL(NSString *rootAttributes) +{ + NSString *svg = [NSString stringWithFormat:@"", rootAttributes]; + return [@"data:image/svg+xml;base64," stringByAppendingString:[[svg dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0]]; +} + +static NSSize copiedImageTIFFSize(NSString *source, NSString *style) +{ + RetainPtr webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 400, 400)]); + NSString *markup = [NSString stringWithFormat:@"", style, source]; + [webView synchronouslyLoadHTMLString:markup]; + + clearPasteboard(); + + [webView rightClick:NSMakePoint(10, 10) andSelectItemMatching:^BOOL(NSMenuItem *item) { + return [item.identifier isEqualToString:_WKMenuItemIdentifierCopyImage]; + }]; + + NSData *tiff = nil; + for (unsigned i = 0; i < 100 && !tiff; ++i) { + Util::runFor(0.05_s); + tiff = [NSPasteboard.generalPasteboard dataForType:NSPasteboardTypeTIFF]; + } + + NSBitmapImageRep *representation = tiff ? [NSBitmapImageRep imageRepWithData:tiff] : nil; + if (!representation) + return NSZeroSize; + return NSMakeSize(representation.pixelsWide, representation.pixelsHigh); +} + +TEST(ContextMenuTests, CopyImageTIFFForSVGWithNaturalSize) +{ + auto size = copiedImageTIFFSize(svgImageURL(@"width='200' height='100'"), @"width: 300px; height: 300px"); + EXPECT_EQ(size.width, 200); + EXPECT_EQ(size.height, 100); +} + +TEST(ContextMenuTests, CopyImageTIFFForSVGWithOnlyWidth) +{ + auto size = copiedImageTIFFSize(svgImageURL(@"width='200'"), @""); + EXPECT_EQ(size.width, 200); + EXPECT_EQ(size.height, 150); // The missing height comes from the used size of 200x150. +} + +TEST(ContextMenuTests, CopyImageTIFFForSVGWithoutNaturalSize) +{ + auto size = copiedImageTIFFSize(svgImageURL(@""), @"width: 120px; height: 120px"); + EXPECT_EQ(size.width, 120); + EXPECT_EQ(size.height, 120); +} + +TEST(ContextMenuTests, CopyImageTIFFForHugeSVGIsCapped) +{ + auto size = copiedImageTIFFSize(svgImageURL(@"width='10000' height='5000'"), @"width: 200px; height: 100px"); + EXPECT_EQ(size.width, 4096); + EXPECT_EQ(size.height, 2048); +} + } // namespace TestWebKitAPI #endif // PLATFORM(MAC) diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/HIDGamepads.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/HIDGamepads.mm index f569c2af89c85..a78990d2de9af 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/HIDGamepads.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/HIDGamepads.mm @@ -837,6 +837,13 @@ HTTPServer server({ return !![webView.get().configuration.processPool _numberOfConnectedGamepadsForTesting]; })); + // Virtual button 0 is the D-pad's up direction, which GameController.framework reports as button 12. +#if HAVE(WIDE_GAMECONTROLLER_SUPPORT) + constexpr size_t expectedButtonIndex = 12; +#else + constexpr size_t expectedButtonIndex = 0; +#endif + gamepad->setButtonValue(0, 1.0); gamepad->publishReport(); @@ -845,7 +852,7 @@ HTTPServer server({ bool gotExpectedValues = false; auto resultBlock = [&] (id result, NSError *error) { EXPECT_NULL(error); - if ([result[@"gamepadCount"] isEqualToNumber:@(1)] && WTF::areEssentiallyEqual([(NSNumber *)result[@"gamepadButtons"][0][0] doubleValue], 1.0)) + if ([result[@"gamepadCount"] isEqualToNumber:@(1)] && WTF::areEssentiallyEqual([(NSNumber *)result[@"gamepadButtons"][0][expectedButtonIndex] doubleValue], 1.0)) gotExpectedValues = true; done = true; }; diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ScrollingCoordinatorTests.mm b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ScrollingCoordinatorTests.mm index 4f6600da297b1..b3baec44aa8d7 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ScrollingCoordinatorTests.mm +++ b/Tools/TestWebKitAPI/Tests/WebKit/WKWebView/mac/ScrollingCoordinatorTests.mm @@ -29,6 +29,7 @@ #import "Helpers/PlatformUtilities.h" #import "Helpers/Test.h" +#import "Helpers/cocoa/SiteIsolationTestUtilities.h" #import "Helpers/cocoa/TestWKWebView.h" #import "Helpers/cocoa/WKWebViewConfigurationExtras.h" #import @@ -130,6 +131,69 @@ static float waitForScrollEventAndReturnScrollY(WKWebView* webView, const std::f [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"WebKit2Logging"]; } +static NSString *const latchedWheelGestureMarkup = @"" + "" + "
    " + ""; + +// Resolves once the page evaluates the condition to true. The page may handle a wheel event or +// update its scroll position some time after the UI process sends the event. +static void waitForCondition(WKWebView *webView, NSString *condition) +{ + bool done = false; + RetainPtr script = [NSString stringWithFormat:@"return new Promise(resolve => { let check = () => (%@) ? resolve() : setTimeout(check, 10); check(); })", condition]; + [webView callAsyncJavaScript:script.get() arguments:nil inFrame:nil inContentWorld:WKContentWorld.pageWorld completionHandler:[&](id, NSError *) { + done = true; + }]; + TestWebKitAPI::Util::run(&done); +} + +// EventHandler uses the latched state without a hit test for events that continue a latched gesture +// when it doesn't scroll on the main thread, which is the case with an async scrolling thread. This test +// checks that behavior stays the same for an element that covers the pointer after the gesture began. +TEST(ScrollingCoordinatorTests, LatchedWheelGestureIgnoresElementCoveringPointer) +{ + RetainPtr configuration = adoptNS([[WKWebViewConfiguration alloc] init]); + enableSiteIsolation(configuration.get()); + RetainPtr webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get() addToWindow:YES]); + + [webView synchronouslyLoadHTMLString:latchedWheelGestureMarkup]; + [webView waitForNextPresentationUpdate]; + + // The pointer is over #inner, which is inside #outer. + CGPoint pointInWindow = [webView convertPoint:CGPointMake(150, 150) toView:nil]; + + [webView wheelEventAtPoint:pointInWindow wheelDelta:CGSizeMake(0, -10) phase:kCGScrollPhaseBegan momentumPhase:kCGMomentumScrollPhaseNone]; + [webView wheelEventAtPoint:pointInWindow wheelDelta:CGSizeMake(0, -10) phase:kCGScrollPhaseChanged momentumPhase:kCGMomentumScrollPhaseNone]; + waitForCondition(webView.get(), @"document.getElementById('inner').scrollTop > 0"); + int innerScrollTop = [webView stringByEvaluatingJavaScript:@"document.getElementById('inner').scrollTop"].intValue; + EXPECT_GT(innerScrollTop, 0); + + // A hit test after layout finds the cover. The latched element and scroller still get the rest + // of the gesture. + [webView stringByEvaluatingJavaScript:@"" + "lastWheelEventTarget = '';" + "let cover = document.createElement('div');" + "cover.id = 'cover';" + "document.body.appendChild(cover);" + "null;"]; + [webView wheelEventAtPoint:pointInWindow wheelDelta:CGSizeMake(0, -10) phase:kCGScrollPhaseChanged momentumPhase:kCGMomentumScrollPhaseNone]; + waitForCondition(webView.get(), [NSString stringWithFormat:@"lastWheelEventTarget !== '' && document.getElementById('inner').scrollTop > %d", innerScrollTop]); + [webView wheelEventAtPoint:pointInWindow wheelDelta:CGSizeMake(0, 0) phase:kCGScrollPhaseEnded momentumPhase:kCGMomentumScrollPhaseNone]; + + EXPECT_WK_STREQ(@"innerContent", [webView stringByEvaluatingJavaScript:@"lastWheelEventTarget"]); + EXPECT_EQ(0, [webView stringByEvaluatingJavaScript:@"document.getElementById('outer').scrollTop"].intValue); +} + TEST(ScrollingCoordinatorTests, SetContentOffset) { RetainPtr configuration = [WKWebViewConfiguration _test_configurationWithTestPlugInClassName:@"WebProcessPlugInWithInternals" configureJSCForTesting:YES]; diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift index 51e0a8a90248b..6b26c9f26ed00 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/AppKitGesturesTestsSupport.swift @@ -58,6 +58,7 @@ extension Recap { static let shift = KeyboardModifiers(rawValue: 1 << 0) static let option = KeyboardModifiers(rawValue: 1 << 1) static let command = KeyboardModifiers(rawValue: 1 << 2) + static let control = KeyboardModifiers(rawValue: 1 << 3) static let all: KeyboardModifiers = [.shift, .option, .command] @@ -66,6 +67,7 @@ extension Recap { if contains(.shift) { usages.append(UInt(kHIDUsage_KeyboardLeftShift)) } if contains(.option) { usages.append(UInt(kHIDUsage_KeyboardLeftAlt)) } if contains(.command) { usages.append(UInt(kHIDUsage_KeyboardLeftGUI)) } + if contains(.control) { usages.append(UInt(kHIDUsage_KeyboardLeftControl)) } return usages } @@ -74,6 +76,7 @@ extension Recap { if contains(.shift) { names.append("shift") } if contains(.option) { names.append("alt") } if contains(.command) { names.append("meta") } + if contains(.control) { names.append("ctrl") } return names } } diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift index c162f485b8156..55b74a3ea8bac 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/BasicAppKitGesturesTests.swift @@ -32,7 +32,9 @@ private import struct TestWebKitAPILibrary.DOMRect import Testing private import TestWebKitAPILibrary private import Recap +private import Synchronization private import AppKit_Private.NSMenu_Private +private import WebKit_Private.WKFrameInfoPrivate extension AppKitGesturesTests { @MainActor @@ -71,7 +73,7 @@ extension AppKitGesturesTests.Basic { func singleClickFiresPointerMouseAndClickEvents(contentEditable: Bool) async throws { try await loadHTML(contentEditable: contentEditable) - let expectedEvents: [DOMEventType] = [.pointerdown, .mousedown, .pointerup, .mouseup, .click] + let expectedEvents: [DOMEventType] = [.pointerdown, .pointerup, .mousedown, .mouseup, .click] try await page.callJavaScript(JavaScriptMessages.InstallEventLog(in: "div", for: expectedEvents)) @@ -129,8 +131,8 @@ extension AppKitGesturesTests.Basic { #expect( fieldLog == [ "pointerdown:1:0.5:0", - "mousedown:1:-:1", "pointerup:0:0:0", + "mousedown:1:-:1", "mouseup:0:-:0", "click:0:0:0", ] @@ -141,7 +143,7 @@ extension AppKitGesturesTests.Basic { func singleClickFiresEventsForListenersOnTheDocument() async throws { try await loadHTML() - let expectedEvents: [DOMEventType] = [.pointerdown, .mousedown, .pointerup, .mouseup, .click] + let expectedEvents: [DOMEventType] = [.pointerdown, .pointerup, .mousedown, .mouseup, .click] try await page.callJavaScript(JavaScriptMessages.InstallEventLog(in: .document, for: expectedEvents)) @@ -202,7 +204,7 @@ extension AppKitGesturesTests.Basic { @Test(arguments: [Recap.KeyboardModifiers(), .shift, .option, .command, .all]) func singleClickReportsHeldModifierKeys(modifiers: Recap.KeyboardModifiers) async throws { - let expectedEvents: [DOMEventType] = [.pointerdown, .mousedown, .pointerup, .mouseup, .click] + let expectedEvents: [DOMEventType] = [.pointerdown, .pointerup, .mousedown, .mouseup, .click] try await loadHTML() @@ -232,20 +234,810 @@ extension AppKitGesturesTests.Basic { let toBounds = try await screenBoundsOfText("to") await recap.play { composer in - composer.holdingModifiers(modifiers) { - composer._wk_click(at: toBounds.center, for: .seconds(0.05)) - } + composer.holdingModifiers(modifiers) { + composer._wk_click(at: toBounds.center, for: .seconds(0.05)) + } + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let observed = try await page.callJavaScript(returning: [String].self) { + "return window.eventLog;" + } + + let active = modifiers.domNames.sorted().joined(separator: ",") + #expect(observed == expectedEvents.map { "\($0.rawValue)(\(active))" }) + } + + @Test( + arguments: [Duration.seconds(0.5), .seconds(1.0)] + ) + func pressAndHoldReportsPointerEventsSpanningTheHold(holdDuration: Duration) async throws { + try await loadHTML() + + try await page.callJavaScript( + """ + window.eventLog = []; + + const target = document.getElementById("div"); + // As every press-and-hold widget does, so that the hold isn't claimed by text selection. + target.style.webkitUserSelect = "none"; + + for (const type of ["pointerdown", "pointerup"]) + target.addEventListener(type, event => window.eventLog.push(event)); + """ + ) + + let toBounds = try await screenBoundsOfText("to") + + await recap.play { composer in + composer._wk_click(at: toBounds.center, for: holdDuration) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let types = try await page.callJavaScript(returning: [String].self) { + "return window.eventLog.map(event => event.type);" + } + #expect(types == ["pointerdown", "pointerup"]) + + let elapsed = try await page.callJavaScript(returning: Double.self) { + "return window.eventLog[1].timeStamp - window.eventLog[0].timeStamp;" + } + #expect(Duration.milliseconds(elapsed) > holdDuration / 2) + + let pressures = try await page.callJavaScript(returning: [Double].self) { + "return window.eventLog.map(event => event.pressure);" + } + #expect(pressures == [0.5, 0]) + + let buttons = try await page.callJavaScript(returning: [Double].self) { + "return window.eventLog.map(event => event.buttons);" + } + #expect(buttons == [1, 0]) + } + + @Test + func singleClickWithoutPointerTrackingDerivesPointerEventsFromMouseEvents() async throws { + page.setWebFeature("UseAppKitGesturesForPointerEvents", enabled: false) + try await loadHTML() + + let expectedEvents: [DOMEventType] = [.pointerdown, .mousedown, .pointerup, .mouseup, .click] + try await page.callJavaScript(JavaScriptMessages.InstallEventLog(in: "div", for: expectedEvents)) + + let toBounds = try await screenBoundsOfText("to") + + await recap.play { composer in + composer._wk_click(at: toBounds.center, for: .seconds(0.05)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let actual = try await page.callJavaScript(JavaScriptMessages.EventLog()) + #expect(actual.map(\.type) == expectedEvents) + } + + @Test + func pressAndHoldInSubframeReportsPointerEventsSpanningTheHold() async throws { + try await page.load(html: subframeHostMarkup).wait() + + try await page.callJavaScript { + """ + const frame = document.getElementById("frame"); + const subframeDocument = frame.contentDocument; + subframeDocument.body.style.margin = "0"; + subframeDocument.body.innerHTML = `\(subframeTargetMarkup)`; + + window.eventLog = []; + for (const type of ["pointerdown", "pointerup"]) { + subframeDocument.getElementById("target").addEventListener(type, event => { + window.eventLog.push({ type: event.type, timeStamp: event.timeStamp, x: event.clientX, y: event.clientY, inSubframe: event.view === frame.contentWindow }); + }); + } + """ + } + await page.waitForNextPresentationUpdate() + + let frameBounds = try await screenBounds(ofElementWithID: "frame") + + await recap.play { composer in + composer._wk_click(at: frameBounds.center, for: .seconds(0.5)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + try await expectPressAndHoldInSubframe(heldFor: .seconds(0.5)) { + "return window.eventLog;" + } + } + + @Test + func pressAndHoldInCrossSiteSubframeReportsPointerEventsSpanningTheHold() async throws { + page.setWebFeature("SiteIsolationEnabled", enabled: true) + + var server = try HTTPServer(protocol: .http) { + Route("/") { + """ + \(subframeHostMarkup) + + """ + } + Route("/subframe.html") { + """ + + \(subframeTargetMarkup) + + + """ + } + } + + try await server.run { configuration in + try await page.load(configuration.address).wait() + try #require(try await waitUntil("return window.subframeIsReady;")) + await page.waitForNextPresentationUpdate() + + let mainFrame = try #require(await page.mainFrame) + let subframe = try #require(mainFrame.childFrames.first) + try #require(subframe.info._processIdentifier != mainFrame.info._processIdentifier) + + let frameBounds = try await screenBounds(ofElementWithID: "frame") + + await recap.play { composer in + composer._wk_click(at: frameBounds.center, for: .seconds(0.5)) + } + + await page.waitForPendingMouseEvents() + try #require(try await waitUntil("return window.eventLog.length >= 2;")) + + try await expectPressAndHoldInSubframe(heldFor: .seconds(0.5)) { + "return window.eventLog;" + } + } + } + + private var subframeHostMarkup: String { + """ + + + """ + } + + private var subframeTargetMarkup: String { + #"
    "# + } + + private func expectPressAndHoldInSubframe(heldFor holdDuration: Duration, eventLogScript: () -> String) async throws { + let log = try await page.callJavaScript(returning: [[String: Any]].self, script: eventLogScript) + let types = log.compactMap { $0["type"] as? String } + #expect(types == ["pointerdown", "pointerup"]) + try #require(log.count == 2) + + let elapsed = (log[1]["timeStamp"] as? Double ?? 0) - (log[0]["timeStamp"] as? Double ?? 0) + #expect(Duration.milliseconds(elapsed) > holdDuration / 2) + + // The press lands at the center of the 300x200 subframe, in the subframe's own coordinates. + for event in log { + #expect(event["inSubframe"] as? Bool == true) + #expect(abs((event["x"] as? Double ?? 0) - 150) <= 2) + #expect(abs((event["y"] as? Double ?? 0) - 100) <= 2) + } + } + + private func waitUntil(_ script: String) async throws -> Bool { + for _ in 0..<50 { + if try await page.callJavaScript(returning: Bool.self, script: { script }) { + return true + } + try await Task.sleep(for: .milliseconds(100)) + } + return false + } + + private func loadLongPressSurface(baseURL: URL? = nil) async throws { + let html = """ + +
    + + """ + + if let baseURL { + try await page.load(html: html, baseURL: baseURL).wait() + } else { + try await page.load(html: html).wait() + } + + try await page.callJavaScript( + arguments: ["elementID": "surface", "styleValue": "none"], + script: styleAdjustmentForManipulationSurfaceScript + ) + await page.waitForNextPresentationUpdate() + } + + private func longPressState() async throws -> String { + try await page.callJavaScript(returning: String.self) { "return window.longPressState;" } + } + + @Test + func longPressOnManipulationSurfaceIsRecognized() async throws { + try await loadLongPressSurface() + + let surfaceBounds = try await screenBounds(ofElementWithID: "surface") + + await recap.play { composer in + composer._wk_click(at: surfaceBounds.center, for: .seconds(1)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + #expect(try await longPressState() == "recognized") + } + + @Test + func clickOnManipulationSurfaceIsNotRecognizedAsLongPress() async throws { + try await loadLongPressSurface() + + let surfaceBounds = try await screenBounds(ofElementWithID: "surface") + + await recap.play { composer in + composer._wk_click(at: surfaceBounds.center, for: .milliseconds(100)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + #expect(try await longPressState() == "released") + } + + @Test(arguments: [(travel: CGFloat(3), reportsMovement: false), (travel: CGFloat(60), reportsMovement: true)]) + func pressReportsMovementOnlyPastClickAllowableMovement(travel: CGFloat, reportsMovement: Bool) async throws { + try await loadLongPressSurface() + + let surfaceBounds = try await screenBounds(ofElementWithID: "surface") + let start = CGPoint(x: surfaceBounds.midX - 30, y: surfaceBounds.midY) + let end = CGPoint(x: start.x + travel, y: start.y) + + await recap.play { composer in + composer._wk_drag(withStart: start, end: end, duration: .seconds(0.5)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let moveCount = try await page.callJavaScript(returning: Int.self) { "return window.moveCount;" } + let travelled = try await page.callJavaScript(returning: Double.self) { + "return window.positions.pointerup.x - window.positions.down.x;" + } + + if reportsMovement { + #expect(moveCount > 0) + #expect(abs(travelled - travel) <= 2) + } else { + #expect(moveCount == 0) + #expect(travelled == 0) + } + } + + @Test + func untrackedDragOnManipulationSurfaceStillReportsPointerMovement() async throws { + page.setWebFeature("UseAppKitGesturesForGestureEvents", enabled: true) + try await loadLongPressSurface() + + let surfaceBounds = try await screenBounds(ofElementWithID: "surface") + let start = CGPoint(x: surfaceBounds.midX - 80, y: surfaceBounds.midY) + let end = CGPoint(x: surfaceBounds.midX + 80, y: surfaceBounds.midY) + + await recap.play { composer in + composer._wk_scroll(withStart: start, end: end, duration: .seconds(0.5), multiFinger: true) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let moveCount = try await page.callJavaScript(returning: Int.self) { "return window.moveCount;" } + #expect(moveCount > 0) + } + + @Test + func trackedDragOnManipulationSurfaceReportsPointerUpOnce() async throws { + try await loadLongPressSurface() + + try await page.callJavaScript { + """ + window.eventLog = []; + const surface = document.getElementById("surface"); + for (const type of ["pointerdown", "pointerup", "pointercancel", "mousedown", "mouseup"]) + surface.addEventListener(type, event => window.eventLog.push(event.type)); + """ + } + + let surfaceBounds = try await screenBounds(ofElementWithID: "surface") + let start = CGPoint(x: surfaceBounds.midX - 60, y: surfaceBounds.midY) + let end = CGPoint(x: surfaceBounds.midX + 60, y: surfaceBounds.midY) + + await recap.play { composer in + composer._wk_drag(withStart: start, end: end, duration: .seconds(0.5)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let log = try await page.callJavaScript(returning: [String].self) { "return window.eventLog;" } + + // Unless mouse tracking took the drag over, there would be no mouse up to report the pointer again. + try #require(log.contains("mousedown"), "mouse tracking did not take over the drag: \(log)") + + #expect(log == ["pointerdown", "mousedown", "pointerup", "mouseup"]) + } + + @Test + func trackedPointerMovesReportThemselvesAsCoalescedEvents() async throws { + // `getCoalescedEvents()` is only exposed in a secure context, which a page loaded from a string is not by default. + try await loadLongPressSurface(baseURL: try #require(URL(string: "https://example.com"))) + try #require(try await page.callJavaScript(returning: Bool.self) { "return window.isSecureContext;" }) + + try await page.callJavaScript { + """ + window.coalescedEventLog = []; + const surface = document.getElementById("surface"); + for (const type of ["pointerdown", "pointermove", "pointerup"]) { + surface.addEventListener(type, event => { + const coalescedEvents = event.getCoalescedEvents(); + const last = coalescedEvents[coalescedEvents.length - 1]; + const matchesEvent = !!last && last.clientX === event.clientX && last.clientY === event.clientY; + window.coalescedEventLog.push({ type: event.type, count: coalescedEvents.length, matchesEvent }); + }); + } + """ + } + + let surfaceBounds = try await screenBounds(ofElementWithID: "surface") + let start = CGPoint(x: surfaceBounds.midX - 60, y: surfaceBounds.midY) + let end = CGPoint(x: surfaceBounds.midX + 60, y: surfaceBounds.midY) + + await recap.play { composer in + composer._wk_drag(withStart: start, end: end, duration: .seconds(0.5)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let log = try await page.callJavaScript(returning: [[String: Any]].self) { "return window.coalescedEventLog;" } + let moves = log.filter { $0["type"] as? String == "pointermove" } + try #require(!moves.isEmpty, "the drag reported no pointermove: \(log)") + + for move in moves { + #expect((move["count"] as? Int ?? 0) >= 1, "\(move)") + #expect(move["matchesEvent"] as? Bool == true, "\(move)") + } + + for event in log where event["type"] as? String != "pointermove" { + #expect(event["count"] as? Int == 0, "\(event)") + } + } + + @Test + func pressAndHoldThatOpensContextMenuCancelsPointer() async throws { + let html = """ + WebKit Link + + """ + try await page.load(html: html).wait() + + let linkBounds = try await screenBounds(ofElementWithID: "link") + + await withSwizzledContextMenu { + await recap.play { composer in + composer._wk_drag(withStart: linkBounds.center, end: linkBounds.center, duration: .seconds(1.5), release: false) + } + } + + await recap.play { composer in + composer._wk_mouseUp() + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let log = try await page.callJavaScript(returning: [String].self) { "return window.eventLog;" } + #expect(log.first == "pointerdown:0") + #expect(log.contains { $0.hasPrefix("pointercancel") }) + #expect(log.contains("pointerup:0") == false) + } + + @Test + func pointerStaysOverReleasedElementUntilNextPressElsewhere() async throws { + let html = """ + +
    +
    + + """ + try await page.load(html: html).wait() + await page.waitForNextPresentationUpdate() + + let firstBounds = try await screenBounds(ofElementWithID: "first") + let secondBounds = try await screenBounds(ofElementWithID: "second") + + await recap.play { composer in + composer._wk_click(at: firstBounds.center, for: .milliseconds(100)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let firstPressLog = try await page.callJavaScript(returning: [String].self) { "return window.eventLog;" } + #expect(firstPressLog == ["pointerover:first", "pointerenter:first", "pointerdown:first", "pointerup:first"]) + + await recap.play { composer in + composer._wk_click(at: secondBounds.center, for: .milliseconds(100)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let log = try await page.callJavaScript(returning: [String].self) { "return window.eventLog;" } + #expect( + log == [ + "pointerover:first", "pointerenter:first", "pointerdown:first", "pointerup:first", + "pointerout:first", "pointerleave:first", "pointerover:second", "pointerenter:second", "pointerdown:second", + "pointerup:second", + ] + ) + } + + @Test + func clickLeavesPopupOfHoverActivatedControlOpen() async throws { + let html = """ + + + + """ + try await page.load(html: html).wait() + await page.waitForNextPresentationUpdate() + + let controlBounds = try await screenBounds(ofElementWithID: "control") + + await recap.play { composer in + composer._wk_click(at: controlBounds.center, for: .milliseconds(100)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + // Outlast both timers. + try await Task.sleep(for: .milliseconds(500)) + + #expect(try await page.callJavaScript(returning: Bool.self) { "return window.popupIsOpen;" }) + } + + @Test(arguments: [false, true]) + func pressHeldAcrossNavigationDoesNotAffectMouseEventsOnNextPage(cancelsPointerDown: Bool) async throws { + let cancelPointerDownStatement = cancelsPointerDown ? "event.preventDefault();" : "" + + var server = try HTTPServer(protocol: .http) { + Route("/") { + """ + +
    + + + """ + } + Route("/next") { + """ + +
    + + + """ + } + } + + try await server.run { configuration in + try await page.load(configuration.address).wait() + await page.waitForNextPresentationUpdate() + + let targetBounds = try await screenBounds(ofElementWithID: "target") + + await recap.play { composer in + composer._wk_click(at: targetBounds.center, for: .seconds(1.5)) + } + + await page.waitForPendingMouseEvents() + try #require(try await waitUntil("return location.pathname === '/next';")) + await page.waitForNextPresentationUpdate() + + // Unless the next page was loaded well before the press was released, this would not be testing anything. + let millisecondsSinceLoad = try await page.callJavaScript(returning: Double.self) { "return Date.now() - window.loadTime;" } + try #require(millisecondsSinceLoad > 500) + + try await page.callJavaScript { "window.eventLog = [];" } + + let targetPoint = try await windowPoint(ofElementWithID: "target") + page.mouseMove(to: targetPoint) + page.click(at: targetPoint) + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let log = try await page.callJavaScript(returning: [String].self) { "return window.eventLog;" } + #expect(log == ["pointerdown", "mousedown", "pointerup", "mouseup", "click"]) + } + } + + private enum PointerEventFamily { + case pointer + case mouse + } + + private func loadPressAndHoldCaptcha( + requiredHoldMilliseconds: Int, + family: PointerEventFamily, + textIsSelectable: Bool = false, + cancelsDownEvent: Bool = false + ) async throws { + let downEvent = family == .pointer ? "pointerdown" : "mousedown" + let upEvents = family == .pointer ? ["pointerup", "pointercancel"] : ["mouseup", "mouseleave"] + let upEventsLiteral = upEvents.map { "\"\($0)\"" }.joined(separator: ", ") + + let userSelectDeclarations = textIsSelectable ? "" : "user-select: none; -webkit-user-select: none;" + let cancelDownEventStatement = cancelsDownEvent ? "event.preventDefault();" : "" + + let html = """ + +
    HOLD ME
    +
    + + """ + + try await page.load(html: html).wait() + await page.waitForNextPresentationUpdate() + } + + private func captchaState() async throws -> String { + try await page.callJavaScript(returning: String.self) { "return window.captchaState;" } + } + + private func selectedText() async throws -> String { + try await page.callJavaScript(returning: String.self) { "return window.getSelection().toString();" } + } + + @Test + func pressAndHoldCompletesPointerDrivenCaptcha() async throws { + try await loadPressAndHoldCaptcha(requiredHoldMilliseconds: 400, family: .pointer) + + let captchaBounds = try await screenBounds(ofElementWithID: "captcha") + + await recap.play { composer in + composer._wk_click(at: captchaBounds.center, for: .seconds(1)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + #expect(try await captchaState() == "verified") + } + + @Test + func quickClickDoesNotCompletePointerDrivenCaptcha() async throws { + try await loadPressAndHoldCaptcha(requiredHoldMilliseconds: 400, family: .pointer) + + let captchaBounds = try await screenBounds(ofElementWithID: "captcha") + + await recap.play { composer in + composer._wk_click(at: captchaBounds.center, for: .milliseconds(50)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + #expect(try await captchaState() == "cancelled") + } + + @Test + func scrollingAfterPressCancelsPointerDrivenCaptcha() async throws { + try await loadPressAndHoldCaptcha(requiredHoldMilliseconds: 5000, family: .pointer) + + let captchaBounds = try await screenBounds(ofElementWithID: "captcha") + + // The press travels up the screen, which scrolls the page down. + let scrollEnd = CGPoint(x: captchaBounds.center.x, y: captchaBounds.center.y - 200) + + await recap.play { composer in + composer._wk_drag(withStart: captchaBounds.center, end: scrollEnd, duration: .seconds(0.5), release: true) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let observed = try await page.callJavaScript(returning: [String].self) { + "return window.observedEvents;" + } + + #expect(observed == ["pointerdown", "pointercancel"]) + #expect(try await captchaState() == "cancelled") + } + + @Test + func cancelingPointerDownKeepsTheHoldOnSelectableText() async throws { + try await loadPressAndHoldCaptcha( + requiredHoldMilliseconds: 400, + family: .pointer, + textIsSelectable: true, + cancelsDownEvent: true + ) + + let textBounds = try await screenBounds(ofElementWithID: "holdText") + + await recap.play { composer in + composer._wk_click(at: textBounds.center, for: .seconds(1)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + #expect(try await captchaState() == "verified") + #expect(try await selectedText() == "") + } + + @Test + func pressAndHoldOnSelectableTextWithoutCancelingSelectsAWord() async throws { + try await loadPressAndHoldCaptcha( + requiredHoldMilliseconds: 400, + family: .pointer, + textIsSelectable: true, + cancelsDownEvent: false + ) + + let textBounds = try await screenBounds(ofElementWithID: "holdText") + + await recap.play { composer in + composer._wk_click(at: textBounds.center, for: .seconds(1)) } await page.waitForPendingMouseEvents() await page.waitForNextPresentationUpdate() - let observed = try await page.callJavaScript(returning: [String].self) { - "return window.eventLog;" - } - - let active = modifiers.domNames.sorted().joined(separator: ",") - #expect(observed == expectedEvents.map { "\($0.rawValue)(\(active))" }) + #expect(try await selectedText() != "") } @Test(arguments: [true, false]) @@ -761,7 +1553,7 @@ extension AppKitGesturesTests.Basic { #expect(Self.pdfDocumentText.hasPrefix(extended)) #expect(extended.hasPrefix("one\nTwo tWo\ntHree ")) - #expect(!extended.contains("threE")) + #expect(extended.contains("threE") == false) } @Test @@ -783,7 +1575,7 @@ extension AppKitGesturesTests.Basic { #expect(Self.pdfDocumentText.hasSuffix(extended)) #expect(extended.hasSuffix("tHree THREE threE")) - #expect(!extended.hasPrefix("one")) + #expect(extended.hasPrefix("one") == false) } @Test @@ -806,7 +1598,7 @@ extension AppKitGesturesTests.Basic { #expect(Self.pdfDocumentText.hasPrefix(extended)) #expect(extended.hasPrefix("one")) - #expect(!extended.contains("Two")) + #expect(extended.contains("Two") == false) } @Test(arguments: [true, false]) @@ -887,6 +1679,34 @@ extension AppKitGesturesTests.Basic { #expect(newSelection == crazySelection) } + @Test(arguments: [false, true]) + func controlClickOnWordSelectsWordAndOpensContextMenu(contentEditable: Bool) async throws { + try await loadHTML(contentEditable: contentEditable) + + let crazyRange = try #require(Self.text.utf16Range(of: "crazy")) + let crazySelection = JavaScriptSelection.range( + base: .init(in: "div", at: crazyRange.lowerBound), + extent: .init(in: "div", at: crazyRange.upperBound) + ) + + let crazyBounds = try await screenBoundsOfText("crazy") + + await withSwizzledContextMenu { + await recap.play { composer in + composer.holdingModifiers(.control) { + composer._wk_click(at: crazyBounds.center, for: .seconds(0.05)) + } + } + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let newSelection = try await page.callJavaScript(JavaScriptMessages.GetSelection()) + + #expect(newSelection == crazySelection) + } + @Test(arguments: [true, false]) func clickAndHoldOnVideoOpensContextMenu(controls: Bool) async throws { let baseURL = try #require(Bundle.testResources.resourceURL) @@ -1072,6 +1892,114 @@ extension AppKitGesturesTests.Basic { #expect(contextMenuEventCount == 0) } + @Test + func clickingTwiceAtCaretInMisspelledWordOpensContextMenuWithSpellingItems() async throws { + try await loadHTML(contentEditable: true) + + let endOfCrazy = try await pointJustInsideEndOfText("crazy") + let spellChecker = SpellCheckerStub(misspelledWord: "crazy", guesses: []) + + let (caretSelection, menuItems) = try await contextMenuAfterClickingTwiceInMisspelledWord( + at: endOfCrazy, + spellChecker: spellChecker + ) + + let spellingItemTitles: Set = ["No Guesses Found", "Ignore Spelling", "Learn Spelling"] + #expect( + menuItems.filter { spellingItemTitles.contains($0.title) } == [ + PresentedMenuItem(title: "No Guesses Found", isEnabled: false), + PresentedMenuItem(title: "Ignore Spelling", isEnabled: true), + PresentedMenuItem(title: "Learn Spelling", isEnabled: true), + ] + ) + + let selection = try await page.callJavaScript(JavaScriptMessages.GetSelection()) + #expect(selection == caretSelection) + } + + @Test + func choosingLearnSpellingAtCaretLearnsMisspelledWord() async throws { + try await loadHTML(contentEditable: true) + + let endOfCrazy = try await pointJustInsideEndOfText("crazy") + let spellChecker = SpellCheckerStub(misspelledWord: "crazy", guesses: []) + + let (caretSelection, _) = try await contextMenuAfterClickingTwiceInMisspelledWord( + at: endOfCrazy, + spellChecker: spellChecker, + choosingItemTitled: "Learn Spelling" + ) + + #expect(spellChecker.learnedWords == ["crazy"]) + + let selection = try await page.callJavaScript(JavaScriptMessages.GetSelection()) + #expect(selection == caretSelection) + } + + @Test + func choosingLearnSpellingAtCaretAfterMisspelledWordChangesLearnsNothing() async throws { + try await loadHTML(contentEditable: true) + + let endOfCrazy = try await pointJustInsideEndOfText("crazy") + let spellChecker = SpellCheckerStub(misspelledWord: "crazy", guesses: []) + + let (caretSelection, _) = try await contextMenuAfterClickingTwiceInMisspelledWord( + at: endOfCrazy, + spellChecker: spellChecker, + choosingItemTitled: "Learn Spelling", + whileMenuIsOpen: { + do { + try await page.callJavaScript { + """ + const text = document.getElementById("div").firstChild; + text.replaceData(text.data.indexOf("crazy") + 1, 1, "l"); + """ + } + } catch { + Issue.record(error) + } + } + ) + + #expect(spellChecker.learnedWords.isEmpty) + + let text = try await page.callJavaScript(returning: String.self) { + "return document.getElementById('div').textContent;" + } + #expect(text == "Here's to the clazy ones.") + + let selection = try await page.callJavaScript(JavaScriptMessages.GetSelection()) + #expect(selection == caretSelection) + } + + @Test + func choosingSpellingGuessAtCaretReplacesMisspelledWord() async throws { + try await loadHTML(contentEditable: true) + + let crazyRange = try #require(Self.text.utf16Range(of: "crazy")) + let endOfCrazy = try await pointJustInsideEndOfText("crazy") + let spellChecker = SpellCheckerStub(misspelledWord: "crazy", guesses: ["crazier"]) + + _ = try await contextMenuAfterClickingTwiceInMisspelledWord( + at: endOfCrazy, + spellChecker: spellChecker, + choosingItemTitled: "crazier" + ) + + let textAndCaret = try await page.callJavaScript(returning: String.self) { + """ + const div = document.getElementById("div"); + const selection = getSelection(); + const range = document.createRange(); + range.setStart(div, 0); + range.setEnd(selection.focusNode, selection.focusOffset); + return `${div.textContent}|${selection.isCollapsed}|${range.toString().length}`; + """ + } + + #expect(textAndCaret == "Here's to the crazier ones.|true|\(crazyRange.lowerBound + "crazier".utf16.count)") + } + @Test func scrollingDoesNotRemoveTextSelection() async throws { try await loadHTML() @@ -1650,6 +2578,55 @@ extension AppKitGesturesTests.Basic { #expect(page.url != initialURL) } + @Test + func scrollAfterMomentumScrollTargetsElementUnderNewGesture() async throws { + let html = """ + +
    + + + """ + try await page.load(html: html).wait() + await page.waitForNextPresentationUpdate() + + let left = try await screenBounds(ofElementWithID: "left").center + let right = try await screenBounds(ofElementWithID: "right").center + + // Flick over the left box so that the gesture ends in momentum, and let the momentum settle. + await page.withWheelEventMonitoring(expectingMomentumEnd: true) { + await recap.play { composer in + composer._wk_scroll(withStart: left, end: CGPoint(x: left.x, y: left.y - 200), duration: .seconds(0.1)) + } + } + await page.waitForNextPresentationUpdate() + + let flickTargets = try await page.callJavaScript(returning: [String].self) { + "const targets = wheelTargets; wheelTargets = []; scrollEnded = false; return targets;" + } + try #require(flickTargets.contains("left"), "the flick over #left did not dispatch wheel events to it") + + // A new gesture over the right box must not stay latched to the element under the previous gesture. + // This deliberately avoids withWheelEventMonitoring(), since starting to monitor clears latching state. + await recap.play { composer in + composer._wk_scroll(withStart: right, end: CGPoint(x: right.x, y: right.y + 100), duration: .seconds(0.3)) + } + try #require(try await waitUntil("return scrollEnded;"), "the scroll over #right never ended") + + let scrollTargets = try await page.callJavaScript(returning: [String].self) { + "return wheelTargets;" + } + try #require(!scrollTargets.isEmpty, "the scroll over #right did not dispatch any wheel events") + #expect(Set(scrollTargets) == ["right"]) + } + @Test(arguments: [true, false]) func clickThenDragSelectsTextUnlessItInterruptsDeceleratingScroll(interruptsScroll: Bool) async throws { let text = String(repeating: "\(Self.text) ", count: 2000) @@ -1838,7 +2815,7 @@ extension AppKitGesturesTests.Basic { } await page.waitForNextPresentationUpdate() - #expect(!isDataListDropdownShowing()) + #expect(isDataListDropdownShowing() == false) let (activeElementID, blurCount) = try await page.callJavaScript(returning: (String, Int).self) { """ @@ -2287,6 +3264,56 @@ extension AppKitGesturesTests.Basic { #expect(abs(reported - (lastClientY - firstClientY)) <= 2) } + @Test + func dragOverRangeInputChangesValueAfterPageCancelsDragStart() async throws { + let baseURL = try #require(Bundle.testResources.resourceURL) + let html = """ + + + + + + """ + try await page.load(html: html, baseURL: baseURL).wait() + await page.waitForNextPresentationUpdate() + + // Dragging the image attempts to start a drag, but the page cancels dragstart. + let imgBounds = try await screenBounds(ofElementWithID: "img") + await recap.play { composer in + composer._wk_drag( + withStart: imgBounds.center, + end: CGPoint(x: imgBounds.center.x + 300, y: imgBounds.center.y), + duration: .seconds(1.5), + pressAndWait: .seconds(1.0) + ) + } + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + // A subsequent drag should allow mouse tracking. + let sliderBounds = try await screenBounds(ofElementWithID: "slider") + await recap.play { composer in + composer._wk_drag( + withStart: CGPoint(x: sliderBounds.minX + 10, y: sliderBounds.center.y), + end: CGPoint(x: sliderBounds.maxX, y: sliderBounds.center.y), + duration: .seconds(0.5), + release: true + ) + } + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + #expect(try await sliderEvents() == ["mousedown"]) + #expect(try await sliderValue() > 0) + } + @Test( .bug("https://webkit.org/b/315155", "Gesture-driven drag-and-drop does not recognize elements") ) @@ -2551,6 +3578,45 @@ extension AppKitGesturesTests.Basic { // The test succeeds if it does not timeout. } + @Test + func clickThatMovesBeforeImageAnalysisBeginsInitiatesDragAndDropWhileHeld() async throws { + let baseURL = try #require(Bundle.testResources.resourceURL) + let html = """ + + """ + try await page.load(html: html, baseURL: baseURL).wait() + + let imageViewportBounds = try await page.callJavaScript(JavaScriptMessages.BoundingClientRect(elementID: "img")) + let imageScreenBounds = screenBounds(ofRectInViewportCoordinates: imageViewportBounds) + + await page.waitForNextPresentationUpdate() + + let start = imageScreenBounds.center + // Any movement before the click settles for 0.1s fails the image analysis gesture, so no analysis runs. + let nudged = CGPoint(x: start.x, y: start.y + 3) + let dragEnd = CGPoint(x: start.x, y: imageScreenBounds.midY + 200) + + var gestureStateAtDragStart: NSGestureRecognizer.State? + + await withMockedImageAnalyzer(response: .success(.init(lines: [])), after: .zero) { + gestureStateAtDragStart = await withSwizzledDraggingSession { + await recap.play { composer in + // Click and hold past the drag gesture's minimum duration, then drag. + composer._wk_drag( + withStart: start, + end: dragEnd, + duration: .seconds(1), + pressAndWait: .seconds(0.5), + movingFirstTo: nudged + ) + } + } + } + + let state = try #require(gestureStateAtDragStart) + #expect(state == .began || state == .changed, "the drag began from a gesture in state \(state.rawValue)") + } + @Test func clickingAfterImageInEditableContentPlacesCaretAfterImage() async throws { let html = """ @@ -2664,6 +3730,27 @@ extension AppKitGesturesTests.Basic { #expect(settled.y < dragDistance * 1.5) } + @Test + func flickThatRestsBeforeLiftoffDoesNotFling() async throws { + try await loadTallDocument() + await page.waitForNextPresentationUpdate() + + let dragDistance = 250.0 + let center = screenBounds(ofPointInWindowCoordinates: window.frame.center) + let end = CGPoint(x: center.x, y: center.y - dragDistance) + + // Unlike the coalesced case above, this sees "changed" events, so it relies on the velocity going stale. + await recap.play { composer in + composer._wk_drag(withStart: center, end: end, duration: coalescedFlickDuration, release: false) + composer.advanceTime(0.5) + composer._wk_mouseUp() + } + + let settled = try await settledScrollPosition() + + #expect(settled.y < dragDistance * 1.5) + } + @Test(.disabled("This test takes an unavoidable ~10 seconds to run")) func consecutiveQuickFlicksAccelerateScrolling() async throws { let center = screenBounds(ofPointInWindowCoordinates: window.frame.center) @@ -2920,8 +4007,10 @@ extension AppKitGesturesTests.Basic { try await observeBoundaryEvents(onElementWithID: "bar") try await performScroll(from: barBounds.center, to: end) + // The press that begins the scroll is reported to the bar, and canceled once it scrolls, so the bar sees the + // pointer come and go. The mouse's hover state must not follow it there. let actual = try await page.callJavaScript(JavaScriptMessages.EventLog()) - #expect(actual.isEmpty) + #expect(actual.map(\.type) == [.pointerover, .pointerout]) } @Test @@ -2973,14 +4062,30 @@ extension AppKitGesturesTests.Basic { private let coalescedFlickEventFrequency = 20 private let coalescedFlickDuration = Duration.seconds(0.1) -nonisolated(nonsending) private func withSwizzledContextMenu(perform body: () async -> Void) async { +private struct PresentedMenuItem: Sendable, Equatable { + let title: String + let isEnabled: Bool +} + +/// Captures the items of the context menu that `body` presents instead of showing it. Then runs `whileMenuIsOpen`, +/// and chooses the item titled `itemTitle`, if any, as if it were picked from the menu. +@discardableResult +nonisolated(nonsending) private func withSwizzledContextMenu( + choosingItemTitled itemTitle: String? = nil, + whileMenuIsOpen: () async -> Void = {}, + perform body: () async -> Void +) async -> [PresentedMenuItem] { typealias CompletionHandler = @convention(block) () -> Void - typealias ObjCImplementation = @convention(block) (NSMenu.Type, NSMenu, _NSViewMenuContext, NSView, CompletionHandler?) -> Void + typealias ObjCImplementation = + @MainActor @convention(block) ( + NSMenu.Type, NSMenu, _NSViewMenuContext, NSView, CompletionHandler? + ) -> Void let future = Future() + let presentedMenu = PresentedContextMenu() - let implementation: ObjCImplementation = { _, _, _, _, completion in - completion?() + let implementation: ObjCImplementation = { _, menu, _, _, completion in + presentedMenu.open(menu, completion: completion) future.signal() } @@ -2993,15 +4098,52 @@ nonisolated(nonsending) private func withSwizzledContextMenu(perform body: () as await body() await future.wait() + + await whileMenuIsOpen() + + await presentedMenu.close(choosingItemTitled: itemTitle) + } + + return await presentedMenu.items +} + +@MainActor +private final class PresentedContextMenu { + private(set) var items: [PresentedMenuItem] = [] + private var menu: NSMenu? + private var completion: (() -> Void)? + + nonisolated init() { + } + + func open(_ menu: NSMenu, completion: (() -> Void)?) { + self.menu = menu + self.completion = completion + items = menu.items.filter { !$0.isSeparatorItem }.map { PresentedMenuItem(title: $0.title, isEnabled: $0.isEnabled) } + } + + func close(choosingItemTitled itemTitle: String?) { + if let itemTitle, let menu, let index = menu.items.firstIndex(where: { $0.title == itemTitle }) { + menu.performActionForItem(at: index) + } + + completion?() + + menu = nil + completion = nil } } -nonisolated(nonsending) private func withSwizzledDraggingSession(perform body: () async -> Void) async { +@discardableResult +nonisolated(nonsending) private func withSwizzledDraggingSession(perform body: () async -> Void) async -> NSGestureRecognizer.State? { typealias ObjCImplementation = @convention(block) (NSView, NSArray, NSGestureRecognizer, AnyObject) -> NSDraggingSession? let dragInitiated = Future() + let gestureState = Mutex(nil) - let implementation: ObjCImplementation = { _, _, _, _ in + let implementation: ObjCImplementation = { _, _, gesture, _ in + let state = MainActor.assumeIsolated { gesture.state } + gestureState.withLock { $0 = state } dragInitiated.signal() return NSDraggingSession() } @@ -3015,6 +4157,70 @@ nonisolated(nonsending) private func withSwizzledDraggingSession(perform body: ( await dragInitiated.wait() } + + return gestureState.withLock { $0 } +} + +private final class SpellCheckerStub: Sendable { + let misspelledWord: String + let guesses: [String] + private let learnedWordsStorage = Mutex<[String]>([]) + + init(misspelledWord: String, guesses: [String]) { + self.misspelledWord = misspelledWord + self.guesses = guesses + } + + var learnedWords: [String] { + learnedWordsStorage.withLock { $0 } + } + + fileprivate func recordLearnedWord(_ word: String) { + learnedWordsStorage.withLock { $0.append(word) } + } +} + +nonisolated(nonsending) private func withSpellChecker(_ stub: SpellCheckerStub, perform body: () async -> Void) async { + typealias CheckString = + @convention(block) (AnyObject, NSString, NSRange, NSTextCheckingTypes, NSDictionary?, Int, Int, Int) -> NSArray + typealias GuessesForWordRange = @convention(block) (AnyObject, NSRange, NSString, NSString?, Int) -> NSArray + typealias LearnWord = @convention(block) (AnyObject, NSString) -> Void + + let checkString: CheckString = { _, string, _, types, _, _, _, _ in + let misspelledRange = string.range(of: stub.misspelledWord) + guard misspelledRange.location != NSNotFound, types & NSTextCheckingResult.CheckingType.spelling.rawValue != 0 else { + return [] as NSArray + } + return [NSTextCheckingResult.spellCheckingResult(range: misspelledRange)] as NSArray + } + + let guessesForWordRange: GuessesForWordRange = { _, _, _, _, _ in + stub.guesses as NSArray + } + + let learnWord: LearnWord = { _, word in + stub.recordLearnedWord(word as String) + } + + await withSwizzledObjectiveCInstanceMethod( + replacing: NSSpellChecker.self, + name: NSSelectorFromString("checkString:range:types:options:inSpellDocumentWithTag:orthography:wordCount:"), + with: checkString + ) { + await withSwizzledObjectiveCInstanceMethod( + replacing: NSSpellChecker.self, + name: NSSelectorFromString("guessesForWordRange:inString:language:inSpellDocumentWithTag:"), + with: guessesForWordRange + ) { + await withSwizzledObjectiveCInstanceMethod( + replacing: NSSpellChecker.self, + name: NSSelectorFromString("learnWord:"), + with: learnWord + ) { + await body() + } + } + } } extension ImageAnalysisResult.Quad { @@ -3112,6 +4318,47 @@ extension AppKitGesturesTests.Basic { } } + private func pointJustInsideEndOfText(_ text: String) async throws -> CGPoint { + let bounds = try await screenBoundsOfText(text) + return CGPoint(x: bounds.maxX - 2, y: bounds.midY) + } + + private func contextMenuAfterClickingTwiceInMisspelledWord( + at point: CGPoint, + spellChecker: SpellCheckerStub, + choosingItemTitled itemTitle: String? = nil, + whileMenuIsOpen: () async -> Void = {} + ) async throws -> (caretSelection: JavaScriptSelection, menuItems: [PresentedMenuItem]) { + await recap.play { composer in + composer._wk_click(at: point, for: .seconds(0.05)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + let caretSelection = try await page.callJavaScript(JavaScriptMessages.GetSelection()) + guard case .collapsed = caretSelection else { + Issue.record("expected the click to place the caret, got \(caretSelection)") + return (caretSelection, []) + } + + // Wait until the next click can no longer complete a double click. + try await Task.sleep(for: .seconds(1)) + + var menuItems: [PresentedMenuItem] = [] + await withSpellChecker(spellChecker) { + menuItems = await withSwizzledContextMenu(choosingItemTitled: itemTitle, whileMenuIsOpen: whileMenuIsOpen) { + await recap.play { composer in + composer._wk_click(at: point, for: .seconds(0.05)) + } + } + + await page.waitForNextPresentationUpdate() + } + + return (caretSelection, menuItems) + } + private func waitForVideoToLoadData(elementID: String) async throws { try await page.callJavaScript(arguments: ["elementID": elementID]) { """ diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift index 711dfc136b799..30b998901bd2f 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/DoubleClickGesturesTests.swift @@ -75,10 +75,17 @@ extension AppKitGesturesTests.DoubleClick { try await page.callJavaScript { """ window.fieldLog = []; + let pointerDownCount = 0; for (const type of ["pointerdown", "mousedown", "pointerup", "mouseup", "dblclick"]) { document.addEventListener(type, event => { - // Record only the second press -- what this test is about. - if (event.detail !== 2) + // Record only the second press -- what this test is about. Pointer events always + // report a `detail` of 0, so count their presses instead. + if (event instanceof PointerEvent) { + if (event.type === "pointerdown") + pointerDownCount++; + if (pointerDownCount !== 2) + return; + } else if (event.detail !== 2) return; window.fieldLog.push( `${event.type}:${event.buttons}:${event.pressure ?? "-"}:${event.webkitForce}` @@ -108,8 +115,8 @@ extension AppKitGesturesTests.DoubleClick { #expect( fieldLog == [ "pointerdown:1:0.5:0", - "mousedown:1:-:1", "pointerup:0:0:0", + "mousedown:1:-:1", "mouseup:0:-:0", "dblclick:0:-:0", ] @@ -154,6 +161,201 @@ extension AppKitGesturesTests.DoubleClick { #expect(try await page.callJavaScript(JavaScriptMessages.GetSelection()) == crazySelection) } + @Test(arguments: [false, true]) + func doubleClickDoesNotSelectWordWhenPagePreventsMousedown(dblclickHandler: Bool) async throws { + try await loadHTML(dblclickHandler: dblclickHandler) + // Only log dblclick events when the page listens for them, since listening for them changes how the clicks are delivered. + try await page.callJavaScript(JavaScriptMessages.InstallEventLog(in: "div", for: dblclickHandler ? [.click, .dblclick] : [.click])) + try await page.callJavaScript { + """ + document.addEventListener("mousedown", event => event.preventDefault()); + """ + } + + try await doubleClickText("crazy") + + // A late click for the second press would arrive after the double click, so give it time to. + try await Task.sleep(for: .seconds(0.5)) + + // The page still gets both clicks, as a double click when it listens for one. + let actual = try await page.callJavaScript(JavaScriptMessages.EventLog()) + let expected = + dblclickHandler + ? [ + DOMEvent(type: .click, detail: 1), + DOMEvent(type: .click, detail: 2), + DOMEvent(type: .dblclick, detail: 2), + ] + : [ + DOMEvent(type: .click, detail: 1), + DOMEvent(type: .click, detail: 1), + ] + + #expect(actual == expected) + + try await expectNoRangeSelection() + } + + @Test + func doubleClickSelectsWordWhenPageObservesMousedownWithoutPreventingIt() async throws { + try await loadHTML() + try await page.callJavaScript(JavaScriptMessages.InstallEventLog(in: "div", for: [.mousedown])) + + try await doubleClickText("crazy") + + let crazyRange = try #require(Self.text.utf16Range(of: "crazy")) + let crazySelection = JavaScriptSelection.range( + base: .init(in: "div", at: crazyRange.lowerBound), + extent: .init(in: "div", at: crazyRange.upperBound) + ) + + #expect(try await page.callJavaScript(JavaScriptMessages.GetSelection()) == crazySelection) + } + + @Test + func doubleClickAndHoldDoesNotSelectWordWhenPagePreventsMousedown() async throws { + try await loadHTML() + try await page.callJavaScript { + """ + document.addEventListener("mousedown", event => event.preventDefault()); + """ + } + + try await doubleClickText("crazy", secondPressDuration: .seconds(1.2)) + + try await expectNoRangeSelection() + } + + @Test + func doubleClickAndHoldSelectsWord() async throws { + try await loadHTML() + + try await doubleClickText("crazy", secondPressDuration: .seconds(1.2)) + + let crazyRange = try #require(Self.text.utf16Range(of: "crazy")) + let crazySelection = JavaScriptSelection.range( + base: .init(in: "div", at: crazyRange.lowerBound), + extent: .init(in: "div", at: crazyRange.upperBound) + ) + + #expect(try await page.callJavaScript(JavaScriptMessages.GetSelection()) == crazySelection) + } + + @Test + func doubleClickOnCanvasThatPreventsMousedownDeliversBothClicksWithoutSelecting() async throws { + let html = """ + +
    + + +
    + + """ + try await page.load(html: html).wait() + try await page.callJavaScript(JavaScriptMessages.InstallEventLog(in: "canvas", for: [.click])) + try await page.callJavaScript { + """ + document.getElementById("map").addEventListener("mousedown", event => event.preventDefault()); + """ + } + + let canvasBounds = try await screenBounds(ofElementWithID: "canvas") + + await recap.play { composer in + composer._wk_click(at: canvasBounds.center, for: .seconds(0.1)) + composer.advanceTime(0.1) + composer._wk_click(at: canvasBounds.center, for: .seconds(0.1)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + try await Task.sleep(for: .seconds(0.5)) + + let actual = try await page.callJavaScript(JavaScriptMessages.EventLog()) + let expected = [ + DOMEvent(type: .click, detail: 1), + DOMEvent(type: .click, detail: 1), + ] + + #expect(actual == expected) + + try await expectNoRangeSelection() + } + + @Test + func doubleClickWithListenerDoesNotSelectWordWhenPagePreventsSecondMousedown() async throws { + // A page that listens for double clicks gets the second press as one, before AppKit begins the selection. + try await loadHTML(dblclickHandler: true) + try await page.callJavaScript { + """ + document.addEventListener("mousedown", event => { + if (event.detail > 1) + event.preventDefault(); + }); + """ + } + + try await doubleClickText("crazy") + + try await expectNoRangeSelection() + } + + @Test + func doubleClickDoesNotSelectWordWhenBusyPagePreventsMousedown() async throws { + try await loadHTML() + try await page.callJavaScript { + """ + document.addEventListener("mousedown", event => { + event.preventDefault(); + // Keep the web process busy past the second press, like a page that is busy rendering. + const end = performance.now() + 300; + while (performance.now() < end) { } + }); + """ + } + + try await doubleClickText("crazy") + + try await expectNoRangeSelection() + } + + @Test + func doubleClickSelectsWordAfterClickingElementThatPreventsMousedown() async throws { + let html = """ + +
    \(Self.text)
    + """ + try await page.load(html: html).wait() + try await page.callJavaScript { + """ + document.getElementById("button").addEventListener("mousedown", event => event.preventDefault()); + """ + } + + let buttonBounds = try await screenBounds(ofElementWithID: "button") + + await recap.play { composer in + composer._wk_click(at: buttonBounds.center, for: .seconds(0.1)) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + + // Far enough apart that AppKit does not treat this click and the next as a double click. + try await Task.sleep(for: .seconds(0.5)) + + try await doubleClickText("crazy") + + let crazyRange = try #require(Self.text.utf16Range(of: "crazy")) + let crazySelection = JavaScriptSelection.range( + base: .init(in: "div", at: crazyRange.lowerBound), + extent: .init(in: "div", at: crazyRange.upperBound) + ) + + #expect(try await page.callJavaScript(JavaScriptMessages.GetSelection()) == crazySelection) + } + @Test(arguments: [true, false]) func doubleClickWithListenerFiresDblclickRegardlessOfEditability(contentEditable: Bool) async throws { try await loadHTML(contentEditable: contentEditable, dblclickHandler: true) @@ -496,6 +698,29 @@ extension AppKitGesturesTests.DoubleClick { #expect(try await page.callJavaScript(JavaScriptMessages.GetSelection()) == crazySelection) } + private func doubleClickText( + _ text: String, + secondPressDuration: Duration = .seconds(0.1) + ) async throws { + let bounds = try await screenBoundsOfText(text) + + await recap.play { composer in + composer._wk_click(at: bounds.center, for: .seconds(0.1)) + composer.advanceTime(0.1) + composer._wk_click(at: bounds.center, for: secondPressDuration) + } + + await page.waitForPendingMouseEvents() + await page.waitForNextPresentationUpdate() + } + + private func expectNoRangeSelection(sourceLocation: SourceLocation = #_sourceLocation) async throws { + let selection = try await page.callJavaScript(JavaScriptMessages.GetSelection()) + if case .range = selection { + Issue.record("Expected no range selection, but got \(selection)", sourceLocation: sourceLocation) + } + } + private func loadZoomableHTML(dblclickHandler: Bool = false) async throws { let dblclickHandlerMarkup = dblclickHandler ? "ondblclick='void(0)'" : "" diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/QuirksAppKitGesturesTests.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/QuirksAppKitGesturesTests.swift index 7fdc8f3f429ac..60536da630262 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/QuirksAppKitGesturesTests.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/AppKit Gesture Tests/QuirksAppKitGesturesTests.swift @@ -99,12 +99,15 @@ extension AppKitGesturesTests.Quirks { try await expectDrag(from: start, to: end, over: surface, reachesContent: true) } - @Test - func clickAndHoldOnUnselectableMailListItemFiresContextMenuEventOnlyOnOutlook() async throws { + @Test(arguments: [ + (topDocumentURL: "https://outlook.live.com/mail/", rowID: "outlook-row"), + (topDocumentURL: "https://www.icloud.com/mail/", rowID: "icloud-row"), + ]) + func clickAndHoldOnUnselectableMailListItemFiresContextMenuEvent(topDocumentURL: String, rowID: String) async throws { let url = try #require(Bundle.testResources.url(forResource: "unselectable-mail-list-item", withExtension: "html")) try await page.load(url).wait() - try await page.callJavaScript(arguments: ["url": "https://outlook.live.com/mail/"]) { + try await page.callJavaScript(arguments: ["url": topDocumentURL]) { "internals.setTopDocumentURLForQuirks(url);" } @@ -115,7 +118,7 @@ extension AppKitGesturesTests.Quirks { await page.waitForNextPresentationUpdate() - let rowBounds = try await screenBounds(ofElementWithID: "row") + let rowBounds = try await screenBounds(ofElementWithID: rowID) await recap.play { composer in composer._wk_click(at: rowBounds.center, for: .seconds(1)) @@ -128,7 +131,7 @@ extension AppKitGesturesTests.Quirks { "return window.events;" } #expect(events.contains("contextmenu")) - #expect(!events.contains("click")) + #expect(events.contains("click") == false) } } diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/JSHandleTests.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/JSHandleTests.swift index 89bb1975af7dd..efb171f2b9a21 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/JSHandleTests.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/JSHandleTests.swift @@ -26,20 +26,11 @@ import Testing @_spi(Testing) import WebKit private import TestWebKitAPILibrary -private import WebKit_Private._WKWebsiteDataStoreConfiguration -private import WebKit_Private.WKWebsiteDataStorePrivate +private import WebKit_Private.WKProcessPoolPrivate +private import WebKit_Private._WKFrameTreeNode import struct Swift.String import struct Foundation.URL -@MainActor -private struct JSHandleNavigationDecider: WebPage.NavigationDeciding { - mutating func decideAuthenticationChallengeDisposition( - for challenge: URLAuthenticationChallenge - ) async -> (URLSession.AuthChallengeDisposition, URLCredential?) { - (.useCredential, challenge.protectionSpace.serverTrust.map(URLCredential.init(trust:))) - } -} - @MainActor struct JSHandleTests { @Test @@ -59,8 +50,8 @@ struct JSHandleTests { } try await server.run { - let configuration = WebPage.Configuration($0) - let page = WebPage(configuration: configuration, navigationDecider: JSHandleNavigationDecider()) + let configuration = WebPage.Configuration(httpsProxyFor: $0) + let page = WebPage(configuration: configuration, navigationDecider: NavigationDeciderAllowingAnyTLSCertificate()) try await page.load(URL(string: "https://example.com/example")).wait() @@ -200,14 +191,4 @@ struct JSHandleTests { } } -extension WebPage.Configuration { - fileprivate init(_ serverConfiguration: HTTPServer.Configuration) { - self.init() - - let storeConfiguration = _WKWebsiteDataStoreConfiguration(nonPersistentConfiguration: ()) - storeConfiguration.httpsProxy = serverConfiguration.httpsProxy - self.websiteDataStore = WKWebsiteDataStore._store(with: storeConfiguration) - } -} - #endif // ENABLE_SWIFTUI diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageScrollbarTests.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageScrollbarTests.swift index 241b44e2bcfad..84d0ae6ac226b 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageScrollbarTests.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageScrollbarTests.swift @@ -161,7 +161,7 @@ struct ScrollbarTests { let point = NSPoint(x: Self.subscrollerMaxEdge - 5, y: Self.subscrollerCenter) - #expect(!page.isPointInScrollbar(locationInView: point)) + #expect(page.isPointInScrollbar(locationInView: point) == false) } @Test @@ -174,7 +174,7 @@ struct ScrollbarTests { let point = NSPoint(x: Self.subscrollerMaxEdge - 5, y: Self.subscrollerCenter) - #expect(!page.isPointInScrollbar(locationInView: point)) + #expect(page.isPointInScrollbar(locationInView: point) == false) } @Test @@ -194,7 +194,7 @@ struct ScrollbarTests { let point = NSPoint(x: Self.subscrollerMaxEdge - 5, y: Self.subscrollerCenter) - #expect(!page.isPointInScrollbar(locationInView: point)) + #expect(page.isPointInScrollbar(locationInView: point) == false) } } diff --git a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift index a1c59832e5537..b2fd1d1c944df 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift +++ b/Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift @@ -69,15 +69,6 @@ private class TestNavigationDecider: WebPage.NavigationDeciding { } } -@MainActor -private struct TrustingNavigationDecider: WebPage.NavigationDeciding { - mutating func decideAuthenticationChallengeDisposition( - for challenge: URLAuthenticationChallenge - ) async -> (URLSession.AuthChallengeDisposition, URLCredential?) { - (.useCredential, challenge.protectionSpace.serverTrust.map(URLCredential.init(trust:))) - } -} - extension WebPage.Configuration { fileprivate init(_ serverConfiguration: HTTPServer.Configuration, qualifiedServerTrustDebugEnabled: Bool = false) { self.init() @@ -129,7 +120,7 @@ struct WebPageTests { try await server.run { serverConfiguration in let configuration = WebPage.Configuration(serverConfiguration, qualifiedServerTrustDebugEnabled: true) - let page = WebPage(configuration: configuration, navigationDecider: TrustingNavigationDecider()) + let page = WebPage(configuration: configuration, navigationDecider: NavigationDeciderAllowingAnyTLSCertificate()) #expect(page.qualifiedServerTrust == nil) diff --git a/Tools/TestWebKitAPI/Tests/WebKitLegacy/cocoa/SubstituteDataLocalResourceAccess.mm b/Tools/TestWebKitAPI/Tests/WebKitLegacy/cocoa/SubstituteDataLocalResourceAccess.mm index f0b6be42b6a0f..ec0a0bee9c900 100644 --- a/Tools/TestWebKitAPI/Tests/WebKitLegacy/cocoa/SubstituteDataLocalResourceAccess.mm +++ b/Tools/TestWebKitAPI/Tests/WebKitLegacy/cocoa/SubstituteDataLocalResourceAccess.mm @@ -70,7 +70,7 @@ - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame auto [tempFilePath, tempFileHandle] = FileSystem::openTemporaryFile("SubstituteDataLocalResourceAccess"_s, ".js"_s); ASCIILiteral scriptContents = "window.testResult = 'local file contents'"_s; - tempFileHandle.write(scriptContents.span8()); + tempFileHandle.write(byteCast(scriptContents.span8())); tempFileHandle = { }; URL tempFileURL = URL::fileURLWithFileSystemPath(tempFilePath); diff --git a/Tools/TestWebKitAPI/glib/CMakeLists.txt b/Tools/TestWebKitAPI/glib/CMakeLists.txt index 3143ce631e637..da34bac666714 100644 --- a/Tools/TestWebKitAPI/glib/CMakeLists.txt +++ b/Tools/TestWebKitAPI/glib/CMakeLists.txt @@ -147,6 +147,7 @@ ADD_WK2_TEST(TestBackForwardList ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebVi ADD_WK2_TEST(TestConsoleMessage ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestConsoleMessage.cpp) ADD_WK2_TEST(TestCookieManager ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestCookieManager.cpp) ADD_WK2_TEST(TestDownloads ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestDownloads.cpp) +ADD_WK2_TEST(TestWebKitFaviconDatabase ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitFaviconDatabase.cpp) ADD_WK2_TEST(TestWebKitFindController ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitFindController.cpp) ADD_WK2_TEST(TestLoaderClient ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestLoaderClient.cpp) ADD_WK2_TEST(TestMultiprocess ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestMultiprocess.cpp) diff --git a/Tools/TestWebKitAPI/glib/PlatformGTK.cmake b/Tools/TestWebKitAPI/glib/PlatformGTK.cmake index 0406ccfa4eca1..dfb2858cf390d 100644 --- a/Tools/TestWebKitAPI/glib/PlatformGTK.cmake +++ b/Tools/TestWebKitAPI/glib/PlatformGTK.cmake @@ -56,7 +56,6 @@ ADD_WK2_TEST(TestInspector ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/gtk ADD_WK2_TEST(TestInspectorServer ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestInspectorServer.cpp) ADD_WK2_TEST(TestPrinting ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestPrinting.cpp) ADD_WK2_TEST(TestWebKitAccessibility ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebKitAccessibility.cpp) -ADD_WK2_TEST(TestWebKitFaviconDatabase ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitFaviconDatabase.cpp) ADD_WK2_TEST(TestWebKitVersion ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebKitVersion.cpp) ADD_WK2_TEST(TestWebViewEditor ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/gtk/TestWebViewEditor.cpp) diff --git a/Tools/TestWebKitAPI/glib/PlatformWPE.cmake b/Tools/TestWebKitAPI/glib/PlatformWPE.cmake index 8e5bc3e7ccf03..da88b8386783c 100644 --- a/Tools/TestWebKitAPI/glib/PlatformWPE.cmake +++ b/Tools/TestWebKitAPI/glib/PlatformWPE.cmake @@ -29,6 +29,3 @@ if (ENABLE_WPE_PLATFORM) ADD_WK2_TEST(TestWebViewEditor ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/wpe/TestWebViewEditor.cpp) endif () -if (ENABLE_2022_GLIB_API) - ADD_WK2_TEST(TestWebKitFaviconDatabase ${TOOLS_DIR}/TestWebKitAPI/Tests/WebKit/WKWebView/glib/TestWebKitFaviconDatabase.cpp) -endif () diff --git a/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp b/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp index d43c5eeb2464e..087d930fd40ec 100644 --- a/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp +++ b/Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp @@ -23,6 +23,7 @@ #include #include +#include bool WebViewTest::shouldInitializeWebViewInConstructor = true; bool WebViewTest::shouldCreateEphemeralWebView = false; @@ -485,7 +486,7 @@ bool WebViewTest::runWebProcessTest(const char* suiteName, const char* testName, static const char* emptyHTML = ""; loadHtml(contents ? contents : emptyHTML, "webprocess://test"); } else { - GRefPtr bytes = adoptGRef(g_bytes_new_static(contents, strlen(contents))); + GRefPtr bytes = gBytesNewStatic(unsafeSpan(contents)); loadBytes(bytes.get(), contentType, nullptr, "webprocess://test"); } waitUntilLoadFinished(); diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h index 1e38aa9f246b5..9c8f958a66b61 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h +++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h @@ -27,6 +27,7 @@ #include "JSWrappable.h" #include +#include #include #include #include @@ -84,6 +85,10 @@ class AccessibilityController : public JSWrappable { bool addNotificationListener(JSContextRef, JSValueRef functionCallback); bool removeNotificationListener(); +#if PLATFORM(MAC) + // Called when the UI process forwards a notification it observed in client accessibility mode. + void clientNotificationReceived(uint64_t elementToken, JSStringRef notificationName); +#endif void injectAccessibilityPreference(JSStringRef domain, JSStringRef key, JSStringRef value); void printToStderr(JSStringRef) const; @@ -107,6 +112,14 @@ class AccessibilityController : public JSWrappable { void platformInitialize(); void platformInitializeClientAccessibility(); +#if PLATFORM(MAC) + bool addClientNotificationListener(JSContextRef, JSValueRef functionCallback); + bool removeClientNotificationListener(); + + JSRetainPtr m_clientNotificationContext; + JSValueRef m_clientNotificationCallback { nullptr }; +#endif + #if PLATFORM(COCOA) RetainPtr m_globalNotificationHandler; #elif USE(ATSPI) diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h index fac30753d3dca..216cf2c50c9b7 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h +++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h @@ -57,11 +57,15 @@ namespace WTR { class AccessibilityController; +#if PLATFORM(COCOA) +enum class Synchronous : bool { No, Yes }; +#endif + class AccessibilityUIElement : public JSWrappable { #if PLATFORM(COCOA) // Helper functions that dispatch the corresponding AccessibilityObjectWrapper method to the AX secondary thread when appropriate. friend RetainPtr supportedAttributes(id); - friend void setAttributeValue(id, NSString *, id, bool synchronous); + friend void setAttributeValue(id, NSString *, id, Synchronous); #endif public: diff --git a/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl b/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl index f590eecd969bd..3f8c9a2aec23e 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl +++ b/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl @@ -115,8 +115,6 @@ interface TestRunner { // Printing boolean isPageBoxVisible(long pageIndex); - undefined setValueForUser(object element, DOMString value); - // UserContent testing. undefined addUserScript(DOMString source, boolean runAtStart, boolean allFrames); undefined addUserStyleSheet(DOMString source, boolean allFrames); diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp index 463f80d9fcff5..38e82df4f585a 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp +++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp @@ -105,6 +105,7 @@ void InjectedBundle::initialize(WKBundleRef bundle, WKTypeRef initializationUser }; WKBundleSetClient(m_bundle.get(), &client.base); WKBundleSetServiceWorkerProxyCreationCallback(m_bundle.get(), WebCoreTestSupport::setupNewlyCreatedServiceWorker); + WebCoreTestSupport::setupWorkerInternals(); platformInitialize(initializationUserData); WebCoreTestSupport::populateJITOperations(); @@ -318,6 +319,15 @@ void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef m return; } +#if PLATFORM(MAC) + if (WKStringIsEqualToUTF8CString(messageName, "AXClientNotification")) { + auto messageBodyDictionary = dictionaryValue(messageBody); + if (m_accessibilityController) + m_accessibilityController->clientNotificationReceived(uint64Value(messageBodyDictionary, "elementToken"), toJS(stringValue(messageBodyDictionary, "notificationName")).get()); + return; + } +#endif + postPageMessage("Error", "Unknown"); } diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp index f41220f769ab4..92c9d26d9bf21 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp +++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp @@ -1130,6 +1130,10 @@ void InjectedBundlePage::frameDidChangeLocation(WKBundleFrameRef frame) void InjectedBundlePage::notifyDone() { + // With site isolation, a provisional load that continues in another process (e.g. after a cross-site redirect) + // never gets didFinishLoad or didFailProvisionalLoad in this process, so stop waiting once the frame is no longer loading here. + if (m_topLoadingFrame && WKBundleFrameGetFrameLoadState(m_topLoadingFrame) == kWKFrameLoadStateFinished) + setTopLoadingFrame(nullptr); if (m_topLoadingFrame) return; forceImmediateCompletion(); diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp index d9e80e8e93c64..3786dcfa11650 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp +++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -446,14 +445,6 @@ bool TestRunner::isPageBoxVisible(JSContextRef context, int pageIndex) return WKBundleIsPageBoxVisible(injectedBundle.bundle(), frame, pageIndex); } -void TestRunner::setValueForUser(JSContextRef context, JSValueRef element, JSStringRef value) -{ - if (!element || !JSValueIsObject(context, element)) - return; - - WKBundleNodeHandleSetHTMLInputElementValueForUser(adoptWK(WKBundleNodeHandleCreate(context, const_cast(element))).get(), toWK(value).get()); -} - void TestRunner::setAudioResult(JSContextRef context, JSValueRef data) { auto& injectedBundle = InjectedBundle::singleton(); diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h index 3b4b80c0de923..d7c2726203f15 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h +++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h @@ -204,8 +204,6 @@ class TestRunner : public JSWrappable { bool isPageBoxVisible(JSContextRef, int pageIndex); void setPrinting() const; - void setValueForUser(JSContextRef, JSValueRef element, JSStringRef value); - // Audio testing. void setAudioResult(JSContextRef, JSValueRef data); diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm index 56153d762e72b..3497b7e82525b 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm +++ b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm @@ -36,12 +36,14 @@ #import "InjectedBundle.h" #import "InjectedBundlePage.h" #import "JSBasics.h" +#import "JSWrapper.h" #import "WebCoreTestSupport.h" #import #import #import #import #import +#import #import @@ -77,6 +79,9 @@ if (!functionCallback) return false; + if (m_enableClientAccessibilityMode) + return addClientNotificationListener(context, functionCallback); + if (m_globalNotificationHandler) return false; @@ -93,6 +98,9 @@ bool AccessibilityController::removeNotificationListener() { + if (m_clientNotificationCallback) + return removeClientNotificationListener(); + ASSERT(m_globalNotificationHandler); [m_globalNotificationHandler.get() stopObserving]; @@ -101,9 +109,56 @@ return true; } +bool AccessibilityController::addClientNotificationListener(JSContextRef context, JSValueRef functionCallback) +{ + if (m_clientNotificationCallback) + return false; + + // The UI process observes the web content processes with AXObserver, the way an assistive + // technology would, and forwards each notification back here as "AXClientNotification". + ALLOW_DEPRECATED_DECLARATIONS_BEGIN + WKTypeRef returnData = nullptr; + WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), toWK("AXAddNotificationListener").get(), nullptr, &returnData); + ALLOW_DEPRECATED_DECLARATIONS_END + WKRetainPtr result = adoptWK(returnData); + if (!result || WKGetTypeID(result.get()) != WKBooleanGetTypeID() || !WKBooleanGetValue(static_cast(result.get()))) { + postSynchronousMessage("AXRemoveNotificationListener"); + return false; + } + + m_clientNotificationContext = JSContextGetGlobalContext(context); + m_clientNotificationCallback = functionCallback; + JSValueProtect(m_clientNotificationContext.get(), m_clientNotificationCallback); + return true; +} + +bool AccessibilityController::removeClientNotificationListener() +{ + postSynchronousMessage("AXRemoveNotificationListener"); + + JSValueUnprotect(m_clientNotificationContext.get(), m_clientNotificationCallback); + m_clientNotificationCallback = nullptr; + m_clientNotificationContext = nullptr; + return true; +} + +void AccessibilityController::clientNotificationReceived(uint64_t elementToken, JSStringRef notificationName) +{ + if (!m_clientNotificationCallback) + return; + + // Match the arguments a global listener gets in non-client mode: element, notification name, user info. + auto context = m_clientNotificationContext.get(); + JSValueRef arguments[3]; + arguments[0] = toJS(context, AccessibilityUIElementClientMac::create(elementToken).ptr()); + arguments[1] = JSValueMakeString(context, notificationName); + arguments[2] = JSValueMakeUndefined(context); + JSObjectCallAsFunction(context, const_cast(m_clientNotificationCallback), 0, 3, arguments, 0); +} + void AccessibilityController::resetToConsistentState() { - if (m_globalNotificationHandler) + if (m_globalNotificationHandler || m_clientNotificationCallback) removeNotificationListener(); #if ENABLE(ACCESSIBILITY_ISOLATED_TREE) diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h index fe5fa409db7a0..f80034f49c37c 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h +++ b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h @@ -41,7 +41,7 @@ class AccessibilityUIElementMac final : public AccessibilityUIElement { // Helper functions that dispatch to AX secondary thread friend RetainPtr supportedAttributes(id); friend RetainPtr supportedParameterizedAttributes(id); - friend void setAttributeValue(id, NSString *, id, bool synchronous); + friend void setAttributeValue(id, NSString *, id, Synchronous); public: static Ref create(PlatformUIElement); diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm index b86ab3cbf7833..511fb73f5563e 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm +++ b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm @@ -244,12 +244,12 @@ static id attributeValue(id element, NSString *attribute) return [element accessibilityAttributeValue:attribute]; } -void setAttributeValue(id element, NSString* attribute, id value, bool synchronous = false) +void setAttributeValue(id element, NSString* attribute, id value, Synchronous synchronous = Synchronous::No) { BEGIN_AX_OBJC_EXCEPTIONS AccessibilityUIElementMac::s_controller->executeOnAXThreadAndWait([&element, &attribute, &value, &synchronous] { // FIXME: should always be asynchronous, fix tests. - synchronous ? [element _accessibilitySetValue:value forAttribute:attribute] : + synchronous == Synchronous::Yes ? [element _accessibilitySetValue:value forAttribute:attribute] : [element accessibilitySetValue:value forAttribute:attribute]; }); END_AX_OBJC_EXCEPTIONS @@ -955,7 +955,7 @@ void setAttributeValue(id element, NSString* attribute, id value, bool synchrono void AccessibilityUIElementMac::setBoolAttributeValue(JSStringRef attribute, bool value) { - setAttributeValue(m_element.get(), [NSString stringWithJSStringRef:attribute], @(value), /* synchronous */ true); + setAttributeValue(m_element.get(), [NSString stringWithJSStringRef:attribute], @(value), Synchronous::Yes); } void AccessibilityUIElementMac::setValue(JSStringRef value) @@ -2041,7 +2041,7 @@ void setAttributeValue(id element, NSString* attribute, id value, bool synchrono if (selectedChildren) array = [selectedChildren arrayByAddingObjectsFromArray:array]; - setAttributeValue(m_element.get(), NSAccessibilitySelectedChildrenAttribute, array, /* synchronous */ true); + setAttributeValue(m_element.get(), NSAccessibilitySelectedChildrenAttribute, array, Synchronous::Yes); } void AccessibilityUIElementMac::removeSelectionAtIndex(unsigned index) const @@ -2057,11 +2057,12 @@ void setAttributeValue(id element, NSString* attribute, id value, bool synchrono NSMutableArray *array = [NSMutableArray arrayWithArray:selectedChildren.get()]; [array removeObject:static_cast(element.get())->platformUIElement()]; - setAttributeValue(m_element.get(), NSAccessibilitySelectedChildrenAttribute, array, /* synchronous */ true); + setAttributeValue(m_element.get(), NSAccessibilitySelectedChildrenAttribute, array, Synchronous::Yes); } void AccessibilityUIElementMac::clearSelectedChildren() const { + setAttributeValue(m_element.get(), NSAccessibilitySelectedChildrenAttribute, @[], Synchronous::Yes); } RefPtr AccessibilityUIElementMac::accessibilityValue() const @@ -2600,7 +2601,7 @@ void setAttributeValue(id element, NSString* attribute, id value, bool synchrono if (!textMarkerRange) return; - setAttributeValue(m_element.get(), NSAccessibilitySelectedTextMarkerRangeAttribute, textMarkerRange.get(), /* synchronous */ true); + setAttributeValue(m_element.get(), NSAccessibilitySelectedTextMarkerRangeAttribute, textMarkerRange.get(), Synchronous::Yes); } RefPtr AccessibilityUIElementMac::textInputMarkedTextMarkerRange() const diff --git a/Tools/WebKitTestRunner/Scripts/check-xcfilelists.sh b/Tools/WebKitTestRunner/Scripts/check-xcfilelists.sh index 38f3f56c9f5e0..a6aebe56f53e7 100755 --- a/Tools/WebKitTestRunner/Scripts/check-xcfilelists.sh +++ b/Tools/WebKitTestRunner/Scripts/check-xcfilelists.sh @@ -2,7 +2,6 @@ [ "${WK_DISABLE_CHECK_XCFILELISTS}" == "1" ] && { echo "### Not running because WK_DISABLE_CHECK_XCFILELISTS is set"; exit 0; } [ "${DEPLOYMENT_LOCATION}" == "YES" ] && { echo "### Not running because DEPLOYMENT_LOCATION is YES"; exit 0; } -[ "${USE_INTERNAL_SDK}" == "YES" ] || { echo "### Not running because USE_INTERNAL_SDK is not YES"; exit 0; } SCRIPT="${BUILD_SCRIPTS_DIR}/generate-xcfilelists" [ -f "${SCRIPT}" ] || SCRIPT="${PROJECT_DIR}/../../../${WK_ADDITIONAL_SCRIPTS_DIR}/generate-xcfilelists" diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp index c483cbbb7a5b1..99abcc4810e8f 100644 --- a/Tools/WebKitTestRunner/TestController.cpp +++ b/Tools/WebKitTestRunner/TestController.cpp @@ -871,7 +871,7 @@ PlatformWebView* TestController::createOtherPlatformWebView(PlatformWebView* par nullptr, // runWebAuthenticationPanel nullptr, // decidePolicyForSpeechRecognitionPermissionRequest nullptr, // decidePolicyForMediaKeySystemPermissionRequest - nullptr, // queryPermission + queryPermission, nullptr, // lockScreenOrientationCallback, nullptr, // unlockScreenOrientationCallback, addMessageToConsole, @@ -1182,6 +1182,16 @@ WKRetainPtr TestController::generatePageConfiguration(co m_userContentController = adoptWK(WKUserContentControllerCreate()); WKPageConfigurationSetUserContentController(pageConfiguration.get(), userContentController()); WKPageConfigurationSetPortsForUpgradingInsecureSchemeForTesting(pageConfiguration.get(), options.insecureUpgradePort(), options.secureUpgradePort()); + +#if ENABLE(APPLICATION_MANIFEST) && !PLATFORM(COCOA) + // Cocoa sets the application manifest in platformCreateWebView() via _WKApplicationManifest SPI instead. + auto applicationManifestPath = options.applicationManifest(); + if (!applicationManifestPath.empty()) { + if (auto fileContents = FileSystem::readEntireFile(String::fromUTF8(applicationManifestPath.c_str()))) + WKPageConfigurationSetApplicationManifest(pageConfiguration.get(), toWK(String::fromUTF8(fileContents->span())).get(), nullptr, nullptr); + } +#endif + return pageConfiguration; } @@ -1530,6 +1540,10 @@ bool TestController::resetStateToConsistentValues(const TestOptions& options, Re m_globalPrivacyControlEnabled = std::nullopt; +#if PLATFORM(MAC) + handleAXRemoveNotificationListener(); +#endif + for (auto& auxiliaryWebView : std::exchange(m_auxiliaryWebViews, { })) WKPageClose(auxiliaryWebView->page()); @@ -2739,7 +2753,8 @@ void TestController::didReceiveScriptMessage(WKScriptMessageRef message, Complet auto isLoopback = booleanValue(argumentDictionary, "IsLoopback"); auto requestingOrigin = stringValue(argumentDictionary, "RequestingOrigin"); m_localNetworkAccessPermissions.set(localNetworkAccessPermissionKey(originString(adoptWK(WKSecurityOriginCreateFromString(requestingOrigin)).get()), isLoopback), value); - return completionHandler(nullptr); + // WebKit keeps the answers it was given, so an embedder that changes one has to drop them. + return WKWebsiteDataStoreClearLocalNetworkAccessPermissionsForTesting(websiteDataStore(), completionHandler.leak(), adoptAndCallCompletionHandler); } if (WKStringIsEqualToUTF8CString(command, "SetStorageAccessPermission")) { @@ -3889,6 +3904,14 @@ void TestController::didReceiveSynchronousMessageFromInjectedBundle(WKStringRef handleAXPerformAction(dictionaryValue(messageBody)); return completionHandler(nullptr); } + + if (WKStringIsEqualToUTF8CString(messageName, "AXAddNotificationListener")) + return completionHandler(handleAXAddNotificationListener().get()); + + if (WKStringIsEqualToUTF8CString(messageName, "AXRemoveNotificationListener")) { + handleAXRemoveNotificationListener(); + return completionHandler(nullptr); + } #endif if (WKStringIsEqualToUTF8CString(messageName, "GetStorageAreaMapCount")) { @@ -5901,6 +5924,11 @@ void TestController::setHasMouseDeviceForTesting(bool) // Private API for creating an AXUIElement from a remote token extern "C" AXUIElementRef _AXUIElementCreateWithRemoteToken(CFDataRef remoteToken); +// Private API for the process actually serving an element. AXUIElementGetPid returns the +// presenting process, which for web content is the UI process. +extern "C" AXError _AXUIElementGetActualPid(AXUIElementRef, pid_t*); +extern "C" AXUIElementRef _AXUIElementCreateApplicationWithPresenterPid(pid_t, pid_t presenterPid); + uint64_t TestController::storeAXElement(CFTypeRef element) { if (!element) @@ -5908,6 +5936,12 @@ uint64_t TestController::storeAXElement(CFTypeRef element) uint64_t token = m_nextAXElementToken++; m_axElementTokens.set(token, element); + + // A test reaches the elements of a cross-site iframe by walking the tree into it, so make sure + // notifications from that element's process are observed by the time the test can act on it. + if (m_isListeningForAXNotifications) + observeAXApplicationForElement(element); + return token; } @@ -6203,6 +6237,137 @@ void TestController::handleAXPerformAction(WKDictionaryRef messageBody) AXUIElementPerformAction(element, actionNameCF.get()); } +// Observing the application element delivers these notifications for every element in that +// process, which is how VoiceOver observes an app. +static std::span observedAXNotifications() +{ + static const CFStringRef notifications[] = { + kAXFocusedUIElementChangedNotification, + kAXValueChangedNotification, + kAXSelectedTextChangedNotification, + kAXSelectedChildrenChangedNotification, + CFSTR("AXLoadComplete"), + }; + return notifications; +} + +static void axObserverCallback(AXObserverRef, AXUIElementRef element, CFStringRef notification, CFDictionaryRef userInfo, void* observedPid) +{ + TestController::singleton().axNotificationReceived(element, notification, userInfo, static_cast(reinterpret_cast(observedPid))); +} + +static pid_t actualPidForAXElement(CFTypeRef element) +{ + if (!element || CFGetTypeID(element) != AXUIElementGetTypeID()) + return 0; + + pid_t pid = 0; + if (_AXUIElementGetActualPid(static_cast(element), &pid) != kAXErrorSuccess) + return 0; + return pid; +} + +bool TestController::observeAXApplicationForElement(CFTypeRef element) +{ + pid_t pid = actualPidForAXElement(element); + // Never observe ourselves: registering requires a reply from this process's main thread. + if (pid <= 0 || pid == getpid()) + return false; + + if (m_axObservers.contains(pid)) + return true; + + RetainPtr application = adoptCF(_AXUIElementCreateApplicationWithPresenterPid(pid, getpid())); + return observeAXApplication(application.get()); +} + +bool TestController::observeAXApplication(CFTypeRef applicationElement) +{ + if (!applicationElement || CFGetTypeID(applicationElement) != AXUIElementGetTypeID()) + return false; + + auto application = static_cast(applicationElement); + pid_t pid = actualPidForAXElement(application); + if (pid <= 0 || pid == getpid()) + return false; + + if (m_axObservers.contains(pid)) + return true; + + AXObserverRef observer = nullptr; + if (AXObserverCreateWithInfoCallback(pid, axObserverCallback, &observer) != kAXErrorSuccess || !observer) + return false; + RetainPtr adoptedObserver = adoptCF(observer); + + bool observedAny = false; + for (auto notification : observedAXNotifications()) { + if (AXObserverAddNotification(observer, application, notification, reinterpret_cast(static_cast(pid))) == kAXErrorSuccess) + observedAny = true; + } + if (!observedAny) + return false; + + CFRunLoopAddSource(CFRunLoopGetMain(), AXObserverGetRunLoopSource(observer), kCFRunLoopCommonModes); + m_axObservers.set(pid, AXApplicationObserver { WTF::move(adoptedObserver), application }); + return true; +} + +WKRetainPtr TestController::handleAXAddNotificationListener() +{ + m_isListeningForAXNotifications = true; + + // Start with the main frame's web content process. AppKit extends that registration to the processes + // it hosts remote accessibility content from (cross-site iframes), but asynchronously, so a test could + // act inside an iframe before its notifications are forwarded. To make that deterministic, also observe + // an iframe's process directly, as soon as the test walks into its tree. + bool observing = false; + if (CFDataRef remoteToken = getRemoteAccessibilityToken()) { + RetainPtr webContentElement = adoptCF(_AXUIElementCreateWithRemoteToken(remoteToken)); + observing = observeAXApplicationForElement(webContentElement.get()); + } + + // Also cover any process the test has already walked into. + for (auto& element : m_axElementTokens.values()) + observeAXApplicationForElement(element.get()); + + return adoptWK(WKBooleanCreate(observing)); +} + +void TestController::handleAXRemoveNotificationListener() +{ + m_isListeningForAXNotifications = false; + for (auto& entry : m_axObservers.values()) { + auto observer = static_cast(const_cast(entry.observer.get())); + auto application = static_cast(const_cast(entry.application.get())); + // Unregister explicitly rather than letting the observed process find out that our observer + // died. Until it does, it keeps the dead observer registered, and it can drop the next + // notification it tries to deliver, which would then be missed by the next test. + for (auto notification : observedAXNotifications()) + AXObserverRemoveNotification(observer, application, notification); + CFRunLoopRemoveSource(CFRunLoopGetMain(), AXObserverGetRunLoopSource(observer), kCFRunLoopCommonModes); + } + m_axObservers.clear(); +} + +void TestController::axNotificationReceived(CFTypeRef element, CFStringRef notification, CFDictionaryRef userInfo, pid_t observedPid) +{ + if (!m_isListeningForAXNotifications) + return; + + // A notification from an iframe's process also reaches the main frame process's observer. Deliver it + // once, through the observer of the process it came from, when that process is observed directly. + if (pid_t elementPid = actualPidForAXElement(element); elementPid != observedPid && m_axObservers.contains(elementPid)) + return; + + if (!m_mainWebView) + return; + + WKRetainPtr body = adoptWK(WKMutableDictionaryCreate()); + setValue(body, "elementToken", storeAXElement(element)); + setValue(body, "notificationName", String(notification)); + WKPagePostMessageToInjectedBundle(m_mainWebView->page(), toWK("AXClientNotification").get(), body.get()); +} + #endif // PLATFORM(MAC) #if !PLATFORM(COCOA) diff --git a/Tools/WebKitTestRunner/TestController.h b/Tools/WebKitTestRunner/TestController.h index 3068036f0655a..1abc9a4edb084 100644 --- a/Tools/WebKitTestRunner/TestController.h +++ b/Tools/WebKitTestRunner/TestController.h @@ -419,6 +419,7 @@ class TestController { #if PLATFORM(IOS_FAMILY) void setKeyboardInputModeIdentifier(const String&); UIKeyboardInputMode *overriddenKeyboardInputMode() const { return m_overriddenKeyboardInputMode.get(); } + void restoreDefaultKeyboardInputModeIfNeeded(); void setIsInHardwareKeyboardMode(bool value) { m_isInHardwareKeyboardMode = value; } bool isInHardwareKeyboardMode() const { return m_isInHardwareKeyboardMode; } unsigned keyboardUpdateForChangedSelectionCount() const; @@ -516,6 +517,7 @@ class TestController { #if PLATFORM(MAC) // Client accessibility testing support void initializeWebProcessAccessibility(); + void axNotificationReceived(CFTypeRef element, CFStringRef notification, CFDictionaryRef userInfo, pid_t observedPid); #endif #if !PLATFORM(COCOA) @@ -643,6 +645,10 @@ class TestController { WKRetainPtr handleAXCopyAttributeValueAsSize(WKDictionaryRef); WKRetainPtr handleAXSearchPredicate(WKDictionaryRef); void handleAXPerformAction(WKDictionaryRef); + WKRetainPtr handleAXAddNotificationListener(); + void handleAXRemoveNotificationListener(); + bool observeAXApplicationForElement(CFTypeRef); + bool observeAXApplication(CFTypeRef); #endif // WKContextClient @@ -960,6 +966,14 @@ class TestController { // Client accessibility testing support std::atomic m_nextAXElementToken { 1 }; HashMap> m_axElementTokens; + // One AXObserver per observed web content process, keyed by pid, with the application element it + // observes. Non-empty only while a client-mode test has a notification listener installed. + struct AXApplicationObserver { + RetainPtr observer; + RetainPtr application; + }; + HashMap m_axObservers; + bool m_isListeningForAXNotifications { false }; #endif #if ENABLE(WPE_PLATFORM) diff --git a/Tools/WebKitTestRunner/cocoa/WKTextExtractionTestingHelpers.mm b/Tools/WebKitTestRunner/cocoa/WKTextExtractionTestingHelpers.mm index b9bba5aab07f0..bb407965b442c 100644 --- a/Tools/WebKitTestRunner/cocoa/WKTextExtractionTestingHelpers.mm +++ b/Tools/WebKitTestRunner/cocoa/WKTextExtractionTestingHelpers.mm @@ -62,6 +62,10 @@ ASCIILiteral description(WKTextExtractionContainer container) return "BUTTON"_s; case WKTextExtractionContainerCanvas: return "CANVAS"_s; + case WKTextExtractionContainerVideo: + return "VIDEO"_s; + case WKTextExtractionContainerAudio: + return "AUDIO"_s; case WKTextExtractionContainerSubscript: return "SUBSCRIPT"_s; case WKTextExtractionContainerSuperscript: diff --git a/Tools/WebKitTestRunner/gtk/UIScriptControllerGtk.cpp b/Tools/WebKitTestRunner/gtk/UIScriptControllerGtk.cpp index f73ac70d4fd3f..89bf3342ee2c7 100644 --- a/Tools/WebKitTestRunner/gtk/UIScriptControllerGtk.cpp +++ b/Tools/WebKitTestRunner/gtk/UIScriptControllerGtk.cpp @@ -91,7 +91,8 @@ void UIScriptControllerGtk::copyText(JSStringRef text) #if USE(GTK4) gdk_clipboard_set_text(gdk_display_get_clipboard(gdk_display_get_default()), string.legacyCStringPointer()); #else - gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), string.legacyCStringPointer(), string.length()); + auto characters = byteCast(string.span()); + gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), characters.data(), characters.size()); #endif } diff --git a/Tools/WebKitTestRunner/ios/TestControllerIOS.mm b/Tools/WebKitTestRunner/ios/TestControllerIOS.mm index 54964e68fb7cf..9b81aee02dca9 100644 --- a/Tools/WebKitTestRunner/ios/TestControllerIOS.mm +++ b/Tools/WebKitTestRunner/ios/TestControllerIOS.mm @@ -410,6 +410,8 @@ static _WKFocusStartsInputSessionPolicy focusStartsInputSessionPolicy(const Test [UIKeyboardImpl.sharedInstance prepareKeyboardInputModeFromPreferences:nil]; } + restoreDefaultKeyboardInputModeIfNeeded(); + m_presentPopoverSwizzlers.clear(); if (!options.shouldPresentPopovers()) { #if USE(UICONTEXTMENU) @@ -635,6 +637,22 @@ static _WKFocusStartsInputSessionPolicy focusStartsInputSessionPolicy(const Test [UIKeyboardImpl.sharedInstance prepareKeyboardInputModeFromPreferences:nil]; } +void TestController::restoreDefaultKeyboardInputModeIfNeeded() +{ + if (m_overriddenKeyboardInputMode) + return; + + // Tests synthesize hardware key events by HID usage, so the resulting characters depend on the current keyboard layout. + // Restore the default input mode in case it was changed by UIKit itself (e.g. by a keyboard shortcut that switches languages, + // or upon attaching a hardware keyboard, which makes UIKit pick an input mode that matches the hardware keyboard). + static NeverDestroyed> defaultKeyboardInputMode = [UIKeyboardInputMode keyboardInputModeWithIdentifier:@"en_US@sw=QWERTY;hw=US"]; + RetainPtr inputModeController = [UIKeyboardInputModeController sharedInputModeController]; + if (RetainPtr defaultInputMode = defaultKeyboardInputMode.get(); defaultInputMode && ![[inputModeController currentInputMode].identifier isEqualToString:[defaultInputMode identifier]]) { + [inputModeController setCurrentInputMode:defaultInputMode]; + [UIKeyboardImpl.sharedInstance prepareKeyboardInputModeFromPreferences:defaultInputMode.get()]; + } +} + UIPasteboardConsistencyEnforcer *TestController::pasteboardConsistencyEnforcer() { if (!m_pasteboardConsistencyEnforcer) diff --git a/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm b/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm index d25a3103b13d2..14ea36b4b9998 100644 --- a/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm +++ b/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm @@ -1673,6 +1673,8 @@ static UIDeviceOrientation toUIDeviceOrientation(DeviceOrientation orientation) { GSEventSetHardwareKeyboardAttached(attached, 0); TestController::singleton().setIsInHardwareKeyboardMode(attached); + if (attached) + TestController::singleton().restoreDefaultKeyboardInputModeIfNeeded(); } void UIScriptControllerIOS::setShowKeyboardAfterElementFocusDelay(double delay) diff --git a/Tools/WebKitTestRunner/mac/UIScriptControllerMac.h b/Tools/WebKitTestRunner/mac/UIScriptControllerMac.h index 49e23ea757c11..9ec18b5d65e19 100644 --- a/Tools/WebKitTestRunner/mac/UIScriptControllerMac.h +++ b/Tools/WebKitTestRunner/mac/UIScriptControllerMac.h @@ -70,6 +70,10 @@ class UIScriptControllerMac final : public UIScriptControllerCocoa { void chooseMenuAction(JSStringRef, JSValueRef) override; + void dismissFormAccessoryView() final; + void selectFormAccessoryPickerRow(long) final; + bool selectFormAccessoryHasCheckedItemAtRow(long) const final; + void activateAtPoint(long x, long y, JSValueRef callback) override; void sendEventStream(JSStringRef, JSValueRef) override; diff --git a/Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm b/Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm index 3b180f2476a8a..3df8df80e5e39 100644 --- a/Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm +++ b/Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm @@ -277,6 +277,43 @@ static void playBackEvents(WKWebView *webView, UIScriptContext& context, NSStrin }); } +static RetainPtr popUpButtonCellForMenu(NSMenu *menu) +{ + if (RetainPtr cell = dynamic_objc_cast(menu.delegate)) + return cell; + for (NSMenuItem *item in menu.itemArray) { + if (RetainPtr cell = dynamic_objc_cast(item.target)) + return cell; + } + return nullptr; +} + +void UIScriptControllerMac::dismissFormAccessoryView() +{ + RetainPtr menu = [webView() _activeMenu]; + if (popUpButtonCellForMenu(menu.get())) + [menu cancelTracking]; +} + +void UIScriptControllerMac::selectFormAccessoryPickerRow(long rowIndex) +{ + RetainPtr menu = [webView() _activeMenu]; + RetainPtr cell = popUpButtonCellForMenu(menu.get()); + if (!cell) + return; + + [cell selectItemAtIndex:rowIndex]; + [menu cancelTracking]; +} + +bool UIScriptControllerMac::selectFormAccessoryHasCheckedItemAtRow(long rowIndex) const +{ + RetainPtr menu = [webView() _activeMenu]; + if (!popUpButtonCellForMenu(menu.get()) || rowIndex < 0 || rowIndex >= [menu numberOfItems]) + return false; + return [menu itemAtIndex:rowIndex].state == NSControlStateValueOn; +} + void UIScriptControllerMac::beginBackSwipe(JSValueRef callback) { RefPtr context = m_context.get(); diff --git a/Tools/WebKitTestRunner/wpe/PlatformWebViewClientWPE.cpp b/Tools/WebKitTestRunner/wpe/PlatformWebViewClientWPE.cpp index fb35f71ad3fd5..359592ba6e596 100644 --- a/Tools/WebKitTestRunner/wpe/PlatformWebViewClientWPE.cpp +++ b/Tools/WebKitTestRunner/wpe/PlatformWebViewClientWPE.cpp @@ -28,6 +28,8 @@ #if ENABLE(WPE_PLATFORM) #include +#include +#include #include IGNORE_CLANG_WARNINGS_BEGIN("cast-align") @@ -122,9 +124,7 @@ PlatformImage PlatformWebViewClientWPE::snapshot() if (!pixels) g_error("Failed to import buffer to pixels: %s\n", error->message); - gsize pixelsDataSize; - const auto* pixelsData = g_bytes_get_data(pixels, &pixelsDataSize); - GRefPtr bytes = adoptGRef(g_bytes_new(pixelsData, pixelsDataSize)); + GRefPtr bytes = gBytesNew(span(pixels)); auto width = wpe_buffer_get_width(m_buffer.get()); auto height = wpe_buffer_get_height(m_buffer.get()); diff --git a/Tools/glib/dependencies/apt b/Tools/glib/dependencies/apt index 859da06c760d9..b4bcab7c6808d 100755 --- a/Tools/glib/dependencies/apt +++ b/Tools/glib/dependencies/apt @@ -69,6 +69,7 @@ PACKAGES=( libsystemd-dev libtasn1-6-dev libtool + libva-dev libvulkan-volk-dev libwayland-dev libwebp-dev diff --git a/Tools/glib/dependencies/dnf b/Tools/glib/dependencies/dnf index 9b8f1f5fa377a..48d1ccce78a05 100755 --- a/Tools/glib/dependencies/dnf +++ b/Tools/glib/dependencies/dnf @@ -19,6 +19,7 @@ PACKAGES=( gstreamer1-plugins-bad-free-devel gstreamer1-plugins-base-devel harfbuzz-devel + hyphen-devel intltool libatomic libavif-devel @@ -26,6 +27,7 @@ PACKAGES=( libepoxy-devel libevent-devel libgcrypt-devel + libinput-devel libjpeg-turbo-devel libjxl-devel libkate-devel @@ -39,6 +41,7 @@ PACKAGES=( libtasn1-devel libvorbis-devel libv4l-devel + libva-devel libvpx-devel libwebp-devel libxkbcommon-x11-devel @@ -52,6 +55,7 @@ PACKAGES=( opus-devel patch perl-autouse + perl-bignum perl-English perl-File-Copy-Recursive perl-FindBin diff --git a/Tools/glib/dependencies/pacman b/Tools/glib/dependencies/pacman index 3280a86957dfc..a9d3028563570 100755 --- a/Tools/glib/dependencies/pacman +++ b/Tools/glib/dependencies/pacman @@ -8,12 +8,15 @@ PACKAGES=( bubblewrap clang cmake + enchant file findutils flite gawk gcc gi-docgen + glib2-devel + gobject-introspection gperf grep groff @@ -22,6 +25,7 @@ PACKAGES=( gtk-doc gzip harfbuzz-icu + hyphen intltool itstool lcms2 @@ -37,6 +41,7 @@ PACKAGES=( libsystemd libtasn1 libtool + libva libwebp libxslt m4 @@ -53,6 +58,7 @@ PACKAGES=( sqlite texinfo volk + vulkan-headers wayland wayland-protocols which diff --git a/Tools/glib/glib_test_runner.py b/Tools/glib/glib_test_runner.py index f9ecba6b4810d..d84a2fbb40f51 100644 --- a/Tools/glib/glib_test_runner.py +++ b/Tools/glib/glib_test_runner.py @@ -151,7 +151,7 @@ def _read_from_pipe(self, pipe_r): self._process_message(message) def _read_from_stderr(self, fd): - data = '' + chunks = [] read_set = [fd] while True: try: @@ -162,13 +162,15 @@ def _read_from_stderr(self, fd): raise if fd not in rlist: - return data + break buffer = os.read(fd, 4096) if not buffer: - return data + break - data += buffer.decode('utf-8') + chunks.append(buffer) + + return b''.join(chunks).decode('utf-8', errors='replace') @staticmethod def _start_timeout(timeout): diff --git a/Tools/gstreamer/jhbuild.modules b/Tools/gstreamer/jhbuild.modules index fd78fba627764..c89d5d0db38c8 100644 --- a/Tools/gstreamer/jhbuild.modules +++ b/Tools/gstreamer/jhbuild.modules @@ -87,7 +87,6 @@ - @@ -110,14 +109,6 @@ hash="sha256:488c76e57dd9b3bee901f71d5c95eaf1db4a5a31fe46a28654e837144207c270"/> - - - - + + + + + wpe-1.0.pc + + + + + wpebackend-fdo-1.0.pc + + + + + + + icu-i18n.pc